---
title: "How to sell in multiple countries from one ecommerce backend"
description: "How to sell in the US, UK and EU from one ecommerce backend with Medusa: regions, currencies, VAT, tax-inclusive prices, shipping zones, and honest gaps."
url: https://medusajs.com/kb/international-commerce/multi-region-ecommerce
last_updated: 2026-10-29T06:55:50Z
topic: "international-commerce"
type: "concept"
applies_to: "Medusa v2.x"
related:
  - "https://medusajs.com/kb/international-commerce/tax-inclusive-pricing-international.md"
  - "https://medusajs.com/kb/international-commerce/multi-currency-pricing-api.md"
  - "https://medusajs.com/kb/b2b/b2b-customer-specific-pricing.md"
sources:
  - "https://docs.medusajs.com/resources/recipes/multi-region-store"
  - "https://docs.medusajs.com/user-guide/settings/regions"
  - "https://docs.medusajs.com/user-guide/settings/tax-regions"
  - "https://docs.medusajs.com/api/admin/regions/create-region"
  - "https://docs.medusajs.com/resources/storefront-development/products/price"
  - "https://docs.medusajs.com/resources/commerce-modules/pricing/tax-inclusive-pricing"
  - "https://docs.medusajs.com/resources/commerce-modules/tax/tax-region"
  - "https://docs.medusajs.com/resources/commerce-modules/tax/tax-rates-and-rules"
  - "https://docs.medusajs.com/resources/commerce-modules/pricing/concepts"
  - "https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option"
  - "https://docs.medusajs.com/resources/commerce-modules/fulfillment/concepts"
  - "https://docs.medusajs.com/resources/commerce-modules/stock-location/concepts"
  - "https://docs.medusajs.com/resources/integrations/guides/avalara"
  - "https://docs.medusajs.com/resources/commerce-modules/pricing/price-rules"
  - "https://www.gov.uk/vat-businesses/charging-vat"
  - "https://europa.eu/youreurope/business/taxation/vat/vat-rules-rates/index_en.htm"
  - "https://help.shopify.com/en/manual/international/pricing"
  - "https://help.shopify.com/en/manual/international/managed-markets"
  - "https://docs.bigcommerce.com/developer/docs/admin/store-configuration/currencies/how-currencies-work.md"
  - "https://docs.bigcommerce.com/developer/docs/storefront/catalyst/features/localization/multi-storefront/overview.md"
  - "https://docs.commercetools.com/api/pricing-and-discounts-overview"
  - "https://docs.commercetools.com/api/projects/stores"
---

# How to sell in multiple countries from one ecommerce backend

> Medusa sells in multiple countries from one backend without running separate stores. You create a region per market with its own currency, countries and payment providers, set prices per currency or region, configure tax regions with tax-inclusive pricing for the UK and EU, and limit shipping options to service zones. Duties and automatic currency conversion need custom integrations.

## How Medusa runs several countries from one backend

Medusa v2 sells in multiple countries from one application, without running separate stores. Each country maps to a **region**, and prices, taxes, shipping and stock are resolved per request from the customer's region, country and cart. The [Multi-Region Store recipe](https://docs.medusajs.com/resources/recipes/multi-region-store) describes the full setup.

| Term | What it means in Medusa | Status |
| --- | --- | --- |
| Market or region | A region has one currency, a list of countries, payment providers and a tax-inclusive setting. Several regions can share a currency. | Native |
| Prices per country | A variant's price set holds one price per currency, plus optional prices with a region_id rule | Native |
| VAT and sales tax | Tax regions per country with a default rate, overrides by product type, and state or province sublevels | Native |
| Tax-inclusive prices | Enabled per region or per currency | Native |
| Shipping per country | Shipping options are limited to service zones made of countries, provinces, cities or postal codes | Native |
| Multi-warehouse | Stock locations with inventory levels per location | Native |
| Tax engine | Avalara tax provider | Official guide |
| Duties, landed cost, merchant of record | Not built in | Custom |

## Worked example: US, UK and EU settings

The table shows one way to configure a store that sells in the United States, the United Kingdom and the EU. You enter tax rates in each tax region, or a tax provider returns them.

| Setting | United States | United Kingdom | European Union |
| --- | --- | --- | --- |
| Region | United States, country us | United Kingdom, country gb | Europe, countries such as de, fr, nl |
| Currency | usd | gbp | eur |
| Tax-inclusive pricing | Off (sales tax added at checkout) | On (VAT included) | On (VAT included) |
| Tax regions | us with state sublevels, or Avalara as the provider | gb with a default rate (standard VAT is 20%) | One tax region per country, each with its own rate |
| Example variant price | 40 usd | 35 gbp | 39 eur |
| Shipping options | Service zone for us, fulfilled from a US warehouse | Service zone for gb | Service zone for EU countries, fulfilled from an EU warehouse |
| Payment providers | Chosen per region, for example Stripe | Chosen per region | Chosen per region |

UK VAT rates come from [GOV.UK](https://www.gov.uk/vat-businesses/charging-vat). Each EU country sets its own VAT rate, with a standard rate of at least 15% ([Your Europe](https://europa.eu/youreurope/business/taxation/vat/vat-rules-rates/index_en.htm)).

## Example API calls for a multi-region setup

You create a region with the Admin API, here through the Medusa JS SDK. The fields below are part of the [Create Region API route](https://docs.medusajs.com/api/admin/regions/create-region):

```ts
await sdk.admin.region.create({
  name: "Europe",
  currency_code: "eur",
  countries: ["de", "fr", "nl"],
  automatic_taxes: true,
  is_tax_inclusive: true,
  payment_providers: ["pp_stripe_stripe"],
})
```

In the storefront, you pass the customer's region and country when you fetch products. Medusa returns each variant's `calculated_price` in the region's currency, with and without tax ([Retrieve Product Variant's Prices](https://docs.medusajs.com/resources/storefront-development/products/price)):

```ts
const { product } = await sdk.store.product.retrieve(id, {
  fields: "*variants.calculated_price",
  region_id: region.id,
  country_code: "de",
})
```

At checkout, customers only see the payment providers enabled for their region and the shipping options that can deliver to their address.

## Medusa compared with Shopify Markets, BigCommerce and commercetools

All four platforms can sell to several countries from one catalog. They differ in how currencies are priced and in who handles duties and compliance.

| Capability | Medusa | Shopify Markets | BigCommerce | commercetools |
| --- | --- | --- | --- | --- |
| Unit of setup | Regions in one backend | Markets in one store | Multi-Storefront channels, each with its own currency | Stores with their own countries, languages and channels |
| Price per currency | Set a price per currency or per region | Converted automatically at the exchange rate by default, or fixed per market through catalogs | Auto-converted at a merchant-set exchange rate (updated manually or through the API), or set per currency with price lists | Prices scoped by currency, country, customer group and channel |
| Automatic FX conversion | No | Yes | Yes, at a merchant-set rate | Check vendor docs |
| Duties and merchant of record | Custom integration | Managed Markets: Global-e is the merchant of record and handles duties | Check vendor docs | Check vendor docs |

Shopify facts come from its [international selling](https://help.shopify.com/en/manual/international/pricing) and [Managed Markets](https://help.shopify.com/en/manual/international/managed-markets) help pages. BigCommerce facts come from [How Currencies Work](https://docs.bigcommerce.com/developer/docs/admin/store-configuration/currencies/how-currencies-work.md).

## What Medusa does not do for international selling

Medusa leaves three cross-border jobs to you or to an integration:

- **Duties and landed cost.** Medusa has no duty calculation. Call a landed-cost service from a custom workflow or a fulfillment provider's price calculation.
- **Merchant of record.** Medusa does not act as the seller of record. You sell under your own entity and handle tax registrations, or integrate a merchant-of-record service as a custom provider.
- **Automatic FX conversion.** Medusa does not convert prices by exchange rate. Set a price for each currency, or write a scheduled job that updates prices from a rate feed.

For tax calculation beyond fixed rates, the [Avalara guide](https://docs.medusajs.com/resources/integrations/guides/avalara) builds a tax provider that returns rates per address.

## When Medusa is not the right choice

- You have no developer and want multi-currency selling configured from an admin screen. Shopify Markets covers that.
- You want a provider to act as merchant of record, collect duties and hold tax registrations for you without engineering work. Shopify Managed Markets does this for eligible merchants.
- You sell in one country with one currency. A multi-region backend adds setup you will not use.

## Common questions

### Does Medusa convert prices between currencies automatically?

No. Medusa selects a price you set for each currency or region and does not convert prices by exchange rate. You can write a scheduled job that updates prices from an exchange-rate feed.

### Can one Medusa store use different payment providers per country?

Yes. Each Medusa region has its own list of payment providers, and customers only see the providers enabled for their region at checkout.

### Does Medusa calculate customs duties or act as merchant of record?

No. Medusa has no built-in duty or landed-cost calculation and does not act as merchant of record. You integrate a landed-cost or merchant-of-record service through a custom workflow or provider.

### Can Medusa show different stock per country?

Yes. Medusa's Stock Location and Inventory Modules track inventory per location, and shipping options are tied to the service zones of each location's fulfillment set.

### Is Medusa an alternative to Shopify Markets?

Medusa covers multi-region pricing, taxes, shipping and payments from one backend, but it needs a developer and has no built-in merchant-of-record service like Shopify Managed Markets.

## Documentation

- [Multi-Region Store Recipe](https://docs.medusajs.com/resources/recipes/multi-region-store)
- [Manage Regions in Medusa Admin](https://docs.medusajs.com/user-guide/settings/regions)
- [Manage Tax Regions in Medusa Admin](https://docs.medusajs.com/user-guide/settings/tax-regions)
- [Retrieve Product Variant's Prices in Storefront](https://docs.medusajs.com/resources/storefront-development/products/price)
- [Integrate Avalara (AvaTax) for Tax Calculation](https://docs.medusajs.com/resources/integrations/guides/avalara)

## Related

- [Tax-inclusive vs tax-exclusive pricing for US, UK and EU](https://medusajs.com/kb/international-commerce/tax-inclusive-pricing-international.md)
- [Multi-currency pricing via API](https://medusajs.com/kb/international-commerce/multi-currency-pricing-api.md)
- [How to build a B2B store with custom pricing per customer](https://medusajs.com/kb/b2b/b2b-customer-specific-pricing.md)
