Invoice Engine — Complete Invoicing & Accounts Receivable
一个零依赖的代理技能,用于端到端的发票处理 — 从报价到支付再到报告。
快速开始
当用户说“创建一个发票”或“向[客户]开票”时:
- 检查客户是否存在于内存中(见下面的客户注册表)
- 如果是新客户 → 运行客户入职
- 使用发票生成器生成发票
- 提交审核 → 完成
- 在发票分类账中跟踪
1. 客户注册表
在您的工作空间中维护一个YAML客户数据库:
# clients.yaml
clients:
- id: "CLI-001"
name: "Acme Corp"
contact: "Jane Smith"
email: "jane@acme.com"
address:
line1: "123 Business Ave"
line2: "Suite 400"
city: "New York"
state: "NY"
zip: "10001"
country: "US"
tax_id: "US-EIN-12-3456789"
payment_terms: "net-30" # net-15, net-30, net-45, net-60, due-on-receipt, custom
preferred_currency: "USD"
default_tax_rate: 0 # 0 for B2B cross-border, local rate for domestic
notes: "PO required for invoices > $5,000"
created: "2026-01-15"
lifetime_revenue: 12500.00
invoices_sent: 3
invoices_paid: 2
avg_days_to_pay: 22
客户入职清单
当添加新客户时,收集:
- [ ] 法律实体名称(与记录上完全一致)
- [ ] 开票联系人姓名 + 邮箱
- [ ] 开票地址(完整的,包括国家)
- [ ] 税务登记号/增值税号码(如适用)
- [ ] 首选支付条款
- [ ] 货币偏好
- [ ] 任何采购订单或审批要求
- [ ] 免税?(如果是,获取证书参考)
2. 发票生成器
发票编号格式
[PREFIX]-[YEAR].[MONTH].[SEQUENCE]
示例:INV-2026.02.001
可配置的前缀每个业务线:
INV= 标准发票PRO= 形式发票/报价REC= 定期发票CN= 信用票据
发票模板
生成发票时,结构如下:
╔══════════════════════════════════════════════════════════╗
║ [YOUR COMPANY NAME] ║
║ [Address Line 1] ║
║ [City, State ZIP] ║
║ [Country] ║
║ Tax ID: [YOUR TAX ID] ║
╠══════════════════════════════════════════════════════════╣
║ ║
║ INVOICE [NUMBER] Date: [ISSUE DATE] ║
║ Due: [DUE DATE] ║
║ ║
║ Bill To: Payment Terms: ║
║ [CLIENT NAME] [Net-30 / etc.] ║
║ [Client Address] ║
║ [City, State ZIP] PO Number: ║
║ Tax ID: [CLIENT TAX ID] [If applicable] ║
║ ║
╠══════════════════════════════════════════════════════════╣
║ # │ Description │ Qty │ Rate │ Amount ║
╠═════╪══════════════════════╪══════╪═════════╪════════════╣
║ 1 │ [Service/Product] │ 1 │ $X,XXX │ $X,XXX.XX ║
║ 2 │ [Service/Product] │ 3 │ $XXX │ $X,XXX.XX ║
║ 3 │ [Expense passthrough]│ 1 │ $XXX │ $XXX.XX ║
╠═════╧══════════════════════╧═════╧═════════╧════════════╣
║ Subtotal: $XX,XXX.XX ║
║ Discount: -$X,XXX.XX ║
║ Tax (X%): $X,XXX.XX ║
║ ───────────────────────── ║
║ TOTAL DUE: $XX,XXX.XX ║
╠══════════════════════════════════════════════════════════╣
║ Payment Methods: ║
║ • Bank Transfer: [Bank] | Acct: [XXXX] | Routing: [XX] ║
║ • PayPal: [email] ║
║ • Stripe: [payment link] ║
║ • Bitcoin: [address] / Lightning: [LNURL] ║
║ ║
║ Notes: [Custom message / thank you / late fee notice] ║
╚══════════════════════════════════════════════════════════╝
行项目类型
- 基于时间:小时 × 时薪(记录小时,自动计算)
- 固定费用:项目里程碑,预付费用
- 基于数量:单位 × 单价
- 费用转嫁:成本价或加价%
- 折扣行:负金额(提前支付,数量,忠诚度)
- 定期:从定期计划自动填充
税务处理决策树
客户是否与您在同一国家?
├── YES → 应用当地税率
│ ├── 客户免税?→ 添加免税参考,0%税
│ └── 客户不免 → 应用标准税率
└── NO → 通常0%(反向收费/出口)
├── 都在欧盟?→ 反向收费机制(0%,发票上注明)
├── 美国州际?→ 检查关联规则
└── 国际 → 0%带有出口参考
折扣与定价框架
- 提前支付:2/10 Net 30(如果10天内支付,享受2%的折扣)
- 数量:分层定价(1-10单位 = $X,11-50 = $Y,51+ = $Z)
- 忠诚度:6+发票后,提供5%的持续折扣
- 捆绑:将多个服务打包,比单独购买便宜10-15%
- 季节性:Q4溢价(+10%),Q1折扣(-5%)如果适用
3. 发票生命周期与状态跟踪
状态流
草稿 → 发送 → 查看 → 部分支付 → 已支付 → 关闭
↓
逾期 → 升级 → 核销
↓
有争议 → 解决 → 已支付
发票分类账(YAML)
# invoices.yaml
invoices:
- number: "INV-2026.02.001"
client_id: "CLI-001"
status: "sent"
issue_date: "2026-02-13"
due_date: "2026-03-15"
currency: "USD"
subtotal: 5000.00
discount: 0
tax: 0
total: 5000.00
amount_paid: 0
balance_due: 5000.00
payment_terms: "net-30"
line_items:
- description: "AI Integration Consulting — February"
qty: 20
rate: 250.00
amount: 5000.00
payments: []
notes: ""
sent_date: "2026-02-13"
reminders_sent: 0
created: "2026-02-13T10:30:00Z"
支付记录
当收到付款时:
payments:
- date: "2026-03-10"
amount: 5000.00
method: "bank_transfer" # bank_transfer, stripe, paypal, btc, cash, check
reference: "TXN-ABC123"
notes: "Paid in full"
更新:amount_paid, balance_due, status(→ 如果余额 = 0,则为已支付,→ 如果余额 > 0,则为部分支付)
4. 定期发票
计划配置
recurring:
- id: "REC-001"
client_id: "CLI-001"
description: "Monthly Retainer — AI Ops Support"
frequency: "monthly" # weekly, biweekly, monthly, quarterly, annually
day_of_month: 1 # 1-28(为安全起见,避免29-31)
line_items:
- description: "AI Operations Retainer"
qty: 1
rate: 3500.00
auto_send: true # false = 创建为草稿
start_date: "2026-01-01"
end_date: null # null = 无限期
next_invoice: "2026-03-01"
invoices_generated: 2
active: true
定期发票例程(按计划运行)
- 检查
recurring条目,其中next_invoice <= today和active = true - 对于每个:根据模板生成发票,分配下一个号码
- 如果
auto_send = true→ 标记为已发送,通知客户 - 如果
auto_send = false→ 保存为草稿,通知用户审核 - 更新
next_invoice到下一次出现 - 在每日记忆中记录
5. 逾期管理与收款
提醒计划
| 逾期天后 | 行动 | 语气 |
|---|---|---|
| +1 天 | 友好提醒邮件 | “Just a gentle reminder…” |
| +7 天 | 发送带有发票的跟进 | “Following up on…” |
| +14 天 | 坚定提醒,提及滞纳金 | “This invoice is now 14 days past due…” |
| +30 天 | 最终通知,升级前 | “Final notice — please remit payment…” |
| +45 天 | 升级到人类(Kalin/Christina) | 标记为个人外展 |
| +60 天 | 考虑核销或收款 | 商业决策 |
提醒模板
第1天(友好)
主题:友情提醒 — 发票[NUMBER]于[DATE]到期
Hi [CONTACT],
Hope all is well! Just a quick reminder that invoice [NUMBER] for [AMOUNT] was due on [DATE].
如果您已经发送了付款,请忽略这条消息。
付款详情在附件发票上。如果您需要任何东西,请告诉我。
Best,
[YOUR NAME]
第14天(坚定)
主题:发票[NUMBER] — 14天逾期([AMOUNT])
Hi [CONTACT],
发票[NUMBER]为[AMOUNT]现在已经逾期14天,到期日为[DATE]。
根据我们的协议,逾期[Y]天以上的余额可能会适用[X]%的滞纳金。
您能确认我们何时可以期待付款吗?如果有任何问题,很乐意讨论。
谢谢,
[YOUR NAME]
第30天(最终)
主题:最终通知 — 发票[NUMBER]逾期([AMOUNT])
Hi [CONTACT],
这是最终提醒,发票[NUMBER]为[AMOUNT]仍未支付,现在已经逾期30天。
请在接下来的7个工作日内安排付款,以避免进一步的行动。
如果对这个发票有争议或问题,请立即告诉我,以便我们可以解决。
Regards,
[YOUR NAME]
滞纳金计算
标准:每月逾期余额的1.5%(18% APR)
宽限期:到期日后5个工作日
复合:单利(不复利)
上限:发票总额的25%(或当地法律最高限额)
公式:late_fee = balance_due × (monthly_rate / 30) × days_overdue
示例:$5,000 × (0.015 / 30) × 14 = $35.00
6. 财务报告
收入仪表板(每周/每月生成)
═══ 收入总结 — [MONTH YEAR] ═══
本月开票: $XX,XXX.XX ([N]发票)
本月收款: $XX,XXX.XX ([N]付款)
未逾期(未到期):$XX,XXX.XX ([N]发票)
逾期: $XX,XXX.XX ([N]发票,平均[X]天晚)
已核销(YTD): $XX,XXX.XX
收款率: XX.X% (收款/开票,过去90天)
平均支付天数: XX天(过去90天)
平均发票金额: $X,XXX.XX
═══ 本年度前客户(按收入,YTD)═══
1. [客户] — $XX,XXX ([N]发票,平均[X]天支付)
2. [客户] — $XX,XXX ([N]发票,平均[X]天支付)
3. [客户] — $XX,XXX ([N]发票,平均[X]天支付)
═══ 账龄报告 ═══
当前(尚未到期): $XX,XXX ([N]发票)
1-15天逾期: $XX,XXX ([N]发票)
16-30天逾期: $XX,XXX ([N]发票)
31-60天逾期: $XX,XXX ([N]发票)
60+天逾期: $XX,XXX ([N]发票)⚠️
═══ 月度趋势 ═══
一月:$XX,XXX ████████████
二月:$XX,XXX ████████████████
三月:$XX,XXX ██████
...
═══ 需要采取的行动 ═══
• [N]发票需要提醒邮件
• [N]定期发票到期生成
• [客户]对INV-XXXX有争议 — 需要解决
关键指标跟踪
- 收款率:实际收取的开票金额的百分比(目标:>95%)
- DSO(销售天数):从开票到支付的平均天数(目标:<30)
- 逾期比率:逾期余额/总未付(目标:<10%)
- 收入集中度:来自前客户的比例(如果>40% — 依赖风险)
- MRR来自定期:定期发票总额/月
7. 信用票据和调整
当需要退款或更正时:
credit_note:
number: "CN-2026.02.001"
original_invoice: "INV-2026.01.003"
client_id: "CLI-001"
reason: "部分退款 — 超收服务小时"
line_items:
- description: "更正:5小时超收"
qty: -5
rate: 250.00
amount: -1250.00
total: -1250.00
issued: "2026-02-13"
对信用票据进行冲抵:
- 原始发票(减少余额)
- 未来发票(账户上的信用)
- 直接退款(记录退款方式 + 参考)
8. 多货币支持
currencies:
primary: "USD"
accepted: ["USD", "GBP", "EUR", "BTC"]
exchange_rates: # 每周更新或使用实时汇率
GBP_USD: 1.27
EUR_USD: 1.08
BTC_USD: 97500
conversion_note: "按发票日期的汇率转换。只接受发票货币的付款。"
规则:
- 始终以客户的首选货币开具发票
- 以收到的货币记录付款
- 转换为报告的主要货币(使用付款日期的汇率)
- 如果跨货币,则在发票上注明汇率
- BTC/Lightning:包括sats和法币等价物
9. 报价至发票流程
报价(形式发票)模板
与发票模板相同,但是:
- 前缀:
PRO-而不是INV- - 标题:“报价"而不是"发票”
- 添加:“有效期至:[DATE]”(通常30天)
- 添加:“这不是税务发票”
流程流
报价 → 接受 → 发票 → 已支付
↓
到期(自动到期后有效期)
↓
修订(新版本更改)
当报价被接受时:
- 转换为发票(更改前缀,删除有效期通知)
- 分配发票号码
- 根据客户档案设置支付条款
- 发送发票
- 将报价存档为"已转换"
10. 边缘案例与规则
部分付款
- 单独记录每笔付款,并附上参考
- 每次付款后更新
balance_due - 在最后一笔付款后 → 标记为已支付
- 如果部分 + 逾期 → 只追收剩余余额
有争议的发票
- 标记状态为有争议
- 记录争议原因和日期
- 在争议期间暂停提醒
- 跟踪解决(调整,信用票据,或确认正确)
- 解决后恢复计费
作废与信用票据
- 作废:发票错误地发送了,本不应存在 → 标记为作废,排除在报告之外
- 信用票据:服务已交付但需要调整 → 发行CN,包括在报告中
税务发票要求(按地区)
- 美国:没有严格格式,但如果注册了,需包括EIN
- 英国/欧盟:必须包括增值税号码,增值税金额,"反向收费"通知如适用
- 澳大利亚:必须说"税务发票",包括ABN,GST金额
- 加拿大:包括GST/HST号码,省特定规则
四舍五入
- 始终将行项目金额四舍五入到小数点后两位
- 在小计上计算税款(而不是逐行),以避免便士差异
- 显示货币符号在金额之前:$1,234.56
发票编号
- 永远不重用或跳过号码(税务审计要求)
- 每个前缀内顺序编号
- 如果作废,保留号码,只需标记状态
11. 自动化机会
设置cron作业或心跳检查:
- [ ] 按计划生成定期发票
- [ ] 根据上述时间表发送逾期提醒
- [ ] 每周向所有者发送收入仪表板
- [ ] 每月账龄报告
- [ ] 自动标记>45天逾期的客户
- [ ] 季度审查:更新汇率,审查定价
12. 导出格式
当用户需要导出时:
- CSV:用于电子表格/会计导入
invoice_number,client,date,due_date,total,status,amount_paid,balance - JSON:用于API集成或备份
- Markdown表格:在聊天中快速查看
- PDF就绪文本:格式化文本块,准备用于PDF生成工具
命令参考
| 命令 | 行动 |
|---|---|
| “Invoice [client] for [amount/description]” | 创建新发票 |
| “Quote [client] for [service]” | 创建形式发票 |
| “Show outstanding invoices” | 列出未付发票 |
| “What’s overdue?” | 账龄报告,仅逾期 |
| “Revenue this month” | 月度收入仪表板 |
| “Send reminder for [invoice]” | 生成提醒邮件 |
| “Record payment [invoice] [amount]” | 记录收到的付款 |
| “Recurring: [client] [amount] [frequency]” | 设置定期发票 |
| “Credit note for [invoice]” | 发行信用/调整 |
| “Client report [name]” | 完整的客户支付历史 |
| “Export invoices [format]” | CSV/JSON/Markdown导出 |
| “Void [invoice]” | 作废发票 |
| “Update rates” | 刷新汇率 |