2026-10-13 · 原文发布日
印度NGO捐款收据与CSR提案全流程自动化
这条n8n流程面向印度非营利机构:接收Razorpay捐款webhook后回查API验真并按付款ID去重,生成财年连续编号的80G收据PDF(经Gotenberg转换),用OpenAI写感谢语后通过Gmail和WhatsApp发出,同时登记捐赠台账并在Slack提醒大额捐赠。另有季度定时汇总影响数据起草捐赠人邮件,以及CSR咨询表单进来后自动匹配项目、生成定制提案PDF并存档建草稿。
原文要点
原工作流由Rahul Joshi发布在n8n模板库(免费模板),主线为:接收Razorpay的payment.captured webhook,规范化捐赠人字段并忽略非captured事件;回查Razorpay Payments API验真、按付款ID在Google Sheets去重;计算财年连续收据号、捐赠人等级与标记;验真失败时向Slack发不匹配告警。有效捐赠用OpenAI(gpt-4o-mini)写感谢语,HTML版80G收据交Gotenberg转PDF,归档Google Drive,经Gmail与WhatsApp发出,台账写入Donations/Donors表并在大额或升级时提醒Slack。另有季度(1/4/7/10月)定时汇总Impact Metrics起草分级捐赠人邮件草稿,以及CSR咨询表单触发的项目匹配、提案PDF生成、Gmail草稿与CSR Pipeline登记。配置含多处占位符(表格ID、Slack频道、Drive文件夹、80G/12A/CSR-1、PAN等机构信息)需自行替换。
这次做成什么
在自有n8n中复刻这条三合一流程(捐款收据、季度影响邮件、CSR提案),先用一条合成webhook数据跑通收据主线,再按同样模式搭季度与CSR两条支线;没有原工作流文件可下载时,按本页的触发器→处理→分支→输出结构手工搭节点。
准备什么
- 一个自托管或云端n8n实例,可对外暴露webhook URL
- Razorpay测试账号的key ID与secret(用测试模式凭据,勿用生产密钥)
- OpenAI API密钥,模型沿用gpt-4o-mini或自选替代
- Google账号(Sheets/Gmail/Drive的OAuth2)、Slack工作区、可用的WhatsApp发送渠道
- 一个可访问的Gotenberg实例用于HTML转PDF
- 五个Google Sheets标签页:Donations、Donors、Impact Metrics、Programs、CSR Pipeline
具体怎么做
建表与字段映射
新建一个Google Sheet,建五个标签页。Donations列:payment_id、donor_name、email、phone、amount、receipt_no、fy、date;Donors列:email、name、total_given、tier;Impact Metrics列:quarter、metric、value;Programs列:program_name、focus_area、min_budget;CSR Pipeline列:company、contact、budget、status。把表ID记下,后面替换模板中的REPLACE_WITH_GOOGLE_SHEET_ID。
配置Razorpay触发与验真
在n8n加Webhook节点(POST路径如/razorpay-donation),在Razorpay后台把payment.captured事件指向该URL。 webhook后接IF节点只放行event=payment.captured;再接HTTP Request节点用Basic Auth(key ID/secret)调用Razorpay Payments API按payment.id回查金额与状态,与webhook载荷比对,不一致则走Slack告警分支停止。
去重与收据编号
用Google Sheets节点按payment_id在Donations中查找,已存在则直接结束。不存在时用Code节点计算财年(印度财年为4月至次年3月)并生成形如80G/2025-26/0042的连续号(读取Donations本财年行数+1,补零四位),同时按金额划分donor tier并打大额标记。
AI感谢语与PDF收据
OpenAI节点用材料中的感谢语提示词生成个性化文本;Code节点把捐赠数据填入80G收据HTML模板(含机构80G/12A/CSR-1、PAN、地址、签名人,均为需替换的占位);HTTP Request节点把HTML POST到你的Gotenberg实例转PDF,随后Google Drive节点上传到收据文件夹。
发出与登记
Gmail节点把感谢语正文+PDF附件发给donor_email;WhatsApp节点发简短致谢;Google Sheets节点向Donations追加一行、在Donors中按email做upsert(累加total_given、更新tier);IF节点判断大额或升级时Slack节点发提醒到配置的频道ID。
季度邮件与CSR支线
Schedule Trigger设为1/4/7/10月执行:汇总Donations与Impact Metrics,OpenAI起草影响故事,按tier各生成一封Gmail草稿并Slack通知。CSR支线用表单触发器接收咨询,按budget与focus_area在Programs中匹配,OpenAI生成提案文本,Gotenberg转PDF归档Drive并建带附件的Gmail草稿,CSR Pipeline登记线索、Slack播报。
可直接复制的材料
Razorpay合成测试webhook载荷
本站虚构的合成测试数据,金额为派(paise),即₹5000.00;仅在Razorpay测试模式下使用,勿填真实付款ID或个人电话。
{
"event": "payment.captured",
"payload": {
"payment": {
"entity": {
"id": "pay_TEST0001abcd",
"amount": 500000,
"currency": "INR",
"status": "captured",
"email": "demo.donor@example.org",
"contact": "+919999000111",
"notes": {
"donor_name": "演示捐赠人"
}
}
}
}
}OpenAI感谢语提示词(主线)
本站独立编写的示例提示词,机构名称、用途描述需替换为实际信息;模型可用gpt-4o-mini或自选。
你是一家印度注册非营利机构的捐赠关系专员。根据以下JSON数据写一段120字以内的英文感谢语,用于邮件正文:
- 称呼捐赠人名字(donor_name)
- 提到具体金额(amount_inr,卢比)与收据号(receipt_no)
- 一句话说明捐款用途(用于乡村教育项目,示例用途,可按机构实际改)
- 语气温暖、克制,不用感叹号堆砌,不做免税承诺性表述,只提示80G收据已附在邮件中
输入数据:
{"donor_name":"演示捐赠人","amount_inr":5000,"receipt_no":"80G/2025-26/0042"}
只输出感谢语正文,不要主题行,不要签名。CSR提案生成提示词(支线)
本站设计的练习提示词,对应原流程CSR支线的OpenAI步骤;资质信息必须人工填写后再发。
你是非营利机构的CSR合作顾问。根据企业咨询与匹配到的项目,写一份一页式CSR合作提案正文(英文,约300词),结构为:1) 对企业关注领域的呼应;2) 推荐项目与预算匹配说明;3) 预期量化影响(用给定的impact_unit示例);4) 下一步建议(30分钟电话会议)。
企业咨询:{"company":"DemoTech Pvt Ltd","focus_area":"education","budget_inr":1500000}
匹配项目:{"program_name":"乡村数字课堂","min_budget":1000000,"impact_unit":"每10万卢比支持一间教室一学年"}
不要编造机构资质编号,资质段落留【待填机构80G/CSR-1信息】占位。输入与输出示例
本站虚构演示,未实际运行;收据号、阈值与输出格式取决于你自己的节点配置。
输入
用上面的合成webhook载荷POST到 https://n8n.example.internal/webhook/razorpay-donation,模拟一笔₹5000.00的captured付款对应输出
Donations表新增一行:pay_TEST0001abcd | 演示捐赠人 | demo.donor@example.org | +919999000111 | 5000 | 80G/2026-27/0042 | 2026-27 | 2026-10-13(10月属印度财年2026-27);Donors表upsert该邮箱tier=Supporter;Slack未触发大额提醒(金额低于本站示例阈值₹10000);Gmail发出带80G/2026-27/0042.pdf附件的感谢邮件。做完检查这些
- 重复发送同一payment_id的webhook,第二次流程在去重节点直接结束,不新增台账行
- 把载荷中amount改成与Razorpay回查结果不一致的值,流程走Slack不匹配告警分支且不生成收据
- 跨年测试:付款日期分别为3月与4月时,收据号财年段分别显示上一年度与新年度
- Gotenberg不可达时流程在PDF转换节点报错,且Donations不写入半成品行(可先写状态列再更新)
- CSR表单提交budget低于所有Programs的min_budget时,提案中如实说明无匹配项目而不是强行推荐
容易卡住的地方
- 模板中的表格ID、Slack频道ID、Drive文件夹ID、机构80G/12A/CSR-1与PAN均为占位符,漏替换任何一处都会运行到一半报错
- webhook金额单位是派(paise),直接与卢比比较会导致验真永远失败,需先除以100
- 财年连续编号若靠读行数实现,并发两笔捐款可能撞号,生产环境需加锁或改用计数器表
- WhatsApp发送渠道原模板只写了节点未指定服务商,需自行确认所用节点的接入方式与模板消息审批
- 季度草稿按tier生成,若Donors表tier字段有空值会漏发部分捐赠人
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Send 80G receipts and CSR proposals with Razorpay, GPT-4o-mini, and Google
- 原作者
- Rahul Joshi
- 原始发布日期
- 2026-10-13T12:37:28.039Z
- 来源
- https://n8n.io/workflows/20879