OdooWiki OCA HUB

Account Payment Terms Discount

account_payment_term_discount folder_open OCA/account-payment open_in_new
Accounting & Finance License: AGPL-3

This module allows to set special discount for customer within periods of discount days.

auto_awesome What this module does

AI-generated from the code · Odoo 16.0

Configure early payment discounts on payment terms and let Odoo automatically calculate and apply the discount when registering a customer or vendor payment.

This module adds early payment discount support to payment terms. On a payment term you can tick 'Early Payment Discount' and choose whether to exclude shipping charges and taxes from the discount base. Each payment term line can store a discount percentage, discount days, and the accounts used to post the discount on sales and purchases.

On invoices, Odoo shows a 'Discount Details' group with the possible discount amount and the last date to take it. The invoice list also shows these two columns. A 'Discount taken' field appears once the invoice is posted and a discount is available.

When you register a payment, the wizard automatically fills the discount amount and, if you pay within the discount period, proposes to reconcile the difference against the configured discount account with the label 'Payment Discount'. After the payment is created, the invoice records the discount taken and clears the possible discount.

Products can be flagged to exclude their shipping amount from the discount base. The module works on account.move, account.payment.term, account.payment.term.line, product.template and the payment registration wizard.

Depends on

purchaseaccount
Models and fields (5)
  • account.move · extends an existing modeldiscount_amt (Discount Possible), discount_date, discount_taken (Discount taken), shipping_lines_total, check_payment_discount
  • product.template · extends an existing modelis_exclude_shipping_amount (Exclude Shipping Amount)
  • account.payment.term · extends an existing modelis_discount (Early Payment Discount), is_exclude_shipping_lines (Exclude Shipping from Discount), is_exclude_taxes_discount (Exclude Taxes from Discount)
  • account.payment.register · extends an existing modelinvoice_id (Invoice), discount_amt, amount_helper (Amount helper)
  • account.payment.term.line · extends an existing modelis_discount (Early Payment Discount), discount_income_account_id (Discount on Purchases Account), discount_expense_account_id (Discount on Sales Account)

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-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 2 confirmed, 7 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 16.0
  • Go to Accounting > Configuration > Management > Payment Terms
  • Create payment terms. Make sure the is cash discount box is checked.
  • Add landed costs by selecting the landed cost product and entering the percentage
  • Add terms lines and provide discount percentage, discount days, expense and income account.
  • Create customer invoice and validate it.
  • Apply register payment and set payment date which come eariler to discount days. For example: customer invoice amount is $1,000 and special discount(5%) available if payment done within 10 days. If customer will pay within 10 days, then register payment amount will be $950. System will make it as paid invoice. Because $50 is 5% discount of $1000 (customer invoice total amount.) If customer will pay $900 then invoice will be stay in open state. Because $100 is greater than of $50.

No verified information in OCA: Installation.

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.