Odoo Purchase Order Currency Not Converting: How to Fix It · Calibre Consulting

Make purchase orders use the vendor's currency.

Why Odoo puts generated purchase orders in your own currency, where vendor prices and costs get converted, and how to set up foreign-currency buying.

This guide explains how Odoo decides the currency of a purchase order and where it converts prices and costs, using a company that sells in pounds sterling (GBP) and buys from European suppliers in euros (EUR). The short answer: a purchase order you create by hand takes its currency from the vendor's contact, but one that Odoo generates takes it from the vendor price line stored on the product. If that line is still in GBP, the order is created in GBP and the euro price is treated as pounds, with no conversion. Setting the currency on each vendor price line fixes it.

It is written for purchasing managers, accountants and owners who run Odoo with more than one currency. The steps were verified on Odoo 19.

Before you start

How Odoo picks the currency of a purchase order

Odoo applies two different rules, depending on how the order comes into existence.

The gap comes from how vendor price lines are created. A new line starts in the company currency and changes to the vendor's currency only when someone picks the vendor on it in a form, and only if the contact already had a Supplier Currency then. Lines added earlier, or loaded by import, usually stay in GBP. So a hand-made order for a European vendor opens in EUR while the generated one opens in GBP.

Where Odoo converts amounts

Each conversion uses the latest rate dated on or before the date involved, or the oldest rate if none is that early.

Fix the currency on your vendor price lines

  1. Open the Contacts app and open the vendor. On the Sales & Purchase tab, set Supplier Currency to EUR and save. Hand-made orders, and vendor price lines added from now on, will use EUR.
  2. Open the Purchase app and go to Configuration > Vendor Pricelists. A list of every vendor price line appears, with Vendor, Price and Currency columns.
  3. Type the vendor's name in the search bar to show only their lines.
  4. Tick the lines that show GBP, click the Currency cell on one of them and choose EUR. Odoo asks you to confirm before applying the change to all selected lines.
  5. Check each Price. Changing the currency does not convert the number, so a line that held a real GBP price needs its euro price typed in.

To fix one product, open it and change the Currency on the vendor's line in the Purchase tab. A new vendor line added there starts with the product's Cost, in GBP, as its Price, so replace it with the euro price.

Keep exchange rates up to date

  1. Open the Accounting app and go to Configuration > Settings. In the Currencies section, tick Automatic Currency Rates (Enterprise) and save.
  2. Choose the Service. Odoo suggests one from your company's country. A company in the United Kingdom gets the European Central Bank by default; HM Revenue & Customs is also in the list.
  3. Set Interval to Daily, Weekly or Monthly. The default, Manually, never updates on its own.
  4. Click the refresh icon next to Next Run to fetch today's rates straight away.

In Community, open EUR under Configuration > Currencies in Invoicing and add a line on the Rates tab, filling in either Unit per GBP (euros for one pound) or GBP per Unit (pounds for one euro).

Check that it worked

  1. Open EUR under Configuration > Currencies and confirm the Rates tab has a line for today or a recent date.
  2. Confirm a test sales order for a product bought from the European vendor through MTO or Dropship. The request for quotation it creates should be in EUR, at the euro price on the vendor line.
  3. Create a request for quotation by hand for the same vendor. It should also open in EUR.

Common mistakes to avoid

In Odoo 20 the same currency rules apply. One addition: when no vendor price line applies, Odoo 20 can use the price and currency of the product's last confirmed purchase instead.

Steps verified on Odoo 19. Menus and labels can differ on other versions.

Common questions

Why does a purchase order created from a sales order come out in GBP instead of EUR in Odoo?

A purchase order that Odoo generates takes its currency from the vendor price line on the product, not from the vendor's contact. If that line is set to GBP, the order is created in GBP and the price is not converted.

Does setting Supplier Currency on a vendor update existing vendor prices in Odoo?

No. Supplier Currency is copied onto a vendor price line only when the vendor is picked on a new line in a form. Existing lines keep their currency until you change them, for example from Purchase > Configuration > Vendor Pricelists.

Which exchange rate does Odoo use on a purchase order?

When it converts a vendor price into the order's currency, Odoo uses the latest rate dated on or before the order date. Received goods are valued in the company currency at the receipt date's rate, and from the bill's rate once the vendor bill is posted.

Why are exchange rates not updating automatically in Odoo?

Automatic Currency Rates is an Enterprise setting, and its Interval defaults to Manually, which never runs on a schedule. Set the Interval to Daily, Weekly or Monthly, or click the refresh icon to fetch rates now.

What happens if a currency has no exchange rate in Odoo?

Odoo converts at a rate of 1, so an amount in euros is treated as the same amount in pounds. Add at least one rate on the currency's Rates tab before buying in that currency.

Talk to the team.

If you are setting this up, or Odoo is not behaving the way this guide describes, book a 30-minute call. We will look at your configuration and tell you what it needs. Calgary studio, in-house team, no offshore handoffs.

Book the call →