2026-10-01 · 原文发布日
n8n模板:Gmail发票自动核验、Slack审批并写入QuickBooks
Gmail收到带PDF的邮件即触发:PDF存到Google Drive,Claude一次调用读出供应商、发票号、金额、PO号和银行信息成固定JSON,再对照Sheets里的供应商、采购订单和发票台账以及QuickBooks查重,按规则自动批小额匹配单、其余发Slack私信给审批人限时处理,且提单人不能批自己的发票。审批通过即在QuickBooks生成账单,结果记表、打Gmail标签并通报频道;银行信息变更只提醒财务绝不回复发件人,每工作日早晨还有到期与待办摘要。
原文要点
该n8n模板把Gmail里的供应商发票PDF变成已审批的QuickBooks账单:Gmail触发器捕获每封带PDF的邮件并逐封独立运行;PDF存入Google Drive后,一次Anthropic调用读出供应商、发票号、日期、金额、PO号、银行信息、明细行成固定JSON;再读Sheet的Vendors、Purchase orders、Invoice log三个标签并在QuickBooks Online按发票号查重,代码检查供应商、发件域、银行信息、算术、PO余额与重复,给出auto-approve/approve/hold。小额且PO匹配的自动批准,其余Slack私信审批人并限时,超限加第二审批人,提单人不能批自己的发票。结果记表、通报AP频道、打Gmail标签;银行信息变更只提醒财务,绝不回复发件人;可修复问题回复供应商要更正发票;每工作日早晨发到期与待办摘要;故障由错误触发器发Slack。
这次做成什么
搭建一条发票自动核验流水线练习:用一张虚构发票PDF走通「Claude抽取→台账核对→路由审批→QuickBooks建账单」全程,重点验证重复发票拦截和「提单人不能自批」两条规则。
准备什么
- Gmail、Google Drive、Google Sheets、Slack、QuickBooks Online账号各一
- Anthropic API密钥(n8n中配置为名为x-api-key的Header Auth凭据)
- 一个Google Sheet,按画布备注的表头建Vendors、Purchase orders、Invoice log三个标签,并填每个供应商的QuickBooks vendor ID与费用科目ID
- 收集Sheet ID、Drive文件夹ID、Slack用户与频道ID、Gmail标签ID、QuickBooks company ID
具体怎么做
建台账Sheet
按模板画布备注的表头创建三个标签:Vendors(含供应商名、发件域、银行信息、QuickBooks vendor ID、费用科目ID),Purchase orders(PO号、供应商、金额、已用余额、提单人),Invoice log(发票号、供应商、金额、状态、时间戳)。先各填2至3行虚构数据。
填Settings节点与凭据
在Settings节点填入Sheet ID、Drive文件夹ID、Slack审批人用户ID和AP频道ID、Gmail标签ID、QuickBooks company ID,以及自动批准上限(练习可设为500美元)和金额容差。连接五个OAuth凭据,并新建名为x-api-key的Header Auth凭据填Anthropic密钥。
配置错误工作流与测试
在Workflow settings里把本工作流设为自身的错误工作流。从「Each invoice starts here」节点用钉住的样例开始测试:第一次运行应走到审批或自动批准并在QuickBooks建账单;立即再跑一次同一样例,应因发票号重复被判hold——这是模板作者设计的重复拦截验证。
验证审批与银行变更规则
构造一张超过自动批准上限的虚构发票,确认Slack私信发给审批人且带时限,超过你的二级限额时加发第二审批人;把提单人设为审批人验证其不能自批。再构造一张银行信息与Vendors台账不符的发票,确认只提醒财务频道、绝不回复发件人。测试通过后取消钉住「Read the invoice with Claude」并激活Gmail触发器。
可直接复制的材料
Settings节点字段清单(练习值)
本站整理的字段骨架与练习参考值,限额按你公司制度自定;确切字段名以原模板Settings节点为准。
{
"sheet_id": "替换为你的Google Sheet ID",
"drive_folder_id": "替换为发票存档文件夹ID",
"slack_approver_user_id": "U0TEST12345",
"slack_second_approver_user_id": "U0TEST67890",
"slack_ap_channel_id": "C0TESTAP001",
"gmail_label_ids": "替换为各结果标签ID",
"quickbooks_company_id": "替换为QBO公司ID",
"auto_approve_limit_usd": 500,
"second_approval_limit_usd": 5000,
"amount_tolerance_usd": 1
}Claude发票抽取提示词
本站独立编写示例,对照模板所述固定JSON字段;实际键名须与模板后续核对代码读取的字段一致。
你是应付账款录入员。从所附发票PDF中提取信息,输出严格JSON,不要输出其他文字:{"vendor":"供应商全称","invoice_number":"发票号","invoice_date":"YYYY-MM-DD","due_date":"YYYY-MM-DD","currency":"三字母币种","total":数字,"po_number":"PO号,无则null","bank_details":{"account_name":"","account_number":"","routing":""},"line_items":[{"description":"","quantity":数字,"unit_price":数字,"amount":数字}]}。规则:金额必须为数字不带符号;line_items各amount之和应等于total,不等时在total字段仍填票面总额,不要自行改数;找不到的字段填null。Invoice log测试数据
本站虚构台账演示:第三行与第一行发票号相同,应被重复检查拦截为hold。
invoice_number,vendor,total_usd,status,logged_at
INV-2609-114,恒信办公用品,320.00,auto_approved,2026-10-05T09:12:00
INV-2609-115,明远印刷厂,4800.00,pending_approval,2026-10-05T09:13:30
INV-2609-114,恒信办公用品,320.00,hold_duplicate,2026-10-05T09:14:05输入与输出示例
本站虚构演示,非真实运行结果;路由规则以模板Check and route代码为准。
输入
虚构发票PDF:供应商恒信办公用品,INV-2609-118,总额320.00美元,PO号PO-1042且PO余额充足,发件域与Vendors台账一致,银行信息一致对应输出
核对结果JSON(示意):{"vendor_match":true,"domain_match":true,"bank_match":true,"arithmetic_ok":true,"po_balance_ok":true,"duplicate":false,"route":"auto_approve"};随后在QuickBooks生成对应账单,Invoice log记一行auto_approved,Gmail打上通过标签,AP频道收到通报做完检查这些
- 同一钉住样例连跑两次,第二次因发票号重复被判hold并在Invoice log留痕
- 320美元小额PO匹配发票走auto_approve并在QuickBooks生成账单,明细行与发票行一一对应
- 4800美元发票通过Slack私信限时审批,且PO提单人不在审批人名单内
- 银行信息与台账不符的发票只触发财务提醒,全程不给发件人回邮件
容易卡住的地方
- Vendors表必须预填每个供应商的QuickBooks vendor ID和费用科目ID,否则建账单失败
- 三个Sheet标签的表头要照画布备注逐字复制,核对代码按列名读取
- 模板免费,但Anthropic与QuickBooks调用按各自计费;测试期先用钉住样例避免反复调API
- Gmail标签ID、Slack用户/频道ID要在各自平台提前查好,填错会静默漏通知
- 本页为按模板说明整理的实操方案,未导入实测;节点细节、限额语义以原模板为准
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Approve vendor invoices from Gmail using Claude, Google Sheets, Slack and QuickBooks
- 原作者
- Amplence
- 原始发布日期
- 2026-09-30T16:55:46.146Z
- 来源
- https://n8n.io/workflows/20234