Purchase Deposit Company Amount
This module books a foreign-currency purchase deposit at the company-currency amount actually paid and carries that figure through to the final bill, so the deposit account clears to zero and the exchange-rate difference lands in the inventory cost of the goods instead of being stranded on the balance sheet.
In detail:
- Adds a Company Currency Amount field to the deposit line of a deposit bill, which forces the line's balance to the amount entered instead of converting the foreign currency amount at the exchange rate.
- Carries the company currency value of a posted deposit bill over to the deposit offset line of the final bill, so the deposit account closes out at the amount that was actually paid.
- Books the resulting exchange rate difference into the product lines, and reflects it in the stock valuation of the received goods.
The field is only available on the deposit line of a deposit bill raised in a foreign currency, and the column is hidden everywhere else. Everything on the final bill is derived from it, and a deposit nobody entered an amount for keeps the standard rate conversion throughout.
auto_awesome What this module does
AI-generated from the code · Odoo 16.0Lets you enter, on a foreign-currency deposit vendor bill, the company-currency amount you actually paid, so the deposit is booked at the real paid value and the final bill clears the deposit account exactly.
This module refines how purchase deposits paid in a foreign currency are recorded in Odoo's accounting.
On a vendor bill that books a deposit (created through the Register Deposit wizard) and that is in a foreign currency, a new optional column "Company Currency Amount" appears on the invoice lines. You can type there the company-currency amount you really paid for the deposit line. When filled, the line's accounting balance is forced to that amount instead of being converted at the exchange rate; the foreign-currency amount stays as it is. The field is hidden and refused on any other bill or line.
When the deposit bill is posted, the paid company-currency value is stored on the related purchase order line. The final vendor bill then uses that stored value on its deposit-offset line, so the deposit account closes out at the amount actually paid, whatever the exchange rate has done since.
Any exchange-rate difference is spread over the regular product lines of the final bill, which affects the stock valuation of the received goods. Because of this, posting is blocked with an error if the final bill carries the whole deposit but does not invoice the whole order: a partial bill would load the difference onto the quantities it happens to carry. The message suggests clearing the Company Currency Amount on the deposit bill to fall back to standard conversion.
It touches account.move, account.move.line and purchase.order.line, and adds a column to the standard vendor bill form.
Depends on
Models and fields (3)
- account.move · extends an existing modelis_deposit (Is a Deposit Bill), allow_company_amount
- account.move.line · extends an existing modelcompany_amount (Company Currency Amount)
- purchase.order.line · extends an existing modelcompany_currency_id (Company Currency), deposit_company_amount (Deposit Company-Currency Amount)
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: 1 confirmed, 8 with no information of 9 versions.
Sources · Odoo 16.0
Confirmed on 2026-11-03 in branch 16.0 of OCA/purchase-workflow.
terminal Installation and usage
OCA documentation · Odoo 16.0Usage
Source · Odoo 16.0Register the deposit with the standard Register Deposit wizard, and enter the company currency amount actually paid in the Company Currency Amount column of the deposit bill before posting it. The column is optional, and can be shown from the bill line list.
Create the final bill from the purchase order as usual. The deposit offset line is pinned to the amount entered on the deposit bill, and the exchange rate difference is added to the product lines.
The example below follows a purchase order of USD 100 with a 30% deposit, where the deposit of USD 30 is settled for JPY 3900, the rate on the deposit bill date is USD 1 = JPY 150, and the rate on the final bill date is USD 1 = JPY 160.
Deposit bill. Without the module the deposit is converted at the rate of the day; with it, the balance is forced to the amount that was really paid.
| Without this module | | | With this module | | | | --- | ---: | ---: | --- | ---: | ---: | | Deposit (asset) | $30 | 4500 | Deposit (asset) | $30 | 3900 | | Payable | -$30 | -4500 | Payable | -$30 | -3900 |
Final bill. The offset line is read back from the posted deposit bill, so the deposit account closes out at what was paid and the difference lands in the goods instead.
| Without this module | | | With this module | | | | --- | ---: | ---: | --- | ---: | ---: | | Product | $100 | 16000 | Product | $100 | 15100 | | Deposit (asset) | -$30 | -4800 | Deposit (asset) | -$30 | -3900 | | Payable | -$70 | -11200 | Payable | -$70 | -11200 |
Without the module the deposit account is left with JPY 300 that no further document will clear, and the goods are valued at the closing rate alone. With the module the deposit account is back to zero, and the product line carries the 3900 paid for the deposit plus USD 70 at the current rate; the payable is the remaining USD 70 at that rate in both cases.
The column only appears on a deposit bill in a foreign currency, the deposit being the one amount known outside Odoo. In the company currency there is no conversion to override, so the field is refused there.
Everything on the final bill is derived from what was entered: the offset line is read back from the posted deposit bill and the goods lines take the rate difference. Leaving the field empty on the deposit bill opts out of all of it -- the deposit, the offset and the goods are then converted at the exchange rate exactly as Odoo does without this module.
The bill that carries the deposit offset has to invoice the order in full. Posting one that leaves part of the order unbilled is refused, because the whole deposit is relieved on that first bill and its difference would be charged to the quantities billed first alone.
No verified information in OCA: Installation, Configuration.
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.