Multi-Currency Invoicing in Odoo#
When your customers or vendors operate in different currencies, Odoo handles the currency conversion automatically - issuing invoices in the customer's currency, recording the functional-currency amount, and tracking exchange differences on payment.
Prerequisites#
Accounting → Configuration → Settings → Currencies → enable Multi-Currencies.
Accounting → Configuration → Currencies:
- Activate EUR, GBP, JPY, etc.
- Set the current exchange rate (or enable automatic updates)
Issuing a Foreign Currency Invoice#
Accounting → Customers → Invoices → New:
- Customer: French Company S.A.
- Currency: EUR (set per customer or on each invoice)
- Lines: Consulting Services - €5,000
Odoo records:
- Invoice in EUR: €5,000
- Functional currency (USD): $5,500 at today's rate (1.10 USD/EUR)
The PDF invoice shows EUR amounts. Your GL records the USD equivalent.
Payment in Foreign Currency#
Customer pays €5,000 via bank transfer (but EUR/USD rate has moved to 1.08):
Payment amount: €5,000 = $5,400 at payment date
Exchange difference: $5,500 (original) − $5,400 (payment) = $100 Exchange Loss
Odoo automatically posts:
- Debit: Bank $5,400
- Debit: Exchange Loss $100
- Credit: Accounts Receivable $5,500 (closes the invoice)
Vendor Bills in Foreign Currency#
Accounting → Vendors → Bills → New:
- Currency: GBP
- Lines: Software License - £10,000
When you pay in GBP and the rate has changed:
- Exchange gain or loss is posted automatically on payment
Currency Gain/Loss Report#
Accounting → Reporting → General Ledger → filter by:
- Exchange Gain account
- Exchange Loss account
Total foreign exchange impact on the P&L for the period. Track quarterly - significant FX exposure may warrant hedging strategies.
Locking Invoice Rates#
For long-running contracts where FX volatility is a risk:
- Fix the exchange rate on the invoice: Currency Rate field → enter a fixed rate
- All payments are recorded at this fixed rate - no exchange difference
- Used when a forward contract or fixed-rate agreement is in place

