The customer paid the full EUR 1,000, yet the accounts show a SAR 50 difference. Should finance ask for more money or close the invoice? In this hypothetical example, the euro moved from SAR 4.10 to SAR 4.15. The payment’s riyal equivalent rose. That is an exchange gain, not another sale or an extra amount the customer agreed to pay.
At ToDoOps, we configure currencies, the rate source and difference accounts so finance can review the foreign amount and its company-currency equivalent at reconciliation 1. The owner can distinguish sales from exchange-rate effects, while purchasing discusses supplier bills in the right currency. Bank fees remain a separate item so each difference has a clear explanation.
Foreign-currency invoices in Odoo: recording and settling
Odoo lets you issue invoices, receive bills and record transactions in currencies other than the company’s main currency, and you can hold bank accounts in other currencies 1. You choose the currency and journal on the document itself, and when registering a payment you pick the currency in the amount field 1. When reconciling a bank transaction, Odoo shows both the foreign-currency amount and its equivalent in the company currency 1.
Worked example: a EUR 1,000 invoice paid in full
This is a hypothetical example for illustration, and the rates are not market rates. You invoice a customer EUR 1,000, with an assumed rate of SAR 4.10 per euro on the invoice date. The customer pays the full EUR 1,000 on the settlement date, when the assumed rate is 4.15.
On mobile, swipe the table horizontally if some columns are out of view.
| Item | SAR | Note |
|---|---|---|
| Invoice value at 4.10 | 4,100 | Invoice date |
| Amount received at 4.15 | 4,150 | Settlement date |
| Exchange gain | 50 | 4,150 minus 4,100 |
| Bank fee (assumed) | 20 | Separate item |
| Net amount in the bank | 4,130 | If the fee is deducted |
The SAR 50 is not an extra amount the customer paid. It is the effect of the rate change on the same EUR 1,000. The SAR 20 is a bank fee and is not part of the exchange difference. Not every gap between the invoice and the cash that arrives is an FX difference, and separating the two saves finance time when explaining the balance.
Use the central calculators for Odoo project budget and hypothetical value estimates based on your inputs. We then review the currencies, accounts and reports that belong in the implementation scope with finance.
Where Odoo exchange differences appear
Odoo automatically records exchange difference entries in a dedicated journal and on dedicated accounts 1. Under Accounting, Configuration, Settings, the Default Accounts section lets you set the journal and the gain and loss accounts 1. To review the entries, open Review, then Journal Items, and group by Miscellaneous 1. Odoo’s own documentation notes that when a customer pays a month after the invoice, the rate has likely changed, producing a gain or loss from the difference 1.
Odoo exchange rates: manual or automatic
Rates can be added by hand in the Rates tab of a currency, or updated automatically on a daily, weekly or monthly interval from a web service you select 1. So decide before go-live who approves the rate source and how often it updates. An updated rate is not a guarantee of the live bank rate. It may differ from the rate your bank applied on the transfer day, and reconciliation will show that.
You can also restrict a journal to one currency, or set a currency on an account so all its moves use it 1. This reduces journal-selection mistakes, for example on a euro bank account. For the banking side see Odoo bank reconciliation guide, and for the wider accounting picture see Odoo accounting guide.
Odoo main currency versus functional currency
The main currency in Odoo is a company setting, defaulted according to the company’s country 1. That setting is not automatically an accounting judgment about functional currency. IAS 21 defines the functional currency as the currency of the primary economic environment in which the entity generates and expends cash, and any other currency is foreign. The standard is concerned with which rate to use and how the effects of rate changes are reported in the financial statements 2. Finance approves that accounting decision first; the system settings then follow the approved policy. Include open balances and partial settlements in acceptance testing when they form part of your operation.
Preparing Odoo currencies before your first close
Finance approves the company’s accounting currency and policy; we identify the foreign currencies used in operations. IAS 21 distinguishes functional, foreign, and presentation currency and explains the effect of rate changes 2. Then set rates manually or on a schedule, with separate gain and loss accounts and a journal for them 1.
Roles stay simple: finance owns the rates and difference accounts, purchasing reviews foreign supplier bills, and the owner reads the result. Test with a few real invoices and payments: a full payment, a partial one, and a bank fee booked separately. At reconciliation Odoo shows the foreign and company-currency amounts. Some cases may settle directly, while others need the accountant’s decision.
Review Odoo apps to identify the applications involved, and industry solutions for a workflow close to your business. The guided sales and stock simulation shows the order-to-delivery connection before you discuss the accounting scope with our team.
Odoo multi-currency questions
Is the 50 exchange difference a real gain? Yes, it is a real financial gain, but not an additional sale or money the customer owes. The customer agreed to pay EUR 1,000 and did; only the riyal reporting equivalent moved.
Why does the bank amount differ from the invoice? It may reflect the exchange rate, a fee or an incomplete payment; check the original foreign amount first. In the example, 4,150 received less a 20 fee leaves 4,130. Recording the fee as its own entry keeps the exchange gain visible.
Do gains and losses need their own accounts? Odoo 19 supports separate gain and loss accounts and a journal for them, so the owner can see exchange differences separately from sales revenue 1.
What to prepare before you contact us
Prepare two or three foreign-currency invoices that were actually settled, with issue and settlement dates, the bank statement showing the amount received and any fee, and who in your team approves the exchange rate source. With these we can assess with you where currency differences get mixed up with bank fees. Start from contact us, see our services on the home page, and estimate the scale of the work with the central calculators.
References
- Odoo 19.0 official documentation: the multi-currency system, covering configuration, rates, exchange difference entries and reconciliation.
- IFRS Foundation, official overview of IAS 21 (The Effects of Changes in Foreign Exchange Rates). It supports the distinction between functional and foreign currency and the reporting effect of rates.
