- Home
- Apps
- SaaS Tools
- Customer Payment Follow-up & Dunning
Illustrative previewA build-to-order Odoo module that automates multi-level payment reminders and dunning letters,
escalating overdue receivables through email and SMS on policies you control.
ECOSIRE scopes, builds, installs, and supports it on Odoo 17, 18, or 19.
What is Customer Payment Follow-up & Dunning?
A build-to-order Odoo module that automates multi-level payment reminders and dunning letters, escalating overdue receivables through email and SMS on policies you control. ECOSIRE scopes, builds, installs, and supports it on Odoo 17, 18, or 19. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Overdue receivables quietly drain working capital, and by the time a collections team notices, the invoice is already 60 days late. Odoo's core account app ships a basic Follow-up feature — you can define follow-up levels on account.followup.followup.line and print a reminder report — but it runs on a single global policy per company, triggers only on a manual "Follow-up Reports" review or one blunt daily cron, and has no native per-customer escalation, no SMS channel, and no way to branch behavior by customer segment, salesperson, or risk band. Credit-control teams end up exporting aged balances to a spreadsheet and chasing by hand, which is exactly where recovery slips.
This is a build-to-order module that ECOSIRE designs, builds, installs, and supports specifically for your dunning process — not a one-size download. Technically, we extend the accounting stack with configurable follow-up policies (a custom model carrying per-level day offsets, minimum-balance thresholds, channels, and template links), attach a policy to each res.partner or partner category, and wire a scheduled ir.cron that scans account.move / account.move.line for open, overdue receivables and advances each customer through their escalation ladder. Reminders are dispatched as mail.template emails and, where you use the SMS channel, via Odoo's sms framework; each step is stamped on the record with @api.depends computed fields (days overdue, current dunning level, next action date) so the state is always auditable. Dunning letters are rendered as branded QWeb PDF reports you can theme to your letterhead, and every touch is logged so a customer is never double-chased or escalated past a promise-to-pay hold.
Escalation is genuinely multi-level: a gentle reminder at day 7, a firmer notice at day 30, a formal dunning letter at day 60, and a final-demand / hand-to-legal flag beyond that — with thresholds and copy you define per policy. Automated actions (base.automation) let you fire a task, notify the account owner, or place an account on credit hold when a customer crosses a balance or age limit. Because everything is real Odoo data, the same fields drive filterable list/kanban views, an aged-dunning dashboard, and outbound triggers over the XML-RPC / JSON-RPC API so an external portal or BI tool can read collection status. Access is locked down with ir.model.access.csv plus record rules so collectors see only their assigned accounts and multi-company boundaries are respected.
Build-to-order means we start with a scoping call to map your reminder cadence, letter templates, channels, and approval rules, then deliver a working module on your target Odoo version (17.0, 18.0, or 19.0). We build and test on a staging copy of your database, run UAT with your collections team, and only then install to production with a rollback plan. Typical delivery is one working week from confirmed scope depending on how many policies, languages, and integrations you need. You receive the full source, documentation, a training session, and a post-go-live support window — and the git repository is handed to you so you own what we build.
What you get
- Installable module source code targeting your exact Odoo version (17.0, 18.0, or 19.0), Community or Enterprise
- Installation and configuration on your environment, including follow-up policies, templates, and cron setup
- Technical documentation covering models, fields, security rules, cron schedule, and the QWeb report structure
- User guide plus a live training session for your credit-control and collections team
- UAT on a staging copy of your database with sign-off before production go-live
- Documented rollback plan and a post-go-live support window for defect fixes and adjustments
- Handover of the complete git repository so you own the code and its history
- Sample dunning-letter and reminder-email templates configured to your branding and languages
Who this is for
Credit Control Manager
Owns DSO and cash collection targets. Needs a policy-driven, auditable escalation process instead of manual spreadsheet chasing, with clear reporting on who is at which dunning level and why.
Accounts Receivable / Collections Specialist
Works the daily queue of overdue accounts. Needs a single cockpit that shows exactly which customers to contact today, on which channel, with the letter or email already drafted and logged.
CFO / Finance Director
Wants working capital freed up and bad-debt risk contained. Needs threshold-based credit holds and escalation rules enforced consistently across entities, with BI-ready collection data over the API.
Odoo Administrator
Maintains the ERP and integrations. Needs a clean, upgrade-safe module with proper access rules, sensible cron scheduling, and documented code they can support long after handover.
How Customer Payment Follow-up & Dunning Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Escalation levels | Fully multi-level ladder, configurable per policy | Whatever you build and maintain yourself | Often fixed 2-3 levels, hard to change | Basic follow-up levels, one global policy |
| Reminder channels | Email + SMS on native frameworks | Depends on your build effort | Usually email only | Email / printed report only |
| Per-customer policies | Per partner, category, or segment | Possible but you design it | Rarely; mostly one-size | One company-wide policy |
| Trigger automation | Cron + `base.automation` threshold rules + credit holds | You wire the cron and rules | Limited automation, few triggers | Manual review or single daily cron |
| Fit to your process | Scoped and built to your cadence and letters | Exact fit, at full build cost | Adapt your process to the app | Take it as-is |
| Dunning letters | Branded QWeb PDFs to your letterhead | You design the report | Generic template, limited styling | Standard follow-up report |
| Support & ownership | Support window + full git repo handover | You own and maintain it | Vendor SLA, no source control | Community forums / your own team |
| API / BI access | Collection status over XML-RPC / JSON-RPC | If you expose it | Rarely exposed cleanly | Raw data only, no dunning state |
Frequently Asked Questions about Customer Payment Follow-up & Dunning
How long does delivery take?
Because this is build-to-order, we build it for your process rather than shipping a pre-made download. Typical delivery is one working week from confirmed scope, depending on how many follow-up policies, languages, channels, and integrations you need. The scoping call sets a firm timeline before any build starts.
How is this different from Odoo's built-in Follow-up feature?
Odoo core gives you one global follow-up policy per company, manual review or a single blunt cron, and email-only reminders. This module adds per-customer and per-segment policies, true multi-level escalation, an SMS channel, threshold-based credit holds, promise-to-pay pauses, a collections cockpit, and API access to collection status — the things core leaves you doing in a spreadsheet.
Which Odoo versions and editions are supported?
We build for Odoo 17.0, 18.0, or 19.0, on Community or Enterprise. Enterprise's native accounting adds features like batch follow-up reports and studio, but this module works on Community as well; we confirm your exact version and edition during scoping so the code targets it precisely.
What do support and updates look like after go-live?
Every engagement includes a post-go-live support window for defect fixes and adjustments. Because you receive the full git repository, you own the code and can maintain it in-house or retain ECOSIRE for ongoing support and version upgrades. We can quote a longer support or SLA arrangement separately if you want one.
Will it work with our existing SMS and email setup?
Yes. Email uses Odoo's standard `mail.template` and outgoing mail servers, and SMS is built on Odoo's native `sms` framework, so it uses whatever gateway you already have configured. If you use a specific SMS provider or transactional email service, we confirm it during scoping and wire it in.
Can escalation branch by customer, salesperson, or balance?
Yes. Follow-up policies attach per partner or partner category, and aged-receivable triggers can branch on days overdue, outstanding balance band, or salesperson. High-value or high-risk accounts can follow a stricter ladder while small balances follow a lighter one, all configured without touching code.
Is the customer data and access properly secured?
Access is enforced with `ir.model.access.csv` and record rules so collectors see only their assigned accounts, and multi-company record rules keep entities separated. All follow-up actions are logged in the chatter and on the record for a complete audit trail.
Related Modules

Customer Account Statement
A build-to-order Odoo module that generates branded customer account statements, running ledgers, and aged-overdue reports straight from your receivables. ECOSIRE scopes, builds, installs, and supports it on Odoo 17/18/19 after you request a quotation.

Customer Credit Limit With Approval
A build-to-order Odoo module that enforces per-customer credit limits on sales orders and routes over-limit deals through a multi-level approval chain before confirmation. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17/18/19.

CyberSource Enterprise Gateway for Odoo
A build-to-order Odoo payment provider that connects checkout to Visa CyberSource Secure Acceptance with Decision Manager fraud screening, 3DS2/SCA, and TMS tokenization. ECOSIRE scopes, builds, installs, and supports it — it is not an instant apps.odoo.com download.

Czech Republic Localization + Control Statement
A build-to-order Odoo localization for the Czech Republic covering the local chart of accounts, VAT rates and reverse-charge codes, the Kontrolni hlaseni control statement, the DPH VAT return, and ISDOC e-invoicing. ECOSIRE builds, installs, and supports it for your company after a scoping call.
Customer Payment Follow-up & Dunning
A build-to-order Odoo module that automates multi-level payment reminders and dunning letters, escalating overdue receivables through email and SMS on policies you control. ECOSIRE scopes, builds, installs, and supports it on Odoo 17, 18, or 19.
- Custom follow-up policy model with per-level day offsets, minimum-balance thresholds, and channel selection, assignable per `res.partner` or partner category
- Multi-level escalation ladder (reminder, firm notice, formal dunning letter, final demand / legal flag) with copy and timing you define per policy
- Scheduled `ir.cron` job that scans open, overdue `account.move.line` receivables nightly and advances each customer to the correct dunning level
- Automated email dispatch via `mail.template` with per-level, per-language templates and dynamic invoice/aging placeholders