Customer Statements & Ageing
by TechnoVision · Odoo App
Opening balance, every movement, closing balance - and the arithmetic reconciles, with a test that fails if it ever stops. Ageing runs from the due date, disputed invoices are shown as disputed, and the PDF is bilingual because the Arabic half is what half your customers read.
One-off licence per Odoo instance. The store bills in its own base currency, so checkout may differ by a few cents. That is the add-on price. Installation and support are optional and priced separately.
Security Center
Live82
Score
1.2k
Events / 24h
3
Alerts
Export volume · 14 days
Unusual export detected
res.partner · 4,812 rows · outside business hours
Illustrative UI. Product screenshots to be dropped into this frame.
What it does
Opening plus charges minus credits equals closing, with a test that fails if it ever stops being true. That sounds like a low bar until you have received a statement whose total does not match its own lines - after which the conversation is about the arithmetic rather than about paying.
An invoice on 60-day terms issued 45 days ago is not overdue. Ageing from the invoice date is the common mistake and a costly one: the customer knows their own terms, so a column that is visibly wrong takes the credibility of the whole document with it.
Badged, listed, and kept out of the ageing buckets. Sending somebody a statement that ignores a query they already raised reads as either not listening or as pressure - and it means the total overdue is a figure you can defend in the conversation that follows.
English and Arabic in a single template. Two templates drift apart, and the one that drifts is always the one the customer reads.
Following Odoo own parent and child contacts, so a head office asking what the group owes is not given a number missing three of its own sites.
The Statements User group implies accounting read access rather than the module reaching for sudo. Otherwise a statement would be a neat way around multi-company rules: generate one for a partner in a company you cannot see, and read their invoices off the PDF.
Pricing & Services
The add-on licence is the product. Installation and a support plan are separate, optional, and neither is added to anything unless you choose it. The licence is bought into your own account, so you own it outright whether or not you ever buy a service from us.
The module, bought from the Odoo Apps Store into your own account.
$35
one-off, per Odoo instance · paid to the Odoo Apps Store
Installs and reads your ledger. Ageing needs no configuration to be correct.
$149
one-off · paid to TechnoVision
Twelve months of updates and help with the module, on top of what every licence already includes.
$90
per 12 months · paid to TechnoVision
A support plan adds to what you already have. It never replaces it: defect fixes and help with the module stay free for every licence holder, plan or no plan.
Supported: Odoo 18 and 19, Community and Enterprise. Licensed per Odoo instance, with no user limit and no expiry. Prices exclude any tax that applies where you are, and we tell you before you pay if any is due.
Demo
Recorded from a running Odoo 18 with real records. No slides, no mock-ups, and nothing sped up.
Screenshots
4 captures of the shipped product: the document the customer gets, ageing on the record, a different ageing profile, statements per customer.

The document the customer gets

Ageing on the record

A different ageing profile

Statements per customer
How it works
Generate. You get the opening balance, the movements in order, the closing balance and six ageing buckets.
A disputed invoice appears with a badge and outside the ageing, so the overdue total is one you can stand behind.
One PDF, English and Arabic. Send it however you send things - this module does not email anybody by itself.
FAQ
No. There is no dunning engine, no reminder emails and no escalation levels. Version 1.x had one and it duplicated our Payment Reminders module - a customer running both received two letters about one debt, so the engine was removed in 2.0.0.
Only if you want chasing. Neither module depends on the other. Run both and the dispute flag here also stops the other one chasing that invoice - the flag lives on the invoice, so both read it without either knowing the other exists.
Because that is when money becomes late. An invoice on 60-day terms issued 45 days ago is not overdue, and a statement claiming it is will be recognised as wrong by the person reading it.
Disputed keeps the invoice visible and out of the ageing; use it for a genuine query. Excluded removes it entirely and is only correct when the document is not part of the account at all. Excluding does not make them owe less, it stops the statement claiming they do.
They get one statement in one currency, converted at each document own date. Multi-currency statements are not implemented, and a single honest figure beats silently mixing units.
Neither yet. Statements are produced and sent from the back office, and the PDF is the deliverable.
Nowhere. The three reminder tables keep their rows and nothing reads them any more. That is your record of who was chased, and an upgrade should not delete it. The server log names them with row counts if you would rather drop them.
The module itself, for one Odoo instance, with no user limit and no expiry; every 18.0 release of the module, including security fixes; the module documentation, in the module and on this site; and defect fixes and help with configuration, at no extra cost and with no support plan required. It is a one-off licence for one Odoo instance, with no user limit and no expiry. It does not include installation on your instance, and configuration against your data; changes to the module for your own requirements; migration of the module or your data to another Odoo series; and work on your Odoo, your server, your network, or on other vendors’ modules.
No, and it is not hidden in the price either. Installation and configuration is a separate, optional service at $149 one-off. It covers remote installation on your instance; initial configuration of the module settings; and compatibility verification against your Odoo version and edition. If you or your partner install Odoo modules already, buy the licence on its own and skip it — most buyers of a module this size do.
Odoo 18 and 19, on Community and Enterprise. We do not claim a series until there is a branch for it, its tests pass on that series, and somebody has run it there — so the list on this page is what is actually supported rather than what is planned.
Twelve months of module updates, including security fixes; configuration support by email; priority handling: your ticket is looked at before unpaid enquiries; and help reproducing and reporting a defect, and a fix or a workaround. It runs for twelve months at $90 and is bounded by stated limits rather than by the word "reasonable": Up to 10 support requests in the twelve months; up to 4 hours of remote assistance in total; one Odoo minor-version upgrade of the module, within the same series; response within 2 business days, Sunday to Thursday, Cairo time; and covers the module. It does not cover your Odoo, your server, your network, or work on other modules.. The plan runs for 12 months from the day it starts and then stops. It renews only if you ask us to renew it — nothing renews automatically and no card is stored. It does not cover your Odoo, your server, your network, your backups, or other vendors’ modules; custom development or changes to how the module behaves; migration to another Odoo series — 18.0 to 19.0 is a project, not a ticket; on-site attendance, and work outside the hours below; and anything an external vendor charges for.
No, and this is the line worth being clear about. Defect fixes, at no charge, for the life of the 18.0 series; help when the module does not behave as its description says it does; answers to configuration questions about the module itself; and security fixes, released to everyone whether or not they hold a support plan — all of that comes with the licence, for every buyer, at no extra cost and whether or not a plan is ever bought. A paid plan adds updates, priority over unpaid enquiries and an allowance of assistance hours on top. It never takes anything away.
No, in any of the three options. A change to how a module behaves, a migration between Odoo series, and connecting a system we do not publish a connector for are each their own piece of work, quoted on their own. They are listed as exclusions on the cards rather than left to be discovered: they are the three things buyers most often assume are covered.
Use the buttons in the Pricing & Services section above. Both have a price, so the button takes you to a short form, shows you the total and what it covers before you commit, and creates a numbered order we reply to. No card details are taken on this site, and nothing is added to anything unless you choose it.
Install from Odoo Apps, or talk to us about a guided rollout across multiple companies.