How loyalty works across multiple currencies
Why points, rewards, and discount codes are always based on your store's base currency, and what the Currency Conversion setting actually changes.
If you sell into more than one country through Shopify Markets, your loyalty program still runs on a single currency: the base currency set on your Shopify store.
Everything else is a conversion of that.
The short version
Points are earned on the base currency value of an order, whatever currency the customer paid in.
A reward is worth a fixed amount of your base currency.
Shopify converts that amount into the customer's currency at checkout.
The Currency Conversion setting in Roadmap only changes the figure customers see on the storefront. It does not change what a reward is worth. That is controlled by the Shopify currency conversion of your store's base currency.
How points are earned on an overseas order
When an order is placed in another currency, Shopify converts the order total back to your base currency. Roadmap awards points on that converted figure.
So an earner set to 1 point for every 1 NZD spent stays 1 point per NZD for every customer, everywhere.
NZD
€114.53 EUR
$229.36 NZD
229
NZD
$95.00 AUD
$105.00 NZD
105
The exchange rate is Shopify's, for that market, at the time of the order. Roadmap does not set it and cannot override it.
How rewards are valued
A Ways to redeem amount discount is set as a fixed amount in your store currency. For example, 500 points redeems for $50 NZD off.
When a customer redeems, Roadmap issues a discount code worth that amount in your base currency. At checkout, Shopify converts the code's value into the currency the customer is shopping in.
The result is that the same reward is worth a slightly different amount in a foreign currency every time the exchange rate moves.
What the Currency Conversion setting actually does
Find it in Loyalty Program → Points → Currency Conversion. The setting describes itself accurately:
Set conversion rates to display point values in currency equivalents for different markets.
It is a display setting. It powers the money figures customers see next to their points in the loyalty widgets, on the loyalty page, and in their loyalty history.
It does not:
change how many points an order earns
change what a reward is worth
tell Shopify which exchange rate to use
A worked example
A store with a NZD base currency, selling into the EU:
Default conversion rate
100 points = $10 NZD
EUR market display rate
100 points = €6
Reward redeemed
500 points
The customer sees €30 against that redemption, because the EUR display rate values 100 points at €6.
The discount code itself is worth $50 NZD. At checkout Shopify converted that at roughly 0.51 EUR to the NZD, so the order showed €25.47 off.
Nothing went wrong. The EUR display rate assumes 100 points is worth €6, which implies 1 NZD is worth €0.60. The real rate at the time was closer to €0.50, so the displayed figure ran about 20% ahead of the discount.
Setting that market to 100 points = €5 would have shown the customer roughly what they were going to get.
Keeping displayed values close to the real ones
Work out each market rate from your default rate and the current exchange rate. With a default of 100 points = $10 NZD and a rate of 0.50, the EUR market should sit near 100 points = €5.
Round down rather than up, so the displayed value under-promises slightly instead of over-promising.
Review market rates when exchange rates move. They are fixed numbers you enter, not live rates.
Leave a market row empty to inherit the default rate.
If you need true per-currency rewards
Earning in AUD for Australian customers, or issuing a €30 voucher that is genuinely €30, is not possible within one Shopify store using Shopify Markets. The base currency governs the whole program.
Two options:
Accept base currency earning and redemption, and tune the market display rates so the figures customers see are close to reality. This is what most multi-market stores do.
Run separate Shopify stores, each with its own base currency and its own Roadmap loyalty program.
Common questions
Why did my customer's discount come through smaller than the value shown in their account? The value in their account is the display rate for their market. The discount code is worth a fixed amount of your base currency, converted by Shopify at checkout. Bring the market display rate closer to the real exchange rate and the two will line up.
Why are Australian customers earning points on the NZD value of their order? Because points are always calculated on the base currency value. Shopify converts their AUD total to NZD first.
Can I issue reward vouchers in AUD for Australian customers? Not from a store with a NZD base currency. The voucher is worth a set amount of NZD and Shopify converts it at checkout.
If I change a market's display rate, does it change points customers have already earned? No. It changes the money figure shown alongside points, nothing else.
Which exchange rate is used for the discount? Shopify's rate for that market at the time of checkout. It can differ slightly from the rate shown against the payment on the order, because those are taken at different points.
Related articles
Last updated