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

2026-09-28 · 原文发布日

Telegram拍票记账:德国增值税合规报销

免费n8n模板:把收据照片发给Telegram机器人,OpenAI视觉提取商家、日期、总额净额、税额、币种和支付方式,字段缺失就提示重拍;可读收据自动命名存Google Drive,再让OpenAI归类成本中心并标注德国税务的可抵扣与增值税可回收属性,抵扣额按规则在代码里计算;疑似重复会弹按钮让你选'仍要添加'或忽略,还支持语音备注补充上下文、Whisper转写后更新行。

原文要点

该免费n8n模板由Friedrich Bremer发布:Telegram机器人收到照片后用OpenAI(文中称GPT-4o-mini视觉)提取商家、日期、毛额/净额、增值税、币种、支付方式;字段缺失或不可读就回错误提示重拍。可读收据自动生成描述性文件名存Google Drive,再调OpenAI归类成本中心并给出德国税务备注、可抵扣与增值税可回收标记,抵扣额按德国规则在工作流代码里计算;生成追踪ID后查Google Sheets疑似重复,命中则发「Add anyway/Ignore」按钮,否则追加到Ausgaben工作表并回确认。按钮回调与语音备注可用Whisper转写后更新或删除已有行;Config节点需设owner_chat_ids与sheet_url。

这次做成什么

搭一个「Telegram拍票→OpenAI提取→德国税务标记→查重→写表」的记账机器人,并用本站合成票据完成拍照、查重按钮、语音备注三种走查。

准备什么

  • 一个可接收Telegram回调的n8n实例及BotFather创建的机器人
  • OpenAI API密钥(视觉与Whisper都可能产生费用)
  • 含名为Ausgaben工作表的Google Sheets及OAuth凭据
  • Google Drive OAuth凭据与目标文件夹
  • 你自己的Telegram chat ID(可先与机器人对话获取)
  • 不含真实个人信息的测试收据照片

具体怎么做

  1. 建机器人并设白名单

    在BotFather创建机器人拿token,在n8n添加Telegram凭据;先给自己发一条消息取得chat ID,填入模板的⚙️ Config节点owner_chat_ids,未列入的聊天会被忽略;同一Config里把sheet_url设为你的表格链接,供「View Sheet」按钮使用。

  2. 建Ausgaben表与Drive文件夹

    在Google Sheets建立名为Ausgaben的工作表(名称需与模板映射一致),按材料2列头建列;Drive中选好转存收据的文件夹,分别在模板对应节点选择表格与文件夹。

  3. 配置两段OpenAI提示词

    把材料1粘贴到视觉提取节点,输出固定JSON;把材料2粘贴到归类节点,让它返回成本中心、可抵扣与增值税可回收标记。抵扣金额与追踪ID按模板既有代码节点计算,本站不改写其税务规则,具体口径以模板代码为准。

  4. 走查查重与按钮

    连续发送同一张测试收据两次:第二次应触发疑似重复警告并出现「仍要添加/忽略」按钮;点「仍要添加」应追加新行,点「忽略」则不写表。

  5. 走查语音备注

    对确认消息回复一条语音(如「这是和客户穆勒先生的工作晚餐」),模板用Whisper转写后重新归类并更新已有行;确认表格对应行被修改而不是新增。

可直接复制的材料

OpenAI视觉票据提取提示词

本站独立编写示例,粘贴进模板的视觉提取提示词位置;字段名需与模板解析代码对应

你是费用记账助手。判断图片是否为可辨认的收据。不可读或缺关键字段时只返回 {"readable": false}。可读时只返回一条JSON:{"readable": true, "merchant": "商家名", "date": "YYYY-MM-DD", "gross": 毛额数字, "net": 净额数字, "vat": 增值税额数字, "vat_rate": 税率数字如19或7, "currency": "EUR等三字母币种", "payment_method": "现金|刷卡|转账|其他"}。金额用数字不带符号;无法辨认的字段填null;不要输出JSON以外的文字。

成本中心与德国税务标记提示词

本站独立编写示例,仅作练习口径,不构成税务建议;模板实际的抵扣计算在其代码节点内

根据下面的收据JSON,输出一条JSON:{"cost_center": "餐饮招待|差旅交通|办公物资|培训|其他" 之一, "tax_note": "一句德国税务备注", "deductible": true或false, "vat_recoverable": true或false}。参考口径:餐饮招待通常只有部分金额可抵扣,增值税在凭证合规时可回收;纯私人支出不可抵扣也不可回收。只输出JSON。收据:

Ausgaben工作表列头与示例行(CSV)

本站合成示例,工作表名必须为Ausgaben且列序与模板映射节点一致,链接为虚构占位

追踪ID,日期,商家,毛额EUR,净额EUR,增值税EUR,税率,币种,支付方式,成本中心,可抵扣,增值税可回收,备注,图片链接
EXP-0001,2026-09-15,REWE,23.80,22.24,1.56,7,EUR,刷卡,办公物资,true,true,团队补给,https://drive.example.com/file/xyz789

输入与输出示例

本站虚构演示,未真实调用OpenAI或Whisper

输入

发送虚构收据照片:REWE超市,2026-09-15,毛额23,80 €,净额22,24 €,增值税1,56 €(7%),刷卡支付。

对应输出

提取JSON {"readable":true,"merchant":"REWE","date":"2026-09-15","gross":23.80,"net":22.24,"vat":1.56,"vat_rate":7,"currency":"EUR","payment_method":"刷卡"};归类为办公物资、可抵扣true、增值税可回收true;Ausgaben新增追踪ID为EXP-0001的一行,机器人回复:已记录 REWE 23,80 €(含增值税1,56 €,成本中心:办公物资),并附「View Sheet」按钮。

做完检查这些

  • 未加入owner_chat_ids的聊天发图被忽略,无任何写表动作
  • 清晰收据发送后Drive出现以描述性文件名保存的图片且表格链接可开
  • 缺关键字段的模糊照片收到重拍提示且不写表
  • 同一票据重发触发「仍要添加/Ignore」按钮且两种选择行为符合预期
  • 语音备注发送后原有行被更新而非新增重复行

容易卡住的地方

  • Ausgaben工作表名与列映射必须和模板完全一致,否则写表报错或串列
  • 查重只是相似度启发式,可能漏报或误报,重要账目仍需人工复核
  • 模板内抵扣规则是作者按德国口径写的代码,不构成税务建议,申报前请与税务顾问核对
  • OpenAI视觉与Whisper转写均按量计费,免费n8n模板不含这些API费用

原文与作者资料 ↗

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

原文标题
Log German VAT-ready expense receipts via Telegram with OpenAI and Google Sheets
原作者
Friedrich Bremer
原始发布日期
2026-09-28T07:37:03.482Z
来源
https://n8n.io/workflows/20026