OdooWiki OCA HUB

Payment Register with Multiple Deduction

account_payment_multi_deduction folder_open OCA/account-payment open_in_new
Accounting License: AGPL-3

This module extend invoice(s)'s register payment feature, from "Mark invoice as fully paid" with a single writeoff amount, to "Mark invoice as fully paid (multi deduct)" which allow multiple deduction amounts.

Note: We use the word "Deduction", as the diff amount can be anything not only to writeoff.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Adds a new option in the Register Payment wizard to mark an invoice as fully paid using several deduction lines instead of a single write-off amount. Each deduction can have its own account, label, amount and analytic distribution.

When you register a payment on an invoice, the wizard now offers an extra choice in the payment difference handling field: "Mark invoice as fully paid (multi deduct)". Selecting it replaces the single write-off account with a table of deductions.

In that table you can add as many deduction lines as needed. Each line has a label, an amount, an optional account, and an analytic distribution. A line can also be flagged as "Open" to keep it open instead of closing it against the invoice; when you tick Open, the account and label are cleared automatically.

A "Remainings" field shows how much of the payment difference is still not covered by the deductions. The module blocks saving if the total of the deduction lines does not exactly match the payment difference, so the invoice is always fully reconciled.

When the payment is created, each deduction line becomes a write-off line on the payment, with the correct sign depending on whether the payment is incoming or outgoing, and with the analytic distribution you entered. The module also adds an analytic distribution field to the standard single write-off option, and marks generated write-off lines so they can be identified.

It touches the payment register wizard, invoice lines, and adds a new deduction model. Access is given to users with billing rights.

Depends on

account
Models and fields (3)
  • account.move.line · extends an existing modelis_writeoff
  • account.payment.register · new modeldeduction_ids (Deductions), deduct_residual (Remainings), payment_difference_handling, deduct_analytic_distribution
  • account.payment.deduction · new modelname (Label), amount (Deduction Amount), is_open (Open), account_id, company_id, currency_id, register_payment_id

Text generated by AI (DeepSeek) from reading the Odoo 18.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-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 7 confirmed, 2 with no information of 9 versions.

Sources · Odoo 14.0

Confirmed on 2026-11-03 in branch 14.0 of OCA/account-payment.

terminal Installation and usage

OCA documentation · Odoo 18.0
  • Select 1 invoice, either on form view or tree view
  • Click to Register Payment, a payment wizard will open
  • Reduce the amount to pay and payment difference amount will appear
  • Choose "Mark invoice as fully paid (multi deduct)", and a new deduction table will appear
  • Add deduction amount, make sure total deduction amount is equal to the payment difference
  • Click validate to finish the payment

Note: this feature only works for 1 invoice payment

No verified information in OCA: Installation, Configuration.

info

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.