Supplier currency on purchase orders: what is and is not converted
Where a supplier currency shows up on a Restock Ops purchase order, what stays in it, and why the unit cost you type at receiving must be in shop currency.
A shop in Buenos Aires buys from a factory in Shenzhen that quotes in US dollars. A shop in Lisbon buys from a wholesaler in Manchester that invoices in pounds. Most Shopify stores with more than a couple of suppliers have at least one that does not price in the shop's own currency, and a purchase order that insists on converting everything into shop currency is a purchase order the supplier cannot read. Restock Ops therefore lets each supplier carry its own currency, and the PO follows it. This post is about exactly how far that currency travels, which is further than the PO page and shorter than Shopify's cost per item, and about the one moment where you, not the app, do the conversion.
Nothing here involves exchange rates. Restock Ops does not fetch rates, store rates or multiply by rates. That is a deliberate decision rather than a gap, and the last section explains why we would rather you typed one number at receiving than trusted a rate the app picked for you.
Where the currency is set
Open a supplier in Restock Ops and the form has a Currency field with the hint Leave empty for shop currency. Type a three-letter ISO code, USD, GBP, EUR, and it is stored in upper case; type nothing and the supplier is treated as pricing in whatever your Shopify store's currency is. The field sits next to lead time, payment terms and minimum order value, because it belongs to the same family of facts: things the supplier decides and you record.
The currency is copied onto a purchase order at the moment the PO is created. Create a draft from the supplier's page, from the purchase orders list, or from the reorder report, and the new PO reads the supplier's currency, falling back to shop currency if the field is empty. From then on the PO has its own currency, frozen. Changing the supplier's currency afterwards affects the next PO, not the open ones, which is what you want: an order already sent to a supplier in dollars should not silently become an order in pesos because somebody edited a form.
Every amount on the PO is in the PO currency
Once a PO has a currency, every money figure on it is shown and stored in that currency, without exception. The table below is the full list.
| Amount | Currency | Where you see it |
|---|---|---|
| Unit cost per line | PO currency | Line table on the PO, receiving form, CSV export |
| Line total (quantity times unit cost) | PO currency | Line table, totals card |
| Subtotal, tax, shipping, discount | PO currency | Totals card on the PO |
| PO total | PO currency | Totals card, purchase orders list, confirmation before ordering |
| Invoice amounts | PO currency | Invoice tracking section |
| Cost per item written to Shopify at receiving | Shop currency | Shopify product and inventory reports |
The last row is the odd one out, and it is the subject of the rest of this post. Everything above it is simple: the PO is a document for the supplier and for your own records, and it should read the way the supplier's price list reads. When you type a unit cost of 4.20 on a USD purchase order, that is four dollars and twenty cents, the line total is dollars, the PO total in the list view is dollars with a dollar sign, and the CSV export carries the same numbers so you can reconcile against the supplier's invoice without a calculator.
The purchase orders list shows each PO's total in its own currency, so a list with three suppliers in three currencies shows three currency symbols. The app does not add them up into one grand total, for the obvious reason that a sum across currencies is not a number.
Cost per item in Shopify is always shop currency
Shopify stores one cost per inventory item, in the store's currency, and that is the figure its profit and inventory value reports are built on. There is no per-currency cost and no field for the currency a cost was entered in. When Restock Ops commits a receipt it writes a cost to Shopify through the inventory item update, following your cost method setting: either the last cost received or a weighted average with the stock already on hand, as described in inventory cost history after receiving.
The app writes the number you confirm on the receiving form. It does not convert it. On a PO in shop currency that is exactly right and you never think about it. On a PO in a supplier currency it means the unit cost column on the receiving form is doing two jobs at once: it is prefilled from the PO line, in the supplier's currency, and it is the value that will land in Shopify, which Shopify will read as shop currency. If you accept the prefilled 4.20 on a USD PO for a store that sells in Argentine pesos, Shopify will record a cost of 4.20 pesos, and your margin report will look spectacular for the wrong reason.
What to do at receiving
The receiving form shows every line with its quantity, the unit cost prefilled from the PO, and, next to it, the cost Shopify currently holds for that item, labelled Shopify, so you can see the gap between the two before you commit. For a foreign-currency PO the routine is short:
- Have the supplier's invoice, or the payment confirmation from your bank, open next to the receiving form. The bank's rate on the day you paid is the rate you actually got, and it includes their spread.
- Convert each unit cost into shop currency: unit cost in supplier currency times the rate, plus whatever share of freight and duty you have decided to include, following the same rule every time so costs stay comparable. See what to include in cost per item for the rule itself.
- Overwrite the prefilled unit cost on each line with the converted figure. The PO line itself is not changed; the receiving form's unit cost is the one that goes to Shopify, and the receipt records both the previous cost and the new cost per item.
- Check the Shopify column once more. If the previous cost was 5,100 pesos and your new figure is 4.20, you have forgotten to convert. If it is 5,250, you have not.
- Commit. The receipt is recorded with the costs you entered, and the cost history on the PO shows before and after for every line.
If you receive the same PO in several deliveries, convert at each receipt with the rate that applied to that payment. Two receipts at two rates produce two cost entries, which is more honest than one blended figure, and a weighted average cost method smooths them out in Shopify anyway.
Why the app does not convert for you
It would be easy to multiply by a rate. The problem is which rate. The mid-market rate on the day the PO was created is wrong, because you have not paid yet. The rate on the day of receiving is wrong, because you probably paid earlier or will pay later under the supplier's payment terms. The rate your bank or card provider applied is right, and it is a number only you have, because it includes a spread that no public rate feed knows about. Add duty, freight invoiced separately in a third currency, and a supplier discount for early payment, and the landed cost of a unit is a figure that belongs in your accounting, not in a guess made by an inventory app.
So Restock Ops keeps the two sides clearly apart. The purchase order is in the supplier's money and stays that way for its whole life, because that is the document you and the supplier both read. The cost in Shopify is in your money, because that is what Shopify's reports need, and the one moment the two meet, the receiving form, puts both figures side by side and lets you type the number you can defend. If you want a reminder, put the rate and the date in the receipt note; it is kept with the receipt and shows up in the audit trail, which is where your accountant will look for it.
FAQ
Can I change the currency on an existing purchase order?
No. The currency is set from the supplier when the PO is created and is fixed for the life of that PO, so the amounts on a document you have already sent cannot change meaning. If a PO was created with the wrong currency, cancel it while it is still a draft, correct the supplier's Currency field, and create it again.
Does Restock Ops convert the PO total into my shop currency anywhere?
No. There is no exchange rate anywhere in the app. Every amount on a PO, in the purchase orders list and in the CSV export is in the PO's currency. The only figure that reaches Shopify is the unit cost at receiving, and that is whatever you confirm on the receiving form, which should already be in shop currency.
What happens if I forget to convert the unit cost at receiving?
Shopify stores the supplier-currency number as if it were shop currency, and your margin and inventory value reports are off until it is corrected. The receipt keeps the previous cost per line, so you can see what changed, and you can fix the cost on the variant in Shopify or receive a corrective adjustment. Comparing the prefilled cost with the Shopify column on the form before committing catches almost every case.
Which currency do draft POs from the reorder report use?
The supplier's. When the report creates one draft per supplier, each draft takes that supplier's currency if one is set and shop currency otherwise, exactly like a PO created by hand. Suggested quantities come from the report; costs are prefilled from Shopify's current cost per item, so on a foreign-currency supplier check the unit costs on the draft before you send it.
Try it on your store. Restock Ops adds purchase orders with partial receiving, supplier notes, cost history, barcode labels, scanner stocktakes and a reorder report on top of Shopify inventory. From $19/month, 14-day free trial.