2026-09-21 · 原文发布日
自动追款并对账的应收账款流程
适合财务或小微企业把 Google Sheets 当 AR 台账:工作日早上读 Payments 与未结 Invoices,按参考号、精确金额或组合发票匹配银行入账,回写余额与分配状态;上午再按宽限期、承诺、争议等决定催收动作,用 Gmail 发合并逾期对账单,异常汇总给 AR clerk,回复邮件由 OpenAI 识别意图后更新承诺日期、争议状态和 Chase log。
原文要点
原作者流程以 Google Sheets 作应收账款台账,含 Customers、Invoices、Payments、Chase log 四个标签页。工作日 7 点读取银行入账行与未结发票,按参考号解析、精确金额匹配或发票组合匹配做核销,回写余额并把入账行标记为已分配/部分分配/未分配;匹配异常(组合歧义、未知付款方、短付、超付)汇总一封邮件给 AR 专员。9 点按宽限期、付款承诺、争议、未匹配现金、最低余额阈值决定每客户一个催收动作,经 Gmail 发合并逾期对账单,争议或超额度升级给客户经理,移交催收前需财务主管审批。Gmail 每 15 分钟轮询回复,用 OpenAI(GPT-4 Mini)抽取意图,更新承诺日期或争议状态。
这次做成什么
在 n8n 中搭一个可手动触发的练习版应收核销加催收决策流程:用合成测试表格验证入账匹配、余额回写、异常汇总和催收动作分支,再按需接 Gmail 与 OpenAI 回复识别。
准备什么
- 一个可登录的 n8n 实例(云端或自托管均可)
- Google 账号,并已配置 Google Sheets 与 Gmail 的 OAuth2 凭据
- OpenAI API 密钥,用于回复意图识别练习步骤
- 一个专门测试用 Google Sheets,勿用真实客户财务数据
具体怎么做
建测试台账
新建 Google Sheets,建四个标签页 Customers、Invoices、Payments、Chase log;Invoices 列用 invoice_no、customer、amount、balance、status、due_date、promise_date、dispute,Payments 列用 payment_id、payer、reference、amount、alloc_status。粘贴下文合成数据。
配凭据与参数
在 n8n 凭据里添加 Google Sheets、Gmail、OpenAI 三组凭据;用一个 Set 节点集中放收款政策参数:grace_days=5、chase_floor=1000、fee_tolerance=10、max_combo=3,以及 AR 专员、财务主管、客户经理三个测试邮箱。
做核销分支
用 Schedule Trigger(练习时先改 Manual Trigger)→ Google Sheets 读 Payments 未分配行和 Invoices 未结行 → Code 节点按三级规则匹配:先解析 reference 中的发票号,再做精确金额匹配,最后枚举不超过 max_combo 张发票的组合求和匹配;命中则 Invoices 余额减记、Payments 标记 allocated,多解或无解标 unallocated 并进异常清单。
做催收决策与回写
第二个分支读取四张表,对每个客户计算逾期金额与账龄,按优先级判定:有争议或缺邮箱→升级客户经理;逾期超 grace_days 且无承诺→发合并对账单;有承诺未到期→skip;余额低于 chase_floor→skip。判定结果追加到 Chase log(customer、action、level、reason、amount、date),供下次运行做间隔控制。
接回复识别
Gmail Trigger 每 15 分钟轮询回复邮件 → OpenAI 节点用下文提示词抽取 intent(promise/dispute/query/payment_notice)与承诺日期 → Switch 节点按 intent 更新对应 Invoices 行的 promise_date 或 dispute 状态,无法处理的转发给 AR 专员邮箱。
可直接复制的材料
合成测试台账数据(Invoices 与 Payments)
本站独立编写的合成练习数据,全部为虚构公司与金额;粘贴到对应标签页后使用,不含真实客户信息。
Invoices 标签页 CSV:
invoice_no,customer,amount,balance,status,due_date,promise_date,dispute
INV-1041,Acme 贸易,5000,5000,open,2026-09-10,,no
INV-1042,Acme 贸易,12000,12000,open,2026-09-05,,no
INV-1043,Beta 科技,8000,8000,open,2026-09-01,,yes
INV-1044,Gamma 工作室,3000,3000,open,2026-09-12,2026-09-25,no
Payments 标签页 CSV:
payment_id,payer,reference,amount,alloc_status
PAY-501,Acme 贸易,"Payment for INV-1042",12000,
PAY-502,Acme 贸易,"INV-1041 part",2000,
PAY-503,未知账户,"no ref",8000,
PAY-504,Gamma 工作室,"INV-1044",3000,收款政策与匹配规则配置
本站设计的练习用配置示例,对应原流程三个 Set 节点的角色;邮箱请换成你自己的测试地址,阈值按你的账期调整。
{
"grace_days": 5,
"chase_floor_cny": 1000,
"fee_tolerance_cny": 10,
"max_invoice_combination": 3,
"handover_after_chases": 3,
"emails": {
"ar_clerk": "ar-test@example.com",
"finance_lead": "finance-test@example.com",
"account_manager": "am-test@example.com"
}
}客户回复意图识别提示词
本站独立编写的示例提示词,变量名按 n8n Gmail 节点输出字段设定;原作者只说明用 GPT-4 Mini 抽取意图,未公开原提示词,此为本站方案。
你是应收账款助理。阅读下面这封客户回复邮件,只输出 JSON,不要输出其他文字。
字段说明:
intent:只能是 promise(承诺付款)、dispute(对账单有异议)、payment_notice(声称已付款)、query(一般询问)、other 之一。
promised_date:客户承诺的付款日期,格式 YYYY-MM-DD;未提及则为 null。
dispute_reason:争议原因一句话概括;无争议则为 null。
invoice_refs:邮件中提到的发票号数组,没有则空数组。
confidence:0 到 1 的置信度。
邮件主题:{{ $json.subject }}
邮件正文:{{ $json.snippet }}输入与输出示例
本站虚构演示,按上述规则手工推演,非原作者运行结果,未实际调用任何服务。
输入
Payments 行 PAY-501(payer=Acme 贸易,reference="Payment for INV-1042",amount=12000),Invoices 中 INV-1042 余额 12000、INV-1041 余额 5000对应输出
核销结果:PAY-501 参考号命中 INV-1042,alloc_status=allocated,INV-1042 balance 由 12000 改为 0、status=paid;PAY-503 无参考号且无 8000 精确匹配(INV-1043 处于争议中排除组合),标记 unallocated 并写入异常汇总邮件;9 点分支中 Beta 科技因 dispute=yes 升级客户经理,Acme 贸易逾期余额 5000 超阈值且无承诺,动作=发送合并对账单并追加 Chase log 一行。做完检查这些
- PAY-501 这类带明确参考号的入账行被核销,对应发票余额清零且状态更新
- 部分付款行(PAY-502,2000)标记为 part-allocated,发票余额减记而非清零
- 未知付款方行进入异常清单并汇总成一封邮件,而不是逐条发送
- 处于争议状态的客户不收到催收邮件,而是出现在升级清单中
- Chase log 每次运行都追加一行含 action、level、reason、amount 的记录
容易卡住的地方
- Schedule Trigger 的时区默认可能是 UTC,7 点与 9 点两个触发器需在 n8n 设置里核对时区,否则会错时运行
- 组合匹配枚举量随未结发票数增长,务必保留 max_invoice_combination 上限,否则 Code 节点会很慢
- Gmail send-and-wait 审批节点需要公开可访问的 n8n webhook 地址,本地实例用 localhost 会收不到审批回调
- OpenAI 调用按量计费,练习时先用 Manual Trigger 和固定测试邮件,避免 15 分钟轮询空跑产生费用
- 合成数据之外绝不要把真实客户邮箱填进测试表,催收邮件一旦误发无法撤回
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Chase overdue invoices and match bank payments with Gmail, Sheets, and OpenAI
- 原作者
- Luca
- 原始发布日期
- 2026-09-20T21:33:56.331Z
- 来源
- https://n8n.io/workflows/19771