This article contains affiliate links. If you buy through them, we may earn a commission at no extra cost to you.
Year-End Invoice Reminders: Why Manual Follow-Up Costs You Money
The final weeks of December are brutal for cash flow. Clients are distracted, accounting departments are winding down, and your open invoices risk rolling into the new year unpaid. Chasing them manually — one email at a time — eats hours you do not have. The good news: you can build a fully automated reminder workflow in about 30 minutes, and it will keep running every year without touching it again.
This guide walks you through a practical n8n workflow that reads your open invoices, checks due dates, and sends personalised payment reminders automatically. You can build this with n8n — an open-source workflow automation tool with 400+ integrations that you can self-host for free or run on n8n Cloud — making it the right fit whether you bill five clients or five hundred.
What You Will Build
- A scheduled trigger that runs daily throughout December
- A data source connection (Google Sheets, Airtable, or your invoicing app)
- A filter that flags invoices due within 7 days or already overdue
- Personalised reminder emails sent via Gmail or SMTP
- A log entry written back to your spreadsheet so you always know what was sent
Step 1: Prepare Your Invoice Data Source
Before building the workflow, make sure your invoice data is accessible via an API or a structured spreadsheet. A Google Sheet with the following columns works perfectly:
- Client Name
- Client Email
- Invoice Number
- Invoice Amount
- Due Date
- Status (Open / Paid / Reminded)
If you use invoicing software like Zoho Invoice, Harvest, or Lexware, n8n has native integrations for most of them — connect directly instead of using a spreadsheet.
Step 2: Set Up the Scheduled Trigger
In n8n, add a Schedule Trigger node. Set it to run every day at 08:00 from 1 December to 31 December. This ensures reminders go out at the start of the working day throughout the entire year-end period.
Step 3: Fetch Open Invoices
Add a Google Sheets node (or your invoicing app node) and configure it to read all rows where Status = Open. This pulls only the invoices that still need attention.
Step 4: Filter by Due Date
Add an IF node with two conditions using JavaScript date logic:
- Due date is within the next 7 days → send a friendly advance reminder
- Due date has already passed → send an overdue notice
Use the expression {{ new Date($json["Due Date"]) <= new Date(Date.now() + 7 * 86400000) }} to catch both groups efficiently.
Step 5: Send Personalised Reminder Emails
Connect a Gmail or Send Email (SMTP) node after each branch of the IF node. Use n8n expressions to personalise each message:
- Subject:
Payment reminder: Invoice {{ $json["Invoice Number"] }} due {{ $json["Due Date"] }} - Body: Address the client by name, state the amount, include the due date, and add a polite call to action with your bank details or payment link.
Keep the tone professional but warm. A year-end reminder should acknowledge the busy season while making payment as easy as possible.
Sample Email Body (Advance Reminder)
Hi [Client Name], just a quick note that invoice [Invoice Number] for [Amount] is due on [Due Date]. Please let us know if you have any questions. Payment details are below. Thank you and happy holidays!
Sample Email Body (Overdue Notice)
Hi [Client Name], we noticed that invoice [Invoice Number] for [Amount], which was due on [Due Date], remains outstanding. Could you arrange payment at your earliest convenience? Do not hesitate to reach out if there is an issue.
Step 6: Log the Reminder and Update Status
After sending, add a second Google Sheets node to update the row: change Status from Open to Reminded and write today's date into a Last Reminder Sent column. This prevents duplicate emails and gives you a clear audit trail.
Step 7: Add an Error Handler
Connect an Error Trigger node to a Slack or email notification so you are alerted if the workflow fails. Year-end is the worst time to discover a broken automation after the fact.
Optional Enhancements
- Escalation path: If a reminder has been sent and the invoice is still unpaid after 5 days, trigger a second workflow that notifies you internally to pick up the phone.
- PDF attachment: Use n8n's HTTP Request node to pull a PDF copy of the invoice from your billing system and attach it to the email.
- Multi-language emails: Add a language field to your spreadsheet and use a Switch node to route clients to the correct email template.
- WhatsApp or SMS fallback: For high-value invoices, add a Twilio or WhatsApp node as a secondary channel if the email goes unanswered within 48 hours.
How Long Does It Actually Take?
Here is a realistic time breakdown:
- Preparing the Google Sheet or connecting your invoicing app: 5 minutes
- Building the trigger, fetch, and filter nodes: 10 minutes
- Writing and testing email templates: 10 minutes
- Adding the status update and error handler: 5 minutes
Total: roughly 30 minutes for a workflow that will save you hours every December for years to come.
Why This Beats a Manual Process Every Time
Manual reminders fail because they depend on you remembering. Automated reminders run whether you are on holiday, in back-to-back meetings, or simply overwhelmed by the year-end rush. They are consistent, personalised, and logged — exactly what a professional follow-up process should look like.
The workflow also scales effortlessly. Whether you add 10 new clients or 200 next year, the automation handles them all without extra effort on your part.
If you want to stop chasing invoices manually every December, you can build this entire reminder workflow via n8n — including 400+ integrations and a free self-hosting option — to get paid faster and close the year with cleaner books.