Cross-Border eCommerce Pricing by Country: How to Charge Different Prices in the Same Currency
Selling cross-border in EUR rarely means one price fits every country. Shipping costs, VAT-inclusive rounding, local competition, and pricing power all pull the right number for the same SKU in different directions. Spree Commerce ships Markets and Price Lists with Market rules in the free Community Edition.
Key Takeaways
Last verified: May 2026
The problem: Selling in EUR across multiple countries rarely means one price fits all because shipping, VAT-inclusive rounding, local competition, and pricing power all pull the right number in different directions per market.
The fix: Charge a different EUR price per country on one store, configured from the admin rather than spreadsheets or separate storefronts.
What Spree Commerce ships: Markets and Price Lists. Set a base EUR price on each product, then let one Price List per country override it for shoppers in that market. Both are free in Community Edition.
Why one EUR price rarely fits every country you sell in
A brand selling across multiple EU countries in EUR usually ends up wanting different display prices per country, even though the currency is the same. The reasons are not exotic. They are the everyday mechanics of running a cross-border catalog.
Shipping is the most common driver. A “free shipping” promise that holds in Germany may cost the brand more to fulfil in Spain or Portugal because of distance and local carrier rates. If the price has to absorb the difference, the same product carries a slightly different number in each country.
VAT-inclusive display pricing is the second. EU rules require consumer prices to include VAT, and standard rates vary by country (Germany 19%, France 20%, Spain 21%, Italy 22%). A brand targeting round display prices in each country has to adjust the base figure so the post-VAT total lands on something like €99 or €99.99 rather than €98.74.
Local competitive pricing is the third. Marketplaces and direct competitors set the local benchmark. Brands often match locally rather than impose one global figure that may sit awkwardly against the local norm.
Pricing power is the fourth. Denmark’s consumer price level sits 43% above the EU average. Bulgaria’s sits 40% below. Eurostat’s Purchasing Power Parities programme prices a basket of comparable consumer goods across 36 European countries every year, and even inside the eurozone, comparable products fetch meaningfully different prices across markets.
The conclusion is that the right number for the same SKU across the eurozone markets a brand sells into is rarely identical. The configuration challenge is doing it without running a separate storefront per country or relying on a monthly spreadsheet override ritual.
How big is the cross-border eCommerce market in EUR?
Cross-border eCommerce is the practice of selling to shoppers in countries other than the brand’s home market. The eurozone version, which is selling in EUR across multiple EU countries, has become a sizeable share of European retail.
Europe’s cross-border eCommerce B2C market reached €108 billion in 2025, representing 25% of total online sales in the region. A quarter of every EU eCommerce euro now crosses a border. The eurozone countries this matters most for include Germany, France, Italy, Spain, Ireland, the Netherlands, and several more.
Cross-Border Commerce Europe’s 2025 marketplaces report frames the broader picture: “European cross-border marketplaces recorded €216.82 billion in turnover, reflecting a 10% increase from the previous year.” Different growth rates, different price elasticities, different competitive pressures, one currency.
The size of this market means pricing strategy is not a back-office optimization anymore. A brand pricing identically across regions it serves is the only party in the trade treating them as a single market, when shoppers, shipping carriers, tax authorities, and competitors all treat them as distinct.
How do you charge different EUR prices in different countries on one store?
The first instinct is to spin up separate stores per country. For an established brand, that means parallel catalogs, parallel admins, parallel deployment paths, and parallel places to update stock when a vendor ships late. It rarely works at scale.
The right answer is one storefront with separate pricing definitions per country. Each country gets its own market, and each market carries a Price List. The base product price stays put; the Price List overrides it for shoppers browsing from that country.
As one illustrative scenario, imagine a brand selling skincare in EUR across France, Germany, and Spain. They might want €109 in Germany, €99 in France, and €89 in Spain on the same SKU, for the reasons covered above. That is three markets, three Price Lists, each with a Market rule. The same pattern extends to the Netherlands, Italy, Ireland, Portugal, Belgium, or any combination of markets a brand sells into.
In Spree Commerce, this is configured from the admin in a handful of steps. The brand keeps one store across multiple markets, the catalog stays single-source, and the price shoppers see is the right one for where they are.
What does country-specific pricing look like inside Spree Commerce?
Country-specific pricing in Spree Commerce is two features working together: Markets feature (per-currency, per-locale storefronts) and Price Lists with Market rule. Both ship in the free Community Edition.
A market in Spree Commerce is a distinct selling region. Each market carries its own currency, languages, payment methods, and shipping rules. For the EUR-across-three-countries scenario, the brand defines three markets: France, Germany, and Spain. All three use EUR, but each one is a distinct context the storefront uses to decide what to show.
A Price List is an override layer on top of the base product price. Without a Price List, every shopper sees the base EUR price. With a Price List that has a Market rule, only shoppers in that market see the override.
For three different prices across three countries, the brand creates three Price Lists, attaches a Market rule to each, and sets the country-specific price on the products it cares about. The base price stays as the catalog default for any market without a Price List.
The walkthrough lives in the docs: step-by-step multi-region pricing setup covers the admin flow end to end, including how the order admin shows which market each order was placed in for order-market traceability in the admin. For brands moving over from elsewhere with existing pricing data, the bulk product import with per-currency pricing is a CSV import flow that updates prices for multiple currencies and markets in one upload.
Wholesale pricing per region: combining Customer Groups with Markets
The same Price List engine handles a second pattern many cross-border brands need: wholesale pricing per region. A brand selling DTC in EUR across France, Germany, and Spain also wholesales to boutique partners in each of those countries plus US distributors paying in USD. Each region’s wholesale tier is different. Each price list is different.
The mechanic is a Match All rule. One Price List, two clauses: a Customer Groups feature clause says “this applies to the Wholesale Buyers group,” and a Market clause says “this applies to the Germany market.”
A wholesale buyer logged in from Germany sees the Germany wholesale price. The same buyer logged in from France sees the France wholesale price. The same buyer logged in from the US sees the USD wholesale price.
Three Price Lists, one Customer Group, three Market rules. The retail catalog and the retail prices keep working unchanged for shoppers without a wholesale account.
The full configuration sits in regional wholesale pricing setup. The pattern combines what this post covers (Market rule on a Price List) with what shoppers logged into a B2B account already use (Customer Group rule on a Price List). In Spree Commerce, both rules ship in Community Edition as first-party features rather than plugin code.
Per-market quantity discounts: combining volume tiers with Markets
A second combo many cross-border brands need: quantity discounts that vary by country. A craft-supply brand offering bulk pricing might want the 21-to-50-unit tier to land at €4.40/unit in Germany, €4.20/unit in France, and €4.60/unit in Spain. Same product, same threshold, three different per-unit prices depending on which market the cart is placed from.
The mechanic mirrors the wholesale combo. One Price List per market-and-tier pair, each with two clauses: a Market rule and a volume pricing tiers rule (Min Quantity and Max Quantity).
Six Price Lists cover two tiers across three markets. The price changes in the cart the moment the shopper crosses the quantity threshold, with no coupon code to remember and no plugin to install. Spree Commerce records which market each order was placed in, so a margin report on Friday morning still ties the right price to the right country.
The end-to-end walkthrough is in regional volume pricing setup. As with regional wholesale, the Match All pattern keeps the configuration in the admin rather than in custom code, and the Volume rule itself is the same rule a non-cross-border brand uses for plain bulk discounts.
When you actually need a different solution: multi-currency, wholesale, or quantity breaks
Three sibling scenarios share vocabulary with cross-border pricing but solve different problems. A brand reading this post might recognize a closer fit in one of them.
The first is multi-currency. A brand running a USD storefront that wants to add EUR for European shoppers needs a different setup: a new market with a different currency and base prices on each product in that currency. The walkthrough is the multi-currency pricing setup docs guide. Use it when the question is “what currency does the shopper pay in,” not “what EUR figure do they see.”
The second is wholesale pricing. A brand whose pricing varies by who the buyer is (a logged-in trade account vs. a public shopper) rather than where they are needs Customer Groups, not Markets. The wholesale pricing for logged-in buyers docs guide covers the single-storefront B2B and DTC pattern that flips prices on login.
The third is quantity-based pricing. A brand whose discount kicks in on cart quantity rather than country or customer identity needs the Volume rule on its own. The tiered pricing for bulk orders docs guide covers automatic price breaks at quantity thresholds, with no country or customer-group rules layered on.
If one of those three describes your problem more directly than the country-by-country EUR scenario this post opened with, follow the sibling guide. Cross-border pricing is the right tool when the differentiator is which country a shopper is browsing from, in a currency you already sell in.
Set up cross-border pricing without re-platforming
A brand selling the same product across multiple EU countries usually wants different display prices per country for the reasons covered above: shipping absorption, VAT-inclusive rounding, local competition, and pricing power. The configuration challenge is doing it on one store, without parallel storefronts and without monthly spreadsheet overrides.
Spree Commerce provides Markets and Price Lists with Market rules in the free Community Edition. The same engine handles regional wholesale and per-market quantity discounts as natural extensions of the same primitive, so a brand’s cross-border pricing patterns build on a single foundation.
The walkthrough is in the docs, the configuration is admin-only, and the source code is open. For brands already selling in EUR across multiple eurozone markets, adding per-country pricing is a configuration change rather than a re-platforming project.
Want to talk through your cross-border setup? Talk to our team about multi-region eCommerce on Spree Commerce, or browse the open-source eCommerce on GitHub to start evaluating today.
Frequently Asked Questions
What is cross-border eCommerce pricing?
Cross-border eCommerce pricing is the practice of charging different prices to shoppers in different countries, even when those countries share a currency. The reasons typically include shipping cost absorption into “free shipping” promises, VAT-inclusive display rounding (VAT rates vary per country), local competitive benchmarks, and consumer purchasing power that varies across markets. Spree Commerce supports cross-border pricing through Markets and Price Lists with Market rules, both shipped in the free Community Edition.
How do I sell at different prices in different countries on one store?
You set a base product price in your currency and add one Price List per country, each with a Market rule that targets that country’s market. Shoppers browsing from that market see the Price List price. Shoppers browsing from a market with no Price List see the base price. Spree Commerce stores the originating market on every order, so reports tie each price to the country it was applied in.
Can I do country-specific pricing without running a separate store per country?
Yes. Running a separate storefront per country creates duplicated catalogs, multiple admins, and parallel deployment paths. Spree Commerce supports a single store with multiple markets defined inside it, so the catalog stays single-source while the price shoppers see depends on which market they belong to. Markets carry per-country currencies, languages, payment methods, and shipping rules out of the box.
What’s the difference between multi-currency pricing and country-specific pricing inside one currency?
Multi-currency pricing handles different currencies for different regions. A USD price for the US, a EUR price for Germany, a GBP price for the UK. Country-specific pricing inside one currency handles different prices in markets that share a currency. €99 in Germany, €89 in France, €109 in Spain, all in EUR. The two often appear together but are configured differently. Multi-currency uses base prices per currency on each product. Country-specific pricing uses Price Lists with Market rules. Spree Commerce supports both multi-currency pricing and country-specific pricing in the free Community Edition.
How do I handle wholesale pricing per region across multiple countries?
You create one Price List per region-and-buyer-segment pair and apply two rules: a Market rule for the country and a Customer Group rule for the wholesale segment. A wholesale buyer logged in from Germany sees the Germany wholesale price; the same buyer from France sees the France price; a retail shopper still sees the retail catalog price. Spree Commerce includes Price Lists, Markets, and Customer Groups as native first-party features of the free Community Edition.
Does Spree Commerce support per-market quantity discounts?
Yes. A Price List can carry both a Market rule and a Volume rule at the same time, so a brand can set a 21-to-50-unit tier price that differs between Germany, France, and Spain. The price reveals automatically when the shopper crosses the threshold. Spree Commerce supports combining Market rules and Volume rules on a single Price List in the free Community Edition.