Multi-Currency Profit on Shopify: The FX Tax
Selling internationally on Shopify feels like growth right up until you reconcile the bank statement and the numbers do not match the dashboard. The gap is almost always currency related: conversion fees layered on payment fees, FX rate slippage between order time and payout, and regional pricing that was set once and never revisited. This guide walks through where multi-currency margin actually leaks, how to compute true profit on a cross-border order, and the setup that protects margin without turning international growth into a cap on growth.
The Hidden FX Tax on Every Cross-Border Order
A US-based store sells a $100 product to a buyer in France. The customer sees the price in euros via Shopify Markets, pays at checkout, and the order shows up in the admin denominated in EUR. By the time the funds land in the merchant USD bank account, three things have happened that the headline revenue number does not show.
First, the card network applies a cross-border interchange surcharge, commonly around 1 percent. Second, Shopify Payments charges a currency conversion fee, typically 1.5 to 2 percent depending on region. Third, the FX rate used to convert at payout is rarely the public mid-market rate; there is a small spread baked in. Stacked together, a single international order can lose three to four percentage points of margin before COGS even enters the picture. None of those line items appear in the Shopify dashboard, which is exactly the problem we covered in why Shopify does not show real profit by default.
Where Multi-Currency Margin Leaks Actually Show Up
Five line items account for most of the international margin leak. Audit each one explicitly:
- Currency conversion fee: charged at payout on the converted amount. Often 1.5 to 2 percent.
- Cross-border card surcharge: roughly 1 percent on international cards, layered on the base processing fee.
- FX rate spread: the payout rate is the mid-market rate minus a spread. Usually 0.5 to 1 percent.
- Regional price drift: a Markets price set a year ago no longer reflects the current FX rate, so a EUR price that mapped to USD 105 in 2024 now maps to USD 92.
- Refund FX losses: a refund processed at a different rate than the original sale can produce a net loss in your reporting currency even on a like-for-like refund.
The first three are essentially fees and broadly fall into the same bucket as the ones we catalogue in Shopify payment fees explained. The fourth and fifth are policy and timing issues that operations can fix. Together they often double the effective fee gap between a domestic and an international order.
Setting Up Currency-Aware COGS
The cleanest model is to store COGS in one currency, your reporting currency, and translate everything back to it for profit calculation. Trying to set COGS per market is a maintenance trap; one shifts, the rest go stale, and the per-order profit numbers stop being comparable.
- Enter
InventoryItem.unitCostin your reporting currency for every variant. The same number applies regardless of which Market the order came from. - Capture the order revenue in the presentment currency (what the customer paid) and the order currency at payout (what hit your account).
- Apply the order-day FX rate to convert presentment revenue to reporting currency. This is the number you use for profit, not the payout-day amount.
- Treat conversion fees and cross-border surcharges as part of the per-order payment fee bucket, not as a separate concept. They scale with revenue, just like domestic processing.
If your COGS field is not yet populated with real unit costs across the catalogue, fix that before layering international complexity on top. Our step by step Shopify COGS setup covers the variant-level work; everything in this article assumes a real cost is in place.
Regional Pricing vs Straight Conversion
Shopify Markets offers two ways to set international pricing. The default is a live exchange rate conversion: the customer sees their local equivalent of the home-currency price. The alternative is a fixed regional price, optionally with a percentage adjustment.
Straight conversion is fine for low-volume, low-stakes markets. It breaks for high-volume international segments where FX volatility, local price sensitivity, and conversion fees all want different prices. The fix is to set a fixed regional price with a small uplift that covers the FX overhead and a margin reserve. A 10 percent regional uplift in a market with good demand typically absorbs the 3 to 4 percent fee gap and leaves room for the occasional FX swing.
Revisit those regional prices quarterly. FX rates move, and a regional price set when the dollar was strong becomes a margin trap when it weakens. Some teams automate this with a script that adjusts Shopify Markets prices when the base FX rate has moved more than a threshold, say 5 percent. The principle is the same one we cover in profit per order vs revenue: the right KPI is per-order margin, and the operational levers exist to defend it.
Reporting Profit in Your Reporting Currency
The dashboard work matters because Shopify Analytics shows revenue and net sales mixing every currency it has seen, with no clean per-order profit denominated in your reporting currency. To run the business on actual numbers, every order needs a profit snapshot in one currency, computed at order time using:
- Presentment revenue minus discount, translated to reporting currency at the order-day FX rate.
- Plus shipping charged, translated the same way.
- Minus the all-in payment fee (base rate plus cross-border plus conversion).
- Minus actual shipping cost in reporting currency.
- Minus COGS in reporting currency.
That number, snapshotted at order time, is the only one you can trust for per-order decisions weeks later when FX rates have moved and payout amounts have settled differently. Many of the cost line items in this calculation overlap with the broader audit in ten hidden costs eating your Shopify margin; international orders just stack three or four extra costs on top, which is what makes them disproportionately likely to be the ones quietly losing money.
Frequently asked questions
How much does Shopify charge for currency conversion?
Shopify Payments typically applies a currency conversion fee of around 1.5 to 2 percent on top of the standard processing fee, depending on region. International card surcharges add another 1 percent or so. The blended hit on a cross-border order can be three to four percentage points.
Should I set COGS in my reporting currency or the order currency?
Set unit cost in the InventoryItem in your reporting currency, then translate the order revenue back to reporting currency at the FX rate of the order date. Mixing currencies in your COGS field guarantees confused profit numbers.
Does Shopify Markets fix the FX problem automatically?
No. Shopify Markets handles display pricing and checkout in local currency, but conversion fees still apply on payout and reporting tools still report revenue in mixed currencies unless you normalise. Markets is a presentation layer, not a profit layer.
Can I price internationally without losing margin?
Yes, by setting regional price adjustments in Shopify Markets that account for both FX volatility and local price sensitivity, instead of relying on raw conversion. A 10 percent regional uplift in a higher-margin market typically covers the conversion overhead and a small reserve.
Want profit on every international order, in your reporting currency?
Profit Guard snapshots true profit per order at the moment the checkout completes, normalised to your reporting currency, with FX, fees, and COGS all factored in. Free plan available.
Install Profit Guard on Shopify