押金保证金收取与退还核对(免费版)
完全本地运行:引擎已经打包在本技能里(
engine/目录)。 核对过程不需要联网、不需要 API Key、没有调用次数上限、材料不出本机。
什么时候用
谁在什么时候用:出纳、财务、物业与招商运营在收押金、退租退押、月底核对押金台账时 —— 「押金保证金台账与退还明细表」是退押付款、押金科目余额与合同履约的原始依据, 钱付出去之后再改就要走红冲与追款流程。
这张表会逐项核对什么(免费版执行 6 项,逐条都带原文行号):
- 应退金额复算 —— 应退金额 = 收取金额 − 扣除金额,差 0.01 也会报。
- 扣除金额带依据与上限 —— 扣除金额大于 0 时,扣除依据不能为空、不能只写一个占位符, 也不能只写一句看不出事由的话(要落到违约金 / 损坏赔偿 / 欠费 / 滞纳 这类事由上); 扣除金额还不得超过收取金额。
- 退还时间超过约定期限 —— 应退截止日 = 收取日期 + 约定退还期限(自然日); 退还日期晚于截止日会报超期天数,已过截止日而台账余额仍有余额且没有退还日期的也会报。
- 同一合同同一押金类型重复退还 —— 同一份合同同一类押金出现两次以上实际退还。
- 台账余额勾稽 —— 台账余额 = 收取金额 − 退还金额 − 已结转金额。
- 关键字段缺失 / 金额为负 —— 必需单元格为空或写着「待填 / — / 无 / N/A」,以及金额列为负。
每条结论都带原文行号与算式,可被第三方用同一份输入复算; 材料不足时不给结论,会明确列出还缺什么,也不会用默认值编出结论。
这个免费版查什么
上面 6 项就是本版本执行的全部检查项。跑 --sample 会在 scope.checks 里打印本次实际执行了哪些,
scope.checks_not_run 会如实列出本版本没有执行的检查项(只列出,不会伪造结论)。
怎么用
node scripts/run.mjs --sample # 先看样例(样例本身就是一张自洽的押金台账)
node scripts/run.mjs --input 你的材料.json # 跑自己的材料
node scripts/run.mjs --input 你的材料.json --json # 机器可读输出
入参两种写法都行:
{"text": "(把表的**表头**和若干行一起复制进来,Tab 分隔最稳)"}- 直接把「押金保证金台账与退还明细表」(含表头)从 Excel 复制成文本贴进
.json里; 文件不是合法 JSON 时整体按纯文本材料处理。
必需列(缺一列就不给结论):合同编号、承租方、项目、押金类型、收取日期、约定退还期限、扣除依据、 扣除金额、应退金额、退还日期、退还金额、已结转金额、台账余额。 可选列:备注、台账截止日。
两个口径要先写清楚,否则本工具只能按下方口径复算:
- 已结转金额 = 本行押金在本期已处置的金额(含按依据扣除核销的部分 + 转入下期 / 其他合同的部分)。
- 台账截止日(可选)填了就用它当口径日;没填就用表内最晚日期—— 表里只有收取日期时,本工具不会凭空断定"已经超期"。
出参
status:success才有结论;insufficient_input表示材料不足,此时没有result、没有findings, 只有missing(缺什么)与advice(怎么补)。result.findings[]:每条含level(P0/P1/P2)、category、line(原文行号)、message(含算式与差额)、advice、basis(引用原文整行)。result.summary:rows / contracts / projects / periods / total / p0 / p1 / p2 / verdict(NO_ISSUE_FOUND|NEEDS_REVIEW|ERROR_FOUND)。result.scope:本次执行的checks、未执行的checks_not_run、base_date、cutoff_source、column_totals(各金额列合计)、outstanding_total、tolerance、executed_locally: true、network_used: false。result.checks_out_of_scope:本工具根本不做的判断清单(边界诚实)。- CLI 退出码:
0已执行检查 /1没给入参 /3材料不足 /4入参读不到或无法解析 /9未预期错误。
常见错法(本产品专属)
- 扣了钱、却没从应退金额里减:应退金额写成收取金额原数,差额正好等于扣除金额 —— 这就是"扣款只在依据栏里说了一句、账上没落"。复算会直接把差额算给你看。
- 扣除依据只写"扣款"两个字:依据栏不能空,也不能只写「扣了一笔」这种看不出事由的话; 违约金要有合同条款、损坏赔偿要有维修单编号、欠费要有催缴单或对账确认,否则这条扣款对方不认。
- 扣除金额大于押金本金:押金只有那么多,超出的部分不是押金能覆盖的 —— 要么另开应收(欠费 / 违约金单独挂账),要么这一格抄成了两行的合计。
- 把"起算日"当"收取日":本表口径是「应退截止日 = 收取日期 + 约定退还期限」。 如果合同写的是"退租之日起多少日内退还",请把起算日折算进这一列或在备注里写明,不要两种口径混用。
- 同一份押金拆成两行、都填了退还金额:被判重复退还 —— 分次退还请在备注里写清每次的依据, 或把退款明细附在材料里,不要用两行都挂同一份合同同一押金类型。
- 扣掉的钱没记进"已结转金额":应退金额减对了,台账余额却还挂着那笔扣款 —— 余额勾稽的差额正好等于扣除金额时,就是这个问题。
- 余额用上期数没重算:本期退还 / 结转变了,台账余额还是上个月的数; 余额是"这笔押金还挂在账上多少",必须跟着本期变动走。
- 该写 0.00 的格子留空:金额列留空表示"不知道",写 0.00 才表示"确实没有"; 本工具对留空的格子不给结论(只有扣除依据 / 退还日期 / 备注确实没有时可以留空)。
- 退还金额还没填就写退还日期:会按超期逐行报出来;没退就把退还日期留空, 本工具会用台账截止日判断"已过截止日仍未退清"。
这个免费版不包含
本免费版是完整可用的核心产出,本版本不包含下面这些项(它们会如实列在输出的 checks_not_run 里,绝不会伪造):
- 差异归因(扣除依据口径 / 期限口径 / 重复退口径 / 结转口径);
- 跨项目 / 跨期押金汇总台账(按项目与按收取月份归集收取、扣除、应退、退还、结转与未退余额);
- 按超期未退金额排序的处理清单(带原文行号、超期天数与建议动作)。
同名工具的完整档是另一个独立商品(条款以它自己的商品页为准);两档的差别就是上面这些,没有别的。
需要完整档时(可选)
本免费版是完整可用的核心产出,本版本不包含下面这些项:
- 差异归因(扣除依据口径 / 期限口径 / 重复退口径 / 结转口径)
- 跨项目 / 跨期押金汇总台账(按项目与按收取月份归集收取 / 扣除 / 应退 / 退还 / 结转 / 未退余额)
- 按超期未退金额排序的处理清单(带原文行号、超期天数与建议动作)
同名工具的完整档是另一个独立商品(条款与条件以它自己的商品页为准);两档的差别就是上面这些,没有别的。
边界(请务必知道)
本工具不做引擎 checks_out_of_scope 里列的那些判断,其中最容易误解的四条:
- 不判断押金该收多少、比例是否合规(以租赁合同、招标文件与内部制度为准);
- 不判断扣除依据的文本是否合法有效、违约金到底该不该收(本工具只看依据栏是否为空、有没有写明事由);
- 不判断押金是否真的收到 / 退还(要拿银行流水、收据与退款凭证核,本工具不去查外部系统);
- 不计算押金利息 / 资金占用费,也不处理增值税、代扣代缴与发票。
材料不足时不给结论,也不会输出「未发现问题」。
与相邻能力的区别:
rent-collection-check核的是租金收取(应收租金与实收租金),bid-deposit-refund-check核的是投标保证金在招投标场景下的收取与退还; 本能力核的是押金 / 保证金台账的「收取 − 扣除 = 应退」「收取 − 退还 − 已结转 = 台账余额」 与「收取日期 + 约定退还期限 = 应退截止日」三组勾稽。
