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(可先与机器人对话获取)
- 不含真实个人信息的测试收据照片
具体怎么做
建机器人并设白名单
在BotFather创建机器人拿token,在n8n添加Telegram凭据;先给自己发一条消息取得chat ID,填入模板的⚙️ Config节点owner_chat_ids,未列入的聊天会被忽略;同一Config里把sheet_url设为你的表格链接,供「View Sheet」按钮使用。
建Ausgaben表与Drive文件夹
在Google Sheets建立名为Ausgaben的工作表(名称需与模板映射一致),按材料2列头建列;Drive中选好转存收据的文件夹,分别在模板对应节点选择表格与文件夹。
配置两段OpenAI提示词
把材料1粘贴到视觉提取节点,输出固定JSON;把材料2粘贴到归类节点,让它返回成本中心、可抵扣与增值税可回收标记。抵扣金额与追踪ID按模板既有代码节点计算,本站不改写其税务规则,具体口径以模板代码为准。
走查查重与按钮
连续发送同一张测试收据两次:第二次应触发疑似重复警告并出现「仍要添加/忽略」按钮;点「仍要添加」应追加新行,点「忽略」则不写表。
走查语音备注
对确认消息回复一条语音(如「这是和客户穆勒先生的工作晚餐」),模板用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