# Markets and currencies

URL: https://docs.sparklayer.io/help/platforms/shopify/markets-and-currencies
Applies to: Shopify

Show B2B prices in more than one currency on one Shopify store: set up Shopify Markets, create a price list per currency and assign it to a customer group.

> **Quick summary**
>
> - Each B2B customer sees prices, cart totals and checkout amounts in the currency of their customer group's price list, all from one Shopify store.
> - You need a [Shopify Markets](https://help.shopify.com/en/manual/markets) market for each currency, and [Shopify Payments](https://help.shopify.com/en/manual/payments/shopify-payments) active in a supported region.
> - Create one price list per currency at **Pricing > Price lists** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/pricing/lists)), or **SparkLayer Wholesale > Pricing > Price lists** in the Shopify app. SparkLayer doesn't convert prices: you set the exact price in each currency.
> - Shopify's "local currency" setting, duties and market catalogs aren't supported. See [Limitations](#limitations).

## How it works

By default, SparkLayer shows B2B prices in your store's default currency. For example, if your store currency is GBP, every B2B customer sees prices in GBP. With Shopify Markets set up, you can add other currencies, such as USD or EUR. Each customer group then sees prices in its own currency.

When a B2B customer signs in, SparkLayer checks the price list assigned to their customer group. If that price list uses a different currency from your default (for example EUR instead of GBP), the customer sees all B2B prices, cart totals and checkout amounts in that currency. They don't need to switch currency themselves.

Setting it up takes 3 steps: a Shopify market for each currency, a price list in that currency, and a customer group that uses it.

How a customer's currency is chosen:

1. **Customer signs in**: SparkLayer finds their customer group
2. **Group's price list**: The price list has a currency, for example EUR
3. **Prices in that currency**: Product pages, cart and checkout show EUR
4. **Order in Shopify**: The order arrives with EUR as its currency

To see it working, try our [demo store](https://demo.sparklayer.io/pages/b2b-login-register).

## Set up Shopify Markets

Start in Shopify. Each currency you want to use needs a matching, active market.

1. In your Shopify admin, go to **Settings > Markets** ([open in the Shopify admin](https://admin.shopify.com/settings/markets)) (or **Markets** in the main menu if you use Shopify's new Markets experience).
2. Create a market for each region or country where you want to offer a currency. For example, create a "European Union" market with Euro as its currency.
3. Check the market's status is **Active**.
4. Check [Shopify Payments](https://help.shopify.com/en/manual/payments/shopify-payments/supported-countries) is turned on. Multi-currency only works in regions where Shopify Payments is available.

You don't need to set up catalogs or product availability in the market. SparkLayer manages B2B product visibility and pricing itself. The market only needs to exist so Shopify recognises the currency. Next, create a price list in that currency.

## Create a price list in another currency

Each price list has one currency, and you set every price in it yourself.

1. Go to **Pricing > Price lists** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/pricing/lists)), or **SparkLayer Wholesale > Pricing > Price lists** in the Shopify app.
2. Click **Create price list** (or open an existing price list).
3. Enter a **Name** and a **Handle (or ID)**, and choose the **Currency**, for example EUR, USD or AUD.
4. Add your prices as usual, entering every value in the price list's currency.

You can't change a price list's handle or currency after you've created it. Once the price list is ready, assign it to a customer group.

## Assign the price list to a customer group

The customer group decides which customers see the new currency.

1. Go to **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app.
2. Click **Edit** on the customer group, or click **Create customer group** to make a new one.
3. Under **Customized rules**, open **Price lists** and choose the price list in the right currency. Click **Add price list** to add more.
4. Set any other ordering rules, such as a minimum order value. They apply in the price list's currency.
5. Save the group.

A customer group can have several price lists, and the first one with the product's SKU wins: see [Price list order](https://docs.sparklayer.io/help/pricing/managing-pricing.md#price-list-order). All of a group's price lists must use the same currency. If they don't, customers see [PRICING:001](https://docs.sparklayer.io/help/platforms/shopify/error-codes.md).

When customers in the group sign in, they see B2B prices in that currency on product pages, in the cart and at checkout.

## What customers see

Once the group is set up, its customers see their currency everywhere they shop:

- **Product pages**: B2B prices in the customer's currency. A customer on a EUR price list sees euros; a customer on your default GBP price list sees pounds.
- **Cart and checkout**: line items, subtotals and order totals in the customer's currency. The payment methods are the ones set on their [customer group](https://docs.sparklayer.io/help/customers/customer-groups.md).
- **Shipping**: if a customer group has more than one shipping method (for example standard and express), shipping costs are converted from your store's default currency to the customer's currency.

## How orders appear in Shopify

An order placed in another currency arrives in your Shopify admin in that currency. The draft order shows the customer's market, for example "France (EUR €)". How it arrives depends on the payment method:

| Payment method | How the order arrives in Shopify |
| --- | --- |
| **Pay by invoice** | As a draft order |
| **Payment on account** | As a draft order |
| **Card at checkout** | The customer completes the Shopify checkout, so it arrives as a completed order |

To have draft orders turned into completed orders automatically, turn on **Auto-complete draft orders** at **Integrations > Platform > Shopify order actions** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/integrations/platform)), or **SparkLayer Wholesale > Integrations > Platform > Shopify order actions** in the Shopify app.

Because of how Shopify converts currencies and applies discounts, you may see small rounding differences between the price you set and the price on the Shopify order. For example, €7.99 may show as €8.00 in the Shopify admin. This is a Shopify limitation.

## Use Shopify Companies with Shopify Markets

If you use Shopify's Companies feature alongside SparkLayer, multi-currency works in the same way. See [Shopify Companies](https://docs.sparklayer.io/help/platforms/shopify/companies.md) for how SparkLayer works with Companies.

## Limitations

These Shopify Markets features and setups aren't supported, or work differently, with SparkLayer:

- **"Use local currencies"**: in a market with several countries, Shopify can let customers pay in their own region's currency (the market's **Currency** setting, **Use local currencies**). SparkLayer doesn't support this. Choose a single currency for markets with B2B customers, or orders may fail.
- **Price rounding**: small differences can appear between your SparkLayer price and the price on the Shopify order, because of Shopify's currency conversion and rounding.
- **One market per currency**: each currency you offer B2B customers needs its own market in Shopify Markets.
- **Shopify Payments required**: multi-currency only works in regions [where Shopify Payments is available](https://help.shopify.com/en/manual/payments/shopify-payments/supported-countries).
- **Managed Markets and zero-value orders**: with Shopify Managed Markets, you can't create a zero-value B2B order (such as £0.00 or €0.00) in any currency other than your store's default. Customers see an error at checkout if they try. See Shopify's [Managed Markets requirements and considerations](https://help.shopify.com/en/manual/international/managed-markets/requirements-and-considerations#considerations).
- **Duties and import taxes**: if you turn on duties in Shopify Markets, SparkLayer doesn't charge them in the SparkLayer cart. Duties aren't supported.
- **Market catalogs**: if you assign a product collection to a market in Shopify, SparkLayer doesn't detect or enforce it. SparkLayer manages B2B product visibility with its own rules and customer group settings.

## FAQs

**Do I need Shopify Plus to use multi-currency with SparkLayer?**

No. Multi-currency works on any Shopify plan that supports Shopify Markets and Shopify Payments. Some advanced Markets features, such as the new Markets experience with submarkets and catalogs, are only on Shopify Plus.

**Can I set different B2B prices per currency, or does SparkLayer convert from my default currency?**

SparkLayer doesn't convert prices. You create a price list for each currency and enter the exact prices customers should see, so you control your B2B prices in every currency.

**What happens if there's no Shopify market for the currency of a price list?**

Shopify won't recognise the currency at checkout, which can cause errors when orders are placed (see [SHOPIFY:001](https://docs.sparklayer.io/help/platforms/shopify/error-codes.md)). Make sure an active Shopify market exists for every currency you use in SparkLayer.

**Will the markets I set up for B2B affect my retail customers?**

Shopify Markets apply to your whole store, so retail (B2C) customers in those regions also see the market's currency. SparkLayer's B2B prices stay separate and are only visible to signed-in B2B customers.

**Can one customer group see prices in more than one currency?**

Not from one price list, because each price list has one currency. If customers in the same group need different currencies depending on their region, create a price list per currency and assign the right one to each customer or customer group.

**Why are there small rounding differences on orders in Shopify?**

When SparkLayer sends a B2B order, Shopify applies its own currency conversion and discount calculations, which can cause small rounding differences (for example €7.99 becoming €8.00). This is a Shopify limitation.

**Does SparkLayer use Shopify's automatic exchange rates?**

No. SparkLayer uses the fixed prices you set in each price list, so Shopify's automatic exchange rates don't apply to B2B prices. You control the exact price customers see.
