How to Automate Invoice Reminders for Freelancers (n8n + Gmail + Sheets)

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.

How to Automate Invoice Reminders for Freelancers (n8n + Gmail + Sheets)

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.

Late payments are a quiet tax

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.

A spreadsheet is enough

You don't need accounting software to start. A single **Google Sheet** is your source of truth, one row per invoice, with these columns: - **Client name** and **client email**, who to chase. - **Amount** and **due date**, how much and when it was due. - **Status**, either `unpaid` or `paid`, the on/off switch. Move to Stripe or Xero later and you swap this one node, keeping everything else.

Check on a schedule

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.

Read the sheet, find the late ones

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.

Escalate by how late it is

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. - **3+ days:** a friendly "just a heads-up." - **14+ days:** a firmer "this is now overdue." - **30+ days:** a final notice referencing your terms.

Write once, or let Claude personalize

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.

Stop the second they pay

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.

Set up the sheet and daily check

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.

Try this now

Your turn: open n8n and set up the first step. Just do step one now — the rest takes minutes. Save this guide to pick up where you left off.

FAQ

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.

Today
1 / 10
Start hereintermediate35 min

How to Automate Invoice Reminders for Freelancers (n8n + Gmail + Sheets)

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.

Swipe up to begin
Concept

Late payments are a quiet tax

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.

Concept

A spreadsheet is enough

You don't need accounting software to start. A single Google Sheet is your source of truth, one row per invoice, with these columns:

  • Client name and client email, who to chase.
  • Amount and due date, how much and when it was due.
  • Status, either unpaid or paid, the on/off switch.

Move to Stripe or Xero later and you swap this one node, keeping everything else.

Concept

Check on a schedule

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.

Concept

Read the sheet, find the late ones

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.

Concept

Escalate by how late it is

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.

  • 3+ days: a friendly "just a heads-up."
  • 14+ days: a firmer "this is now overdue."
  • 30+ days: a final notice referencing your terms.
Concept

Write once, or let Claude personalize

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.

Concept

Stop the second they pay

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.

Concept

Set up the sheet and daily check

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.

Try this now

Try this now

Your turn: open n8n and set up the first step. Just do step one now — the rest takes minutes. Save this guide to pick up where you left off.

That’s the whole lesson. Save it, upvote it, or drop a comment on how it went below.