Customer Outstanding Balances Widget for Odoo 19 documentation
A guide to the overdue banner on the sales order: the three levels, how the numbers are computed, the buttons, the customer card and list, and the settings.
Documents version 1.0.1Updated Oct 23, 2026
Start here
In plain words: Before you confirm a quotation you want to know one thing: does this customer already owe you money? This module puts the answer at the top of the quotation and sales order: how much is overdue, how late, how much they owe in total, and how much you owe them. It turns red when the delay is serious.
Tip: It only reads your accounting. Nothing is blocked and nothing is changed: your salespeople simply see the facts before they promise a delivery.
What you get
| Feature | What it does |
|---|---|
| Banner on the sales order | Overdue amount, number of late invoices, days late, total owed, and the net position. |
| Two ways | Also shows what you owe the same contact (vendor bills) and the net balance. |
| Three levels | Blue for information, orange for overdue, red when the oldest invoice is late by your threshold. |
| Live numbers | Computed when the form opens from the posted accounting entries, in the company currency. |
| Whole company | Invoices of the company and of all its contacts are added together. |
| Buttons | Open the overdue invoices, or all open invoices, in one click. |
| Customer card and list | A Balances block on the customer and an optional Overdue column and filter in the customers list. |
Requirements
| Item | Details |
|---|---|
| Odoo | 19.0 (Community or Enterprise) |
| Apps needed | Sales (sale) and Invoicing (account) |
| License | OPL-1 (Odoo Proprietary License v1.0) |
Install
- Unzip the package. Inside is
taqnix_customer_balance.zip; unzip it to get the foldertaqnix_customer_balance. - 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 Customer Outstanding and press Install.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_customer_balance --stop-after-init
Settings
In plain words: Open Settings → Customer Balances. The settings belong to each company.
| Setting | What it does |
|---|---|
| Show the banner | Only when something is overdue (default), or whenever the contact has an open balance, which adds the blue banner. |
| Ignore overdue amounts below | Small amounts do not trigger the banner (default 1.00). |
| Red after | The banner is red when the oldest overdue invoice is at least this many days late (default 30). Before that it is orange. |
| Show what we owe the customer | Adds the vendor bills you owe the same contact, and the net. |
How the numbers are computed
| Number | Meaning |
|---|---|
| Overdue | Posted customer invoices past their due date and still unpaid, minus unapplied payments and credit notes, which cover the oldest invoices first. |
| Invoices | How many invoices make up the overdue amount. |
| Days late | How late the oldest overdue invoice is. |
| They owe us | All open receivables of the contact: due and not yet due, minus unapplied payments and credit notes. |
| We owe them | Open vendor bills of the same contact. |
| Net | They owe us minus we owe them. Negative means you owe them more. |
Tip: An invoice due today is not overdue yet; it becomes overdue tomorrow.
| Rule | Detail |
|---|---|
| Posted only | Draft and cancelled invoices are ignored. |
| Company currency | Amounts are in the currency of the company, converted when the invoice was posted. |
| Whole company | A customer company and all its contacts count as one. |
| Current company | In a multi-company database only the current company's entries are counted. |
On the customer card and the list
In plain words: The same numbers are on the customer, in the Invoicing tab, under Balances.
In plain words: In Customers, use the filter With overdue invoices to list who is late, and add the optional Overdue column from the column selector.
Arabic and right to left
In plain words: The banner, the settings and the buttons are translated, and the banner follows the direction of the language.
Who sees what
| Who | What they see |
|---|---|
| Any user who can open the sales order | The banner with the numbers. The numbers are computed for them even if they cannot read accounting. |
| Users with Billing or Accounting read-only | The buttons, the Balances block on the customer, the Overdue column and the filter. |
| Accounting managers | The settings. |
Important: Every user who can open a sales order sees what the customer owes. If your salespeople should not see this, do not install the module, or restrict who can open the orders.
Limits
| Limit | Detail |
|---|---|
| It does not block anything | The banner informs; it does not stop a quotation from being confirmed. |
| Sales orders only | The banner is on the sales order form. Purchase orders are not covered. |
| No ageing report | It shows the total and the oldest delay, not 30/60/90-day buckets. |
| Company currency | Amounts are in the company currency, not in the currency of the order. |
| Ledger accuracy | The numbers are as good as your reconciliation. Unreconciled bank lines do not reduce what is owed. |
| Credit limits | It does not read or enforce the credit limit of the customer. |
For developers
In plain words: Skip this chapter if you only use the module.
| Item | Details |
|---|---|
| Partner fields | tx_receivable_total, tx_receivable_overdue, tx_overdue_count, tx_oldest_overdue_days, tx_payable_total, tx_net_balance, tx_has_overdue (searchable). |
| Sales order fields | tx_bal_level (info, warning, danger), tx_bal_overdue, tx_bal_receivable, tx_bal_payable, tx_bal_net. |
| Performance | The balances of all the contacts on a page are computed with a handful of grouped queries, not one query per contact. |
# who is late, in Python
late = env['res.partner'].search([('tx_has_overdue', '=', True)])
for partner in late:
print(partner.name, partner.tx_receivable_overdue, partner.tx_oldest_overdue_days)Troubleshooting
| Problem | What to do |
|---|---|
| No banner on an order | Check the customer really has overdue invoices, that they are posted, and that the amount is above the minimum in the settings. |
| The banner is blue or missing for a small customer | Blue needs the setting whenever the contact has an open balance. |
| Numbers differ from the Aged Receivable report | This module counts the entries of the receivable and payable accounts and the current company only. Check the company and the date of the report. |
| A paid invoice still counts | The payment is not reconciled with the invoice yet. Reconcile it. |
| The buttons are missing | They need the Billing or Accounting read-only access right. |
| The customer card has no Balances block | It is in the Invoicing tab, which needs the same access right. |
Updating and removing
Replace the folder with the new version, restart Odoo and run -u taqnix_customer_balance. Your settings are kept. To remove it, uninstall it from Apps: nothing is stored apart from the four company settings.
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.