Auto-recovered $24,979 in past-due invoices in 6 weeks.
Late-payment rate cut from 46% to 34% for a US-based staffing agency, with no human drafting a dunning email.
The problem
A 280-VA staffing agency was bleeding revenue through stale invoices, missed follow-ups, and manual reconciliation. One person was spending hours each week building Stripe invoices and chasing payments by hand.
What I built
Invoice generation
Pulls live VA hours from Google Sheets and finalizes Stripe invoices on a biweekly cycle.
Auto-charge
Runs cards on file when invoices age past due, with a custom decline-email step that explains what failed and how to fix it.
Reply-aware Gmail dunning
A 3-stage cadence (initial, 3-day, 7-day) inside the original Gmail thread, so customers see one growing conversation instead of repeated cold nudges.
Out-of-band payment marker
For Zelle and cash payments, keeps the Stripe books matching reality.
Past-due reporting
A twice-weekly summary email to the finance team, so nothing slips through.
Measured impact
$24,979
Past-due invoices auto-recovered in 6 weeks
46% → 34%
Late-payment rate (26% relative drop)
56
Late invoices recovered with zero manual dunning emails
Measured over the 6 weeks following rollout, compared against the prior 7-week baseline. Same client, same customer base, same biweekly billing cycle.
Stack
Claude CodePythonStripe APIGmail APIResendGoogle Sheets APImonday.com webhooklaunchd cron
Want this for your service business?
Email JW