- n8n
- Google Sheets
- Gmail
PaidOnTime: automatic invoice reminders for EU freelancers (n8n + Google Sheets + Gmail)
Stop chasing clients by hand. One sheet, five polite reminders, a Monday cash digest.
One-off payment · Ready-to-import n8n workflow · Test mode on by default
Late payment is the norm. Chasing it shouldn't be your job.
Writing "just a friendly reminder…" emails is awkward, and it's easy to forget who you already nudged and when. Meanwhile the invoice gets older.
85% of freelancers said they get paid late at least sometimes.
2025 State of Freelance Work surveyPaidOnTime reads the invoice list you already keep in Google Sheets and sends each unpaid client a short, friendly reminder at the right moment, from your own Gmail.
Five polite reminders, each at the right moment
Every weekday at 09:00 it checks your sheet. Each unpaid invoice gets one reminder when it reaches the next stage, and never more than one a day.
-
3 days beforeA friendly heads-up
-
1 day lateA gentle nudge
-
7 days lateOptional B2B legal note from here
-
14 days lateA firmer follow-up
-
30 days lateFinal notice, and you get an alert
Reads your sheet
It uses the Invoices tab you already keep. Set a row to Paid, or Pause to yes, and reminders stop.
Sends from your Gmail
In the client's language (English, Romanian or German), with your payment details and sign-off.
Logs every email
It writes RemindersSent, LastStageSent and LastReminderDate back to the sheet, so nothing goes out twice.
Set it up once, then forget it
Runs by itself
Every weekday at 09:00, in your timezone.
Polite by design
Five escalating messages, never more than one a day per invoice.
Your data stays yours
Your n8n, your Google Sheet, your Gmail. No new SaaS subscription.
Monday cash digest
An aging report: not yet due, 1–30, 31–60, 61–90 and 90+ days late, with overdue totals per currency.
EU-ready
EUR, RON or any currency, EU date and number formats, and an optional B2B late-payment note.
Safe to try
Test mode sends everything to you first, marked [TEST], and leaves your sheet untouched.
Everything you need to go live
paidontime-workflow.jsonThe n8n workflow. Import it into n8n Cloud or self-hosted n8n 1.x or 2.x (tested on 2.8.4). Ships with no credentials.
Invoices-sample.csvThe sample sheet with the exact column headers.
README.mdA step-by-step setup guide, about 10 minutes from import to first test email.
Also included
- Email copy in 3 languages, editable in one place
- Optional EU late-payment note for B2B invoices (Directive 2011/7/EU), easy to switch off
- An alert when a final notice goes out, so you can call the client
- An alert if Gmail refuses an email, and the row is retried next run
- Rows with a bad email, a duplicate InvoiceID or an unreadable date are listed in the digest
- Free updates to v1.x
From import to your first test email
No coding needed. Changing the wording means editing plain text.
-
Create the sheet
Import the sample CSV into Google Sheets and name the tab Invoices.
-
Import the workflow
In n8n: Workflows → Import from file.
-
Connect & configure
Add your Google Sheets and Gmail credentials, your sheet ID, sign-off and timezone.
-
Test, then go live
Run it in test mode, check your inbox, then switch test mode off and activate.
One payment. No subscription.
Launch price, one-off
- Ready-to-import n8n workflow
- Sample sheet with the exact headers
- Step-by-step setup guide
- Email copy in English, Romanian and German
- Free updates to v1.x
Refund within 14 days if it doesn't import or run on n8n 1.x/2.x and it can't be fixed.
Made for
- EU freelancers, designers, developers, translators, consultants and small studios who invoice 5–100 clients a month
- People who already use n8n, or are willing to start the free n8n trial or self-host it
Not for
- Automatic payment matching from your bank or accounting tool. Not in v1: you mark invoices as Paid yourself
- Sending more than a few hundred emails a day (Gmail's limits apply)
Questions, answered honestly
What do I need to run it?
n8n 1.x or 2.x, either Cloud or self-hosted, and a Google account with Gmail and Google Sheets. The workflow was tested on self-hosted n8n 2.8.4.
Can I try it without emailing my clients?
Yes. Test mode is on by default: every email goes to you, marked [TEST], and your sheet is left untouched, so you can run it as often as you like. Switch it off when you're happy.
Does it detect when a client pays?
Not in v1. It doesn't read your bank or replies. Set Status to Paid (or Pause to yes) in the sheet and reminders stop for that invoice.
Could a client get the same reminder twice?
No. Every email is logged back to the sheet, and each invoice gets at most one reminder per stage, never more than one a day.
Which languages does it write in?
English, Romanian or German, set per row with the Language column. Anything else falls back to English. You can edit all the wording in one place.
Does it send legal threats?
No. The optional line only states what EU law allows for B2B invoices (Directive 2011/7/EU: statutory interest and a fixed €40 compensation). It's only added to rows marked B2B, from the 7-days-late reminder on, and you can switch it off. It is not legal advice.
Does it work with Outlook?
Not out of the box. You can swap the four Gmail nodes for n8n's Outlook node.
What about invoices that are already overdue?
An invoice that is already well overdue when you add it gets the reminder for the stage it has reached, not every earlier one. If you'd rather start gently, set LastStageSent yourself or pause it.
Refunds?
Within 14 days if it doesn't import or run on n8n 1.x/2.x and it can't be fixed.
Get paid on time, without the awkward emails
Import it, test it on yourself, and let it do the chasing from Monday.
Works with n8n Cloud or self-hosted · Google Sheets · Gmail