This guide explains how Odoo decides when to send a payment reminder, and how to give every invoice its own schedule, for example 3 days before the due date and 3, 7 and 15 days after it. The short answer: standard follow-ups work per customer. Odoo tracks each invoice's progress, but the reminder date and the email belong to the customer, so one email covers all of their open invoices. For independent schedules, create one automation rule per reminder step on the invoice due date, with no custom code.
It is written for accountants, credit controllers and owners, and was verified in the Odoo 19 source code. Odoo 18 was not checked, so compare labels with your screens if you use it.
Before you start
- Version and edition: Odoo 19. Follow-ups are an Enterprise feature, installed automatically with Enterprise accounting. Automation rules are a Community app available in both editions; if the Automation menu below is missing, install Automation Rules from the Apps menu.
- Access rights: Follow-up Levels need Accounting access set to Administrator. Automation rules and email templates need the Settings Administrator role.
- Developer mode: a setting that reveals the technical menus used below. In the Settings app, under Developer Tools, click Activate the developer mode.
- Terms used: a follow-up level is one step in the reminder ladder, a number of days from the due date (negative means before it). An automation rule is an instruction Odoo carries out by itself when a condition is met. An email template is a saved message filled in with each record's details.
How standard follow-ups choose what to send
Levels are set in the Accounting app under Configuration > Invoicing > Follow-up Levels. Each has Due Days, which can be negative to remind before the due date, and an Automatic option that lets Odoo send it unattended. A daily job then works like this:
- Each invoice remembers its last level. When a reminder goes out, each open invoice moves to the highest level its days overdue qualify for, up to the level sent.
- The customer gets one level. Odoo works out the next step for each open invoice and uses the highest, so the invoice furthest along the ladder sets the level for the whole account.
- The customer gets one date. After each reminder, the customer's Next reminder date moves forward by the gap in days between the level just sent and the next one. Nothing is sent before that date.
- The customer gets one email. It lists every open item on the account, with overdue due dates in red. If the level has Attach Invoices ticked, the invoice PDFs are attached.
A worked example: levels at -3, +3, +7 and +15 days, all Automatic, and one customer with invoices due on 5, 10 and 15 September. Per-invoice schedules would remind on 7, 13, 17 and 25 September for the second invoice and 12, 18, 22 and 30 September for the third. Assuming no payments arrive, standard follow-ups send:
- 2 September: the -3 level goes out, listing all three invoices. Next reminder becomes 8 September.
- 7 September: nothing, because the customer's date has not arrived.
- 8 September: the +3 level, again listing all three. Next reminder becomes 12 September.
- 12 September: the +7 level. Next reminder becomes 20 September.
- 20 September: the +15 level.
Four emails, all timed by the first invoice. The other two never get reminders on their own dates.
Create a reminder email template
- With developer mode on, open the Settings app and go to Technical > Email > Email Templates. Click New.
- Enter a Template Name, such as Invoice due in 3 days, and set Applies to to Journal Entry, which is how Odoo stores invoices.
- Write the Subject and, on the Body tab, the message. Typing /field inserts invoice details such as the due date.
- On the Settings tab, leave Default Recipients ticked so the email goes to the customer on the invoice. Save, and repeat for each wording you need.
Set up one rule per reminder step
- Open the Settings app and go to Technical > Automation > Automation Rules. Click New and name the rule, such as Reminder 3 days before due.
- Set Model to Journal Entry. The Trigger field appears.
- Set Trigger to Based on date field, then choose Due Date in the date field selector next to it. The Delay fields appear.
- Set Delay to 3, the unit to Days and the mode to Before. Odoo only accepts a positive delay, so reminders ahead of the due date use Before.
- In Apply on, add three conditions: Type is Customer Invoice, Status is Posted, and Payment Status is Not Paid or Partially Paid.
- On the Actions To Do tab, add an action with Type set to Send Email and choose your template in Email Template.
- Change Send Email As to Email. It starts on Message, which posts the text on the invoice and only notifies that invoice's followers.
- Save. Create three more rules the same way, with Delay 3, 7 and 15 and the mode After.
Each unpaid invoice is now judged on its own due date, so a customer with three overdue invoices receives three reminders. If follow-ups also run, the customer gets both; set Reminders to Manual in the Invoice Follow-ups section of the customer's Accounting tab, or untick Automatic on your levels.
Check that it worked
- Before creating the first rule, create and post an invoice for a test customer whose email address is your own, with a Due Date three days from today.
- When you create the rule, add a fourth condition to Apply on: Partner is that test customer.
- In the Settings app, go to Technical > Automation > Scheduled Actions, open Automation Rules: check and execute and click Run Manually.
- Go to Technical > Email > Emails. A new email to your address with the template's subject should be listed. It is delivered when the outgoing mail queue next runs.
- Remove the test condition and save.
Pitfalls to plan for
- The first run catches old invoices. A new rule has no previous run, so its first run picks up every matching invoice whose trigger day has passed. Testing with one customer avoids that, because afterwards the rule only looks at trigger days since its last run.
- Late invoices can be skipped. An invoice posted after its trigger day, such as one due in two days for the 3-days-before rule, does not get that reminder.
- You choose the day, not the hour. With delays in days, the job behind these rules runs every four hours by default, so emails go out on the right day at the first run.
What changes in Odoo 20
In Odoo 20, follow-ups are switched on with the Automatic Invoice Reminders setting in the Accounting settings. They remain customer-level: Odoo picks each customer's open invoice with the earliest due date and uses its progress to decide the next reminder. The automation rule labels above are unchanged.
Steps verified on Odoo 19. Menus and labels can differ on other versions.
Common questions
Are Odoo follow-up levels set per customer or per invoice?
Per customer. Odoo records a level on each open invoice, but the customer gets one level, one next reminder date and one email listing all open items. The invoice furthest along the ladder sets the customer's level.
Can an Odoo follow-up level send a reminder before the due date?
Yes. The Due Days on a follow-up level can be negative, for example -3 to remind three days before the due date. The reminder still goes to the customer and covers all of their open invoices.
How do I send a reminder for each invoice on its own due date?
Create an automation rule on Journal Entry triggered by the Due Date field, with a delay in days set to Before or After, filtered to posted, unpaid customer invoices, and a Send Email action. Create one rule for each reminder step.
Why did my automation rule post a message instead of emailing the customer?
The Send Email action starts with Send Email As set to Message, which posts the text on the record and notifies only its followers. Change it to Email to send the template to its recipients.
Do automation rules need Odoo Enterprise?
No. Automation Rules is a Community app, so it works in both editions. Follow-ups, the built-in reminder ladder, are an Enterprise feature.
Talk to the team.
If you are setting this up, or Odoo is not behaving the way this guide describes, book a 30-minute call. We will look at your configuration and tell you what it needs. Calgary studio, in-house team, no offshore handoffs.
Book the call →