All posts
Functional4 min read

Issuing and Receiving Invoices in Multiple Currencies in Odoo

Configure Odoo to issue customer invoices and receive vendor bills in foreign currencies - automatically converting to your functional currency at current exchange rates with proper gain/loss tracking.

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

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free