Invoice Chaser
Unpaid Stripe invoices get polite, aging-appropriate reminders — 3/7/14/30-day tone ladder, per-customer caps, quiet hours, and nothing sends without you.
This recipe chases receivables without the awkward surprises: it pulls Stripe invoices in unpaid/overdue state, re-verifies each against fresh Stripe reads so money paid between runs is never chased, and buckets the rest by days overdue. Each invoice resolves to a billing contact and account owner, then passes a hard cap check — at most three reminders per invoice with a five-day minimum gap by default, quiet hours respected from the customer's timezone (holding rather than risking an off-hours send), collections holds honored, all fail-closed with the rule shown. Drafts escalate by bucket: a gentle 3-day heads-up, a friendly 7-day nudge with the pay link, a firmer 14-day note with the consequence line when applicable, and a direct 30-day final notice that never turns threatening. Everything stages as Gmail drafts behind one approval gate, payment status and caps are rechecked at dispatch, and every send returns a receipt. Reruns update existing drafts and drop paid invoices with a receipt line.
How it runs
Multi-agent orchestration — here's the flow, step by step.
Pull Stripe invoices in unpaid/overdue state with amount, due date, days overdue, attempt count, and customer. Reads the read-only Stripe ledger via stripe_list_charges and stripe_get_customer only — payment mutation tools are never in scope for this phase.
payment scannerRe-verify each invoice against fresh Stripe reads and exclude anything settled since the last run with a receipt line — never chase paid money.
reconciliation checkerResolve billing contact, account owner, communication preferences, and collections-hold flags; hold unverifiable customers with a named reason.
crm scannerCompute per-invoice cap state (3 reminders max, 5-day gap default), quiet-hours windows from customer timezones, and next-eligible send times — fail-closed.
payment followup orchestratorDraft one escalating reminder per in-scope invoice: bucket-appropriate tone, exact invoice number, amount, due date, and pay link, written for the owner's signature.
email writerAssemble the send plan — drafts, buckets, cap states, send windows — and gate the staged package for approval.
workflow orchestratorStage all drafts as Gmail drafts behind one approval gate; recheck payment status and caps at approval and dispatch, holding failures with named reasons.
distributorArm the next aging-bucket check for every sent reminder so escalation continues on schedule.
follow up reminder agentAssemble the aging summary, drafts, held list with exclusion rules, and dispatch receipts.
report formatterRequired Agents
9- payment-scanner
- reconciliation-checker
- crm-scanner
- email-writer
- payment-followup-orchestrator
- follow-up-reminder-agent
- workflow-orchestrator
- distributor
- report-formatter
Connections
Required
Optional
What it does
- Unpaid/overdue Stripe invoices bucketed by aging: 3/7/14/30 days
- Paid-between-checks re-verification before drafting AND before dispatch
- Tone ladder per bucket — gentle nudge to direct final notice, never threatening
- Every draft names the invoice number, exact amount, due date, and pay link
- Per-customer caps (3 per invoice, 5-day gap default) computed fail-closed
- Quiet hours from the customer's timezone — holds rather than risks off-hours sends
- Staged Gmail drafts behind one approval gate with dispatch receipts
- Idempotent per invoice + bucket: reruns update drafts, paid invoices drop out
Example prompt
Chase my overdue Stripe invoices — draft polite reminders for each, firmer the longer they've been unpaid, but skip anyone we've already reminded recently.
