> For the complete documentation index, see [llms.txt](https://docs.roadmap.so/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roadmap.so/loyalty-and-rewards/getting-started/how-loyalty-works-across-multiple-currencies.md).

# 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.

{% hint style="info" %}
A single Shopify store has one base currency, so it has one loyalty program. Running genuinely separate programs per currency needs separate Shopify stores.
{% endhint %}

## 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.

| Store base currency | Customer paid | Shopify converts to | Points awarded at 1 per 1 NZD |
| ------------------- | ------------- | ------------------- | ----------------------------- |
| 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

{% hint style="warning" %}
If a market's display rate is more generous than the real exchange rate, customers will see a larger figure than the discount they actually receive. Keep your market rates in step with your live rates.
{% endhint %}

## A worked example

A store with a NZD base currency, selling into the EU:

| Setting                 | Value                |
| ----------------------- | -------------------- |
| 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

* [How to configure your point settings](/loyalty-and-rewards/getting-started/how-to-configure-your-point-settings.md)
* [Set up an amount discount reward](/loyalty-and-rewards/points-and-ways-to-earn/set-up-an-amount-discount-reward.md)
* [Award points for placing an order](/loyalty-and-rewards/points-and-ways-to-earn/award-points-for-placing-an-order.md)
* [Understanding a customer's loyalty timeline](/loyalty-and-rewards/customer-management/understanding-a-customers-loyalty-timeline.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.roadmap.so/loyalty-and-rewards/getting-started/how-loyalty-works-across-multiple-currencies.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
