Account Invoice Payment Retention
This module provide a feature to plan for retention during invoice / payment. And return it at later time.
- At Vendor Bill (or Customer Invoice), user can plan the retention by percent/amount
- At Payment, to retain the amount as planned (enforce / not enforce)
- At a later time, with another Vendor Bill (or Customer Invoice), user can select the retained payment in order to return it
Note: This feature works on both customer invoice and vendor bill alike.
auto_awesome What this module does
AI-generated from the code · Odoo 16.0Plan a retention (a portion withheld) on customer invoices and vendor bills, keep it back when paying, and later return it by creating a new invoice that selects the retained amounts.
This module adds a payment retention feature to invoices and bills. Once enabled in Accounting settings, a new "Enable Payment Retention" option appears, where you also choose a Retention Payable Account, a Retention Receivable Account and a default Retention Method (Untaxed Amount or Total).
On a draft invoice or bill you can set a retention as a Percent or an Amount. Odoo computes the Retention Amount and shows the Retention Residual (what is still to be retained or returned). A check prevents the retention from exceeding the untaxed amount.
When you register a payment, a Suggested Retention is shown. You can toggle Apply Retention to withhold it, and Enforce Retention to make sure the retention is fully applied; if enforced and the residual is not zero, the payment is blocked with an error. Paying several invoices at once is not allowed when they carry a retention.
To give the retention back later, create a new invoice or bill and pick the earlier documents in the Return Retention field; the retained lines are copied in, and posting the new document reconciles them automatically.
Depends on
Required by other modules
Models and fields (5)
- res.company · extends an existing modelretention_method, retention_account_id, retention_receivable_account_id
- account.move · extends an existing modelamount_retention (Retention), retention_method, payment_retention, retained_move_ids (Return Retention), domain_retained_move_ids, retention_amount_currency (Retention Amount), retention_residual_currency (Retention Residual)
- account.move.line · extends an existing model
- res.config.settings · extends an existing modelretention_method (Retention Method), retention_account_id, group_payment_retention (Enable Invoice's Retention on Payment), retention_receivable_account_id
- account.payment.register · extends an existing modelapply_payment_retention (Apply Retention), enforce_payment_retention (Enforce Retention), retention_amount_currency (Suggested Retention)
Text generated by AI (DeepSeek) from reading the Odoo 16.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 3 confirmed, 6 with no information of 9 versions.
Sources · Odoo 15.0
Confirmed on 2026-11-03 in branch 15.0 of OCA/account-invoicing.
terminal Installation and usage
OCA documentation · Odoo 16.0Configuration
Source · Odoo 16.0- Go to menu > Invoicing > Configurations > Settings
- Enable Invoice's Retention on Payment
- Select the Retention Payable Account and Retention Receivalbe Account, make sure this account allow reconciliation
- Once setup, user will see new Retention fields in Customer Invoice / Vendor Bill.
Usage
Source · Odoo 16.0To plan for retention during invoice
- Create new Vendor Bill (or Customer Invoice).
- Specify amount to retain, by percent or amount.
- Validate invoice as per normal.
To make payment retention
- From the invoice, click Register Payment.
- On the payment window, system suggest the retention amount, click on helper toggle to apply it.
- By default, enforce retention is checked to ensure that, a valid retention amount and retention account is applied.
- Once ready, make payment as per normal. Journal Entry created with a retention account move line (to be cleared at later time).
Note: System just help to validate retention. At the end, user can ignore the retention.
To return the retained amount
- As time arrived to return the retained amount. Create the new Vendor Bill (or Customer Invoice).
- Select the partner. Return Retention field will list only uncleared retained amount for this partner.
- Select one or multiple payments (journal entry), system will auto populate the retained amount.
- Validate invoice as per normal, system will now clear (reconcile) that retention.
- Proceed to payment as per normal.
No verified information in OCA: Installation.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.