How to Automate Invoice Reminders for Freelancers (n8n + Gmail + Sheets)
Updated June 3, 2026 · #n8n#gmail#google-sheets
The short answer
Keep your invoices in a Google Sheet with a due date and a paid/unpaid status. An n8n workflow checks the sheet on a schedule, finds invoices that are overdue, and automatically emails the client a polite reminder, escalating the tone the longer it goes unpaid. You stop chasing payments manually and get paid faster, without the awkward emails.
Which tool should you use?
Build this in n8n if your invoices live across several systems and you want one custom chase sequence.
- switch Wave / QuickBooks (built-in), you’re solo. Your invoicing tool already sends automatic reminders; just turn them on
Late payments are the freelancer’s quiet tax. Not just the cash-flow hit, but the mental load of remembering who owes you and the discomfort of asking. This workflow takes the whole job off your plate: it watches your invoices and chases the late ones for you, politely and on time.
What this workflow does
- It checks your invoice list on a schedule.
- It finds invoices that are past due and still unpaid.
- It emails the client a reminder, with the tone matched to how overdue it is.
- It stops automatically the moment an invoice is marked paid.
What you’ll need
- n8n (cloud or self-hosted).
- A Google Sheet of invoices with columns: client name, client email, amount, due date, status.
- A Gmail (or Outlook) account to send from.
- Optional: a Claude API key if you want each reminder personalized rather than templated.
Build it step by step
Step 1, Schedule the check
Add a Schedule Trigger set to run once a day. Each morning it will quietly review who’s overdue. No more mental tracking.
Step 2, Read your invoices
Add a Google Sheets node (Get Rows) pointing at your invoice sheet. This pulls every invoice into the workflow so the next step can sort out the late ones.
Step 3, Find the overdue ones
Add a Filter node that keeps rows where status is “unpaid” and the due date is in the past. Everything that passes is an invoice that needs a nudge today.
Step 4, Pick the right message
Add an If (or Switch) node based on how many days past due the invoice is:
- 3+ days: a friendly “just a heads-up” reminder.
- 14+ days: a firmer “this is now overdue” note.
- 30+ days: a final notice referencing your payment terms.
Write the three messages once. If you’d rather they feel personal, add a Claude node that takes the client name and overdue amount and writes the reminder in your tone instead of using fixed text.
Step 5, Send it
Add a Gmail node (Send) for each branch, mapping the client’s email and the matching message. The reminder goes out automatically, professional, on time, and without you touching it.
Step 6, Don’t double-chase
When a client pays, mark the row “paid” in your sheet. It immediately drops out of the overdue filter, so reminders stop on their own.
Make it yours
- Attach the invoice: have n8n pull the PDF from Drive and attach it to the reminder.
- Stripe-native: swap the sheet for a Stripe node so “paid” updates itself the second a client pays.
- Slack ping: add a step that messages you when an invoice hits 30 days, so you can make a personal call.
Getting paid faster is the most direct ROI in this whole library. Want it wired to Stripe or your accounting tool, or built for you? Drop it in the request queue.
Frequently asked
Do I need accounting software for this?
No. A Google Sheet with columns for client, amount, due date, and status is enough to start. If you already use Stripe, QuickBooks, or Xero, n8n can read invoice status directly from them instead of the sheet, but the sheet version works today.
Won’t automated reminders feel cold to clients?
They feel more professional, not less, consistent, on-time, and politely worded. You can have Claude soften or personalize each message, and most clients simply appreciate the nudge. You set the tone; the automation just makes sure it actually happens.
How does it know when to escalate?
The workflow checks how many days past due each invoice is and picks the matching message, a gentle note at 3 days, a firmer one at 14, a final notice at 30. It’s just a rule based on the date, and you write the wording.
Will it stop emailing once an invoice is paid?
Yes. As soon as you mark the invoice paid in the sheet (or it clears in Stripe), it drops out of the "overdue" filter and no more reminders are sent.
Want this one done for you?
Get the enriched version with the importable workflow file, or have me build and hand over the whole thing, tested, with a walkthrough.