How to Automate Invoice Reminders for Freelancers (n8n + Gmail + Sheets)
By Automate Basics
Loading guide…
By Automate Basics
Keep invoices in a Google Sheet with a due date and a paid/unpaid status. An n8n workflow checks it daily, finds the overdue ones, and emails the client a polite reminder that escalates in tone the longer it goes unpaid, stopping the second you mark it paid. You get paid faster and never send the awkward email yourself.
For freelancers, the worst part of a late invoice isn't only the cash-flow hit. It's the mental load of remembering who owes you and the genuine discomfort of asking again. So you put it off, and the invoice ages. This n8n workflow takes the whole job off your plate: it watches your invoices, chases the late ones politely and on time, then goes silent the second you're paid.
You don't need accounting software to start. A single Google Sheet is your source of truth, one row per invoice, with these columns:
unpaid or paid, the on/off switch.Move to Stripe or Xero later and you swap this one node, keeping everything else.
Add a Schedule Trigger set to run once a day. Each morning it quietly reviews who's overdue, so you never have to carry that list in your head again. This daily, multi-app automation is what makes it an Intermediate build rather than something you'd do in a chat window: n8n is doing real work on a timer while you sleep.
Add a Google Sheets node (Get Rows) to pull every invoice into the workflow. Then add a Filter node that keeps only rows where status is "unpaid" and the due date is in the past. Everything that survives the filter is, by definition, an invoice that needs a nudge today, no judgment calls needed, just the date and the status doing the sorting.
People respond to tone, and tone should track how overdue a payment is. Add a Switch node that branches on days past due, so a slightly late client gets a gentle tap while a long-overdue one gets a firm final notice.
Write the three messages once and the workflow reuses them forever. Prefer each reminder to feel personal? Add a Claude node that takes the client name and overdue amount and writes the note in your tone instead of fixed text. Either way, automated reminders read as more professional, not colder, because they're consistent and always on time, which is exactly how clients expect a real business to behave.
Add a Gmail node (Send) on each branch, mapping the client's email and the matching message. The reminder goes out on its own, on time, untouched by you. When a client pays, just mark that row "paid" in the sheet. It instantly drops out of the overdue filter, so the chasing stops automatically and nobody gets a reminder for a bill they already settled.
Make your invoice sheet with the five columns above and add one overdue test row. In n8n, wire the Schedule Trigger, the Sheets Get Rows node, and the Filter, then run it by hand to confirm your test invoice comes through. Add the Switch and Gmail nodes next, and your late payments start chasing themselves.
Open your invoice sheet and add the two columns the workflow needs: due date and status. That is step zero and it takes five minutes — the reminders can only ever be as reliable as that sheet.
That’s the whole lesson. Try it on a real task while it is fresh, then come back for the next one.
Build this in n8n if your invoices live across several systems and you want one custom chase sequence (optionally with Claude writing each reminder).
The same corner of the library, one job further on.