Customer & Vendor Statement of Account for Odoo 19 documentation
A guide to statements of account: open items and activity statements, ageing, vendor statements, emailing in bulk and every month, and the log.
Documents version 1.0.0Updated Oct 23, 2026
Start here
In plain words: A statement of account tells a customer, in one page, what they still owe you: every unpaid invoice, how late it is, and the total. This module makes it in two clicks, as a PDF in the customer's language, and can email it for you: to one customer, to many at once, or every month automatically.
Tip: It works for vendors too: a statement of what you owe them.
What you get
| Feature | What it does |
|---|---|
| Open items statement | Every unpaid or partly paid invoice as of a date: original amount, amount still open, due date, days overdue. |
| Activity statement | All the movements of a period with the opening balance, a running balance and the closing balance. |
| Ageing | Not due, 1-30, 31-60, 61-90 and over 90 days, plus what is on account. Exact as of the statement date. |
| Customers and vendors | What they owe you, or what you owe them. |
| Print, preview, email | From the partner, from the menu, or from the list for many partners at once. |
| Monthly run | Customers with a balance receive their statement by email each month, with a log. |
| Languages | The PDF and the email are in the partner's language, Arabic included, right to left. |
Requirements
| Item | Details |
|---|---|
| Odoo | 19.0 (Community or Enterprise) |
| Apps needed | Invoicing (account) |
| PDF printing | Odoo's normal setup with wkhtmltopdf |
| An outgoing mail server, to send statements | |
| License | OPL-1 (Odoo Proprietary License v1.0) |
Install
- Unzip the package. Inside is
taqnix_partner_statement.zip; unzip it to get the foldertaqnix_partner_statement. - 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 Statement of Account and press Install.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_partner_statement --stop-after-init
Make a statement
In plain words: Open a customer or a vendor and press Statement. Or select several partners in a list, open Actions and choose Statement of account. A third way: Invoicing → Customers → Statement of Account.
| Choice | Meaning |
|---|---|
| Customer or vendor statement | What they owe you, or what you owe them. |
| Open items as of a date | The invoices still unpaid on that date. |
| All activity of a period | Every movement from the start date to the end date, with the balances. |
| Skip partners with nothing to show | Partners without open items or movements are left out. |
| Print / Send by email / Preview | The PDF, an email with the PDF attached, or the page on screen. |
The open items statement
In plain words: The classic statement: what is still unpaid, with the due date and how many days late.
| Column | Meaning |
|---|---|
| Original | The amount of the invoice, credit note or payment. |
| Open | What is still unpaid on the statement date. |
| Days overdue | Days since the due date, in red when late. |
The activity statement
| Part | Meaning |
|---|---|
| Opening balance | What was owed before the start date. |
| Charges | Invoices and debit notes. |
| Payments | Payments and credit notes. |
| Balance | The running balance after each line. The last one is the closing balance. |
Ageing and “on account”
In plain words: The table at the bottom splits what is open by how late it is. It is exact as of the statement date: a payment made after that date does not reduce the statement.
| Column | Meaning |
|---|---|
| Not due | Open items whose due date is not reached. |
| 1-30, 31-60, 61-90, Over 90 days | Open items by days past the due date. |
| On account | Payments and credit notes not yet applied to an invoice. They reduce the total. |
| Total | The total open, the same as on the statement. |
Tip: To clear a customer's “on account” amount, reconcile the payment with the invoice in Odoo; the statement follows.
Vendor statements
In plain words: Choose Vendor statement to list what you owe a vendor. Amounts are positive when you owe them.
Email the statement
In plain words: Send by email sends the PDF to the partner's email address, in the partner's language, with the total and the overdue amount in the message.
| Situation | What happens |
|---|---|
| Many partners at once | One email each. The message tells how many were queued and how many have no email address. |
| Partner without an email address | Nothing is sent; the Statement Log says so. |
| After sending | A short note on the partner says what was sent; the log keeps the balance. |
Every month, by itself
In plain words: In Settings → Statements switch on Send statements every month, choose the day (1 to 28) and the smallest balance. Once a month, from that day, every customer above that balance who has an email address receives the statement of open items.
Tip: Find the log in Invoicing → Reporting → Statement Log.
Arabic and right to left
In plain words: The statement follows the language of the partner. For an Arabic-speaking customer the headings, the dates and the layout are Arabic and right to left.
Limits
| Limit | Detail |
|---|---|
| Company currency | Amounts are in the company currency, not in the currency of each invoice. |
| Receivable and payable accounts | Only the entries of the receivable (customers) or payable (vendors) accounts are listed. |
| Posted entries | Draft and cancelled invoices are not shown. |
| One address | The email goes to the partner's email address, not to each contact. |
| One company | In a multi-company database only the current company is shown. |
For developers
In plain words: Skip this chapter if you only use the module.
| Item | Details |
|---|---|
| Engine | taqnix.statement.engine.get_data(partner, kind, statement_type, date_from, date_to) returns the numbers, with positive meaning “owed”. |
partner._tx_send_statement(kind, statement_type, date_to) sends it and writes the log. | |
| Report | taqnix_partner_statement.statement; the options travel under data['options']. |
data = env['taqnix.statement.engine'].get_data(partner, 'customer', 'open', None, fields.Date.today())
print(data['total_open'], data['overdue'], data['aging'])
# email it
partner._tx_send_statement('customer', 'open')Troubleshooting
| Problem | What to do |
|---|---|
| “Nothing to print” | The partner has no open items on that date. Untick “Skip partners with nothing to show” to print an empty statement. |
| A paid invoice still appears | The payment is not reconciled with the invoice yet, or it is dated after the statement date. |
| The partner got no email | Check the partner has an email address and look at the Statement Log. |
| Monthly statements did not go out | Check the setting is on, that the day has come, and that Odoo's scheduled actions run. |
| The PDF is empty or fails | Check that wkhtmltopdf works for other Odoo reports. |
Updating and removing
Replace the folder with the new version, restart Odoo and run -u taqnix_partner_statement. Settings and the log are kept. To remove it, uninstall it from Apps: the log is 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.