Complimentary Invoice Line
Define Invoice Lines for complimentary Products.
Invoice Lines set as Complimentary will be charged on a configured account instead of the invoice's account.
For example: You are invoicing coffee to a customer and you want to give them napkins for free.
The Invoice Lines are:
+-----------------+-------------+-----------+---------------+-----+ | Account | Name | Price | Complimentary | Tax | +=================+=============+===========+===============+=====+ | Receivable | Coffee | 100.00 | | 22% | +-----------------+-------------+-----------+---------------+-----+ | Product Sales | Napkins | 10.00 | True | 22% | +-----------------+-------------+-----------+---------------+-----+
Invoice total is:
(100 + 100 * 22%) + (10 + 10 * 22%) = 122 + 12.2 = 134.2.
When confirmed, the created Journal Items are:
+-----------------+-------------+-----------+-----------+ | Account | Name | Debit | Credit | +=================+=============+===========+===========+ | Receivable | | 122.00 | | +-----------------+-------------+-----------+-----------+ | Tax Received | | | 24.20 | +-----------------+-------------+-----------+-----------+ | Complimentary | Napkins | 12.20 | | +-----------------+-------------+-----------+-----------+ | Product Sales | Napkins | | 10.00 | +-----------------+-------------+-----------+-----------+ | Product Sales | Coffee | | 100.00 | +-----------------+-------------+-----------+-----------+
The Journal Entry Total is still 134.20 but the Invoice's Amount Due becomes 122: the Napkin and its Tax won't be paid by the customer.
auto_awesome What this module does
AI-generated from the code · Odoo 12.0Mark invoice lines as complimentary so free products are posted to a dedicated account instead of the normal sales account. Configure the complimentary account in Invoicing settings.
This module lets you give products for free on a customer invoice while still showing their value, and it automatically posts the free amount to a separate account.
- On each invoice line you get a new "Complimentary" checkbox, shown next to the unit price. On the invoice itself there is a "show_complimentary_flag" option that controls whether the Complimentary column is visible in the invoice lines list.
- In Invoicing settings (Accounting configuration) you can set a "Complimentary Account". This account is stored on the company.
- When the invoice is confirmed, for every line marked as Complimentary the module creates an extra journal item that uses the Complimentary Account, removes taxes, and posts a negative amount equal to the line total. This offsets the line so the customer is not charged for it, while the value is still tracked in the chosen account.
- If a line is marked Complimentary but no Complimentary Account is configured on the company, confirmation is blocked with an error message listing the affected lines and the company.
The module extends account.invoice, account.invoice.line, res.company and res.config.settings.
Depends on
Models and fields (4)
- res.company · extends an existing modelcomplimentary_account_id
- account.invoice · extends an existing modelshow_complimentary_flag
- res.config.settings · extends an existing modelcomplimentary_account_id
- account.invoice.line · extends an existing modelis_complimentary (Complimentary)
Text generated by AI (DeepSeek) from reading the Odoo 12.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: 1 confirmed, 8 with no information of 9 versions.
Sources · Odoo 12.0
Confirmed on 2026-11-03 in branch 12.0 of OCA/account-invoicing.
terminal Installation and usage
OCA documentation · Odoo 12.0Configuration
Source · Odoo 12.0Open Invoicing > Configuration > Settings and set the Complimentary Account.
Usage
Source · Odoo 12.0In the invoice, enable Show Complimentary Flag; then set the flag Complimentary in any Invoice Line as needed.
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.