Automatic Payment Reminders (Dunning) for Odoo 19 documentation
A guide to automatic payment reminders: the levels and their texts, when a reminder is sent, promise to pay and hold, the worklist, the email, follow-up tasks and the log.
Documents version 1.0.0Updated Oct 23, 2026
Start here
In plain words: Late payments cost you money and chasing them costs you time. This module reminds customers of overdue invoices by email, automatically, level by level: a friendly note after a week, a second reminder after two, a final notice after a month. You write the texts once, in as many languages as you need, and Odoo does the rest, every day.
Tip: Nothing is sent until you switch it on in the settings. Until then you can read the worklist and send a reminder by hand.
What you get
| Feature | What it does |
|---|---|
| Reminder levels | Any number of levels by days after the due date, each with its own subject and text. |
| Daily schedule | Every day, customers whose invoices reached a new level get one email. |
| One email per customer | It lists every overdue invoice, with a link to view and pay it. |
| Promise to pay | Put a date on an invoice: no reminder is sent for it until that date has passed. |
| No reminders | A tick on the customer stops automatic reminders for it. |
| Follow-up task | At the levels you choose, a task is planned for your collector. |
| Languages | Texts and email in the customer's language, Arabic included, right to left. |
| Worklist and log | All overdue invoices with their next level, and a log of every reminder. |
Requirements
| Item | Details |
|---|---|
| Odoo | 19.0 (Community or Enterprise) |
| Apps needed | Invoicing (account) |
| An outgoing mail server | |
| License | OPL-1 (Odoo Proprietary License v1.0) |
Install
- Unzip the package. Inside is
taqnix_payment_reminders.zip; unzip it to get the foldertaqnix_payment_reminders. - Copy the folder into one of the
addons_pathfolders of your Odoo server and restart Odoo. - Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
- Remove the “Apps” filter, search Payment Reminders and press Install.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_payment_reminders --stop-after-init
The reminder levels
In plain words: Open Invoicing → Configuration → Reminder Levels. Three levels are ready: 7, 15 and 30 days after the due date. Change them, or add your own.
| Field | Meaning |
|---|---|
| Days after the due date | The level is reached when an invoice is at least this many days late. Two levels cannot share the same number. |
| Email subject / Message | The texts of the email. Change the language at the top of the form to write them for another language. |
| Create a follow-up task | Plans a task for your collector when this level is sent. |
| Task for | Empty: the salesperson of the customer, or the person who ran the reminder. |
| Placeholder | Replaced by |
|---|---|
{company} | Your company name. |
{partner} | The customer's name. |
{total} | The amount overdue, in the company currency. |
{count} | The number of overdue invoices listed. |
{oldest} | The days overdue of the oldest invoice. |
Settings
In plain words: Open Settings → Payment Reminders.
| Setting | What it does |
|---|---|
| Send payment reminders | Switches the daily reminders on for the company. |
| Only if the overdue amount is above | Customers whose overdue invoices together are below this amount are not reminded. |
| Days between two reminders | A customer is not reminded again before this many days have passed. |
When is a reminder sent?
| Rule | Detail |
|---|---|
| A level is reached | An invoice reaches a level when it is at least that many days past its due date. |
| Once per level | An invoice is reminded once at each level. It moves to the next level only when its days are reached. |
| One email per customer | If several invoices are late, they are all in one email, at the highest new level. |
| Promised invoices | An invoice with a promise date in the future is left out. |
| Customers on hold | Customers with No payment reminders are skipped. |
| Minimum amount and interval | Small totals are skipped, and a customer is not reminded again within the interval. |
| Who receives it | The invoice contacts of the customer (contacts of type Invoice address with an email), else the customer's own email address. |
| No email address | Nothing is sent, it is logged, and the invoice is tried again the next day. |
The worklist
In plain words: Invoicing → Customers → Overdue Reminders lists every overdue invoice: the days overdue, the last reminder and the level it will reach next.
The email
On the invoice and the customer
In plain words: On a customer invoice you find Promised to pay on and, once a reminder was sent, the level and the date. Send reminder sends one now.
| Button | What it does |
|---|---|
| Send reminder (invoice or customer) | Sends a reminder now for all the overdue invoices of the customer, at the level the oldest has reached (the first level if none yet). It ignores the schedule, the interval and the hold. |
The follow-up task
In plain words: Tick Create a follow-up task on a level, usually the last one, and a task is planned on the customer for your collector when that level is sent.
The log
Tip: Find it in Invoicing → Reporting → Reminder Log.
Limits
| Limit | Detail |
|---|---|
| Customer invoices only | Credit notes, vendor bills and draft invoices are ignored. |
| No attachments | The email lists the invoices and links to them; it does not attach the PDFs. |
| Email only | Reminders are sent by email, not by SMS or WhatsApp. |
| Company currency for the minimum | The minimum amount is compared in the company currency; the list shows each invoice in its own currency. |
For developers
In plain words: Skip this chapter if you only use the module.
| Item | Details |
|---|---|
| Engine | taqnix.reminder.engine: _plan(company) says who is reminded, _send(...) sends and logs, _cron_send_reminders() is the daily run. |
| Invoice fields | tx_reminder_level_id, tx_reminder_date, tx_promise_date, tx_days_overdue, tx_next_level_id. |
| Customer fields | tx_reminder_hold, tx_reminder_last_date. |
# who would be reminded today?
plan = env['taqnix.reminder.engine']._plan(env.company)
for partner, (level, invoices) in plan.items():
print(partner.name, level.name, len(invoices))
# remind a customer now
partner.action_tx_send_reminder()Troubleshooting
| Problem | What to do |
|---|---|
| Nothing is sent | Check that Send payment reminders is on, that a level has been reached, and that Odoo's scheduled actions run. |
| A customer is never reminded | Look for the No payment reminders tick, a promise date, or a total below the minimum amount. |
| The email did not arrive | Check the log: No email address means the customer has none; otherwise check your outgoing mail server. |
| The text is in the wrong language | The language comes from the customer's contact form; write the text of the level in that language. |
| A reminder was sent twice | A different invoice reached a new level, or you used Send reminder by hand. |
Updating and removing
Replace the folder with the new version, restart Odoo and run -u taqnix_payment_reminders. Your levels and settings are kept. To remove it, uninstall it from Apps: the levels and the log are deleted with it.
Support
Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.