AI PLAY玩法更新持续收录
← 回到更新流

2026-09-29 · 原文发布日

n8n自动审员工报销单:Gmail收票+OpenAI识别+Sheets核对+审批付款

这是一条完整报销流水线模板(作者标价为付费模板):专用Gmail收件箱收到邮件即触发,下载附件后用OpenAI识别发票字段并规范化日期金额,再对照Google Sheets里的员工、政策、历史报销和公务卡记录,结合汇率接口检查重复、超标和卡账匹配。合规的自动通过,需审批的发邮件给经理或财务点同意/拒绝;每周五汇总已批准款项发财务一键放行,付款后回写状态并群发汇款通知,失败时自动告警财务。适合想自动化报销流程的小团队参考搭建。

原文要点

n8n模板库的付费报销流水线模板:专用Gmail收件箱收到邮件即触发并下载附件,把每封邮件拆成单张票据(图片、PDF或转发文本),用OpenAI视觉/聊天模型抽取结构化票据字段并规范化日期金额;从Google Sheets读取Employees、Policy、Claims、Card transactions四个表做参照,结合Frankfurter(欧洲央行)汇率接口检查票据年限、币种换算、公务卡匹配、重复报销和政策上限,决定报销金额与是否需审批;合规自动通过,需审批的经Gmail发经理或财务点同意/拒绝;每周五汇总已批准未付款项,发未匹配卡账的催票邮件,财务一键放行后回写状态并群发汇款通知,运行失败自动告警财务。

这次做成什么

理解这条付费模板的完整数据流和接入点,在决定购买前先搭好四张Google Sheets参照表和三类凭据,并用合成数据验证“识别—核对—审批—付款”的分支逻辑是否符合自己团队的政策。原模板需付费购买,本页示例为本站独立设计,不是原工作流文件。

准备什么

  • n8n实例及付费购买该模板的预算(原模板为付费模板,价格以模板页为准)
  • 专用报销收件箱的Gmail凭据,以及发送审批、结果、催票、付款、告警邮件的Gmail凭据
  • OpenAI API密钥(用于票据字段抽取的视觉/聊天模型)
  • 一个Google Sheets,内含Employees、Policy、Claims、Card transactions四个工作表及相应凭据

具体怎么做

  1. 搭建四张参照表

    新建一个Google Sheets,建Employees、Policy、Claims、Card transactions四个工作表。Employees至少含员工邮箱和经理邮箱列;Policy含各类别报销上限;Card transactions含卡交易ID、金额和卡号后四位,用于公务卡匹配。可先用材料中的合成数据填表跑通逻辑。

  2. 接入三类凭据并改两个Set节点

    在n8n中分别创建Gmail(收件与发件可分开)、Google Sheets、OpenAI三组凭据。导入模板后,在Set Expense Policy和Set Payout Settings两个Set节点里把占位值替换为你的表格ID、财务邮箱;在Set Payout Settings里再填专用报销邮箱地址。这些字段名以模板实际内容为准,本站未核对节点内部界面。

  3. 用合成票据邮件跑识别与核对

    向报销邮箱发一封带图片附件的测试邮件。模板会把邮件拆成单张票据交给OpenAI抽取字段并规范化日期金额,再调Frankfurter接口做外币换算,依次检查票据年限、公务卡匹配、重复报销和政策上限。观察Claims表是否按每张票据写入一行判定结果。

  4. 验证审批与自动通过两条分支

    构造两封测试邮件:一封金额在政策上限内,应自动通过并直接写Claims;一封超标,应向Employees表中对应经理邮箱发出含同意/拒绝动作的邮件。点击同意后确认Claims行状态更新,员工同时收到逐条结果汇总邮件。

  5. 测试周五付款与失败告警

    将已批准未付款的记录留在Claims表中,等周五定时触发(或按模板说明手动触发对应分支)。模板应读取员工收款信息、给财务发一封放行审批邮件;财务同意后Claims行标记为已付款并群发汇款通知。故意让某步骤失败(如暂时撤掉Sheets凭据),确认财务收到告警邮件。

可直接复制的材料

Employees与Policy合成参照数据

本站虚构合成数据,仅用于隔离测试。列名需按模板实际要求核对,收款账号为虚构脱敏值,勿填真实卡号。

Employees:
employee_email,manager_email,bank_account
zhang@example.com,li@example.com,6222****0001
wang@example.com,li@example.com,6222****0002

Policy:
category,limit_cny,require_approval_over
meal,300,300
transport,500,500
travel_hotel,1200,1200

Card transactions合成数据

本站虚构合成数据,用于验证公务卡匹配和EUR经Frankfurter接口换算的分支;卡号仅保留后四位。

txn_id,amount,currency,card_last4,employee_email,date
T001,268.00,CNY,8842,zhang@example.com,2026-09-10
T002,45.60,EUR,8842,zhang@example.com,2026-09-12
T003,510.00,CNY,7716,wang@example.com,2026-09-15

票据字段抽取提示词(本站设计)

原模板未公开其OpenAI提示词全文,此为本站独立设计的等效练习提示词,字段集合需在导入模板后与模板实际字段核对。

你是报销票据识别助手。请从这张票据图片中抽取以下字段并只返回JSON:{"vendor": 商户名, "date": 日期(YYYY-MM-DD), "amount": 数字金额, "currency": 三字母币种代码, "category": 在meal/transport/travel_hotel/other中选一个, "invoice_no": 发票号码或null}。金额保留两位小数,无法辨认的字段填null,不要猜测。

输入与输出示例

本站虚构演示,非模板实际运行结果;判定依据为上方合成Policy表的300元餐费上限。

输入

向报销邮箱发送测试邮件:附件为一张虚构餐饮发票图片(商户“测试餐厅”,日期2026-09-20,金额268.00元,发票号INV-20260920-01),发件人为zhang@example.com。

对应输出

Claims表新增一行示意:employee=zhang@example.com, vendor=测试餐厅, date=2026-09-20, amount=268.00, currency=CNY, category=meal, decision=auto_approved, reason=在政策上限300元内。zhang@example.com收到逐条结果汇总邮件;因金额未超上限,未向经理li@example.com发审批邮件。

做完检查这些

  • 每封测试邮件处理后,Claims表按每张票据写入一行,含抽取字段和判定结论
  • 上限内的报销自动通过且员工收到汇总邮件,超标的准确路由到Employees表对应的经理邮箱
  • 外币票据经汇率接口换算后再与政策上限比较,换算币种与日期正确
  • 财务放行后相关Claims行标记已付款且员工收到汇款通知;任一环节失败时财务收到告警

容易卡住的地方

  • 这是付费模板,本页所有表结构和提示词均为本站独立设计的练习方案,不代表原模板内部实现
  • 专用收件箱会触发所有来信,务必用独立邮箱并在测试期只发合成票据,避免真实员工票据被测试数据污染
  • Frankfurter接口提供欧洲央行历史汇率,周末和节假日无当日汇率,跨币种报销要确认模板对缺失汇率的处理方式
  • OpenAI抽取可能误读手写或模糊票据,Claims写入后仍需人工抽查,不要把auto_approved当作绝对正确
  • 四张工作表的列名若与模板期望不一致,匹配和审批会静默失败,导入后第一件事是逐列核对
  • 审批邮件的同意/拒绝链接依赖n8n公网地址,实例在内网时审批人会打不开链接

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Approve employee expense receipts with Gmail, Google Sheets, and OpenAI
原作者
Luca
原始发布日期
2026-09-28T23:37:35.933Z
来源
https://n8n.io/workflows/20104