How We Automated Invoice Chasing for a 50-Client Agency
An agency owner was manually emailing overdue invoices every week. We automated the whole process — detection, personalised emails, and Slack alerts. Recovered 15% of overdue revenue in the first month.
The problem
Marcus runs a digital marketing agency with around 50 active clients. Every Friday he'd sit down and go through his invoicing system, figure out who was overdue, then draft individual emails to each one. On a bad week that was a dozen emails — each one slightly awkward to write, each one mentally draining.
It was taking 3–4 hours every single week. Not because the task is complex, but because it's tedious and emotionally loaded. You're essentially asking someone to pay you. You don't want to sound aggressive. You don't want to be ignored. So you agonise over the wording, individualise each one, and hope for the best.
Some invoices were slipping through entirely — clients 60 or 90 days overdue that Marcus had simply forgotten to chase. Others he'd chased once, got no reply, and moved on. The lost revenue was accumulating quietly in the background.
He needed a system that would handle the chasing automatically, keep it personal enough to not feel like spam, and alert him when something needed human attention.
What we built
The solution was an n8n workflow that runs on a schedule, checks invoice status against Stripe, detects overdue payments, generates personalised chase emails, sends them via Gmail, and posts a Slack notification to Marcus for every email sent.
The workflow runs every morning at 9am. It pulls all open invoices from Stripe, filters for anything overdue by 7, 14, or 30+ days, and applies a different email template to each tier. A 7-day overdue gets a gentle nudge. A 30-day gets a firmer follow-up with the invoice PDF attached.
Each email is built with the client's name, invoice number, amount, and due date pulled directly from Stripe. They look like Marcus wrote them — because the template was written in his voice. Clients have no idea there's automation involved.
The Slack notification logs every send: client name, invoice amount, how many days overdue, and which template was used. If Marcus wants to step in and handle something personally, he has the full context right there.
The build
We used n8n as the workflow engine, the Stripe API to pull invoice data, and Gmail API (OAuth, from Marcus's own account) to send the emails. The Slack integration was a simple webhook — five minutes to set up.
The whole thing runs on a $6/month VPS that we provisioned and configured as part of the project. n8n self-hosted, no per-execution fees, no platform lock-in. Marcus got the workflow files, the server details, and a Loom walkthrough he can revisit whenever.
We also built a small Google Sheet as a "suppression list" — if Marcus wants to pause chasing for a specific client (maybe they're in a dispute, or he's in conversation with them), he adds their email to the sheet and the workflow skips them automatically.
Total build time: 2.5 days. Day 1 was the Stripe integration and overdue detection logic. Day 2 was email generation, Gmail send, and the Slack notifications. Half of day 3 was edge cases, testing with real invoice data, and the suppression list feature.
The result
The project cost was $490 — our single flow tier. Marcus was losing more than that every month in invoices he simply wasn't chasing. The system paid for itself in the first week it ran.
He told us afterwards: "I didn't realise how much mental energy that task was taking until it was gone." That's the part that's hard to put a number on.
Got money sitting in unpaid invoices? We can probably automate the chase.
[ let's talk ]