7 minutes
h1

Setting up Adobe Commerce for multiple regions means making hard architectural decisions before a single locale is configured — scope choices, tax compliance requirements, and carrier version compatibility that implementation guides routinely gloss over. This article covers what actually breaks and why.

Selling across borders is one of the most exciting and operationally complex things you can do with Adobe Commerce. Whether expanding from one country to three or managing a portfolio of brands across a dozen markets, the platform gives powerful tools to do it well. But out-of-the-box features only take you so far without a clear setup strategy.

This article draws on real-world implementation experience to walk through the foundational decisions around multistore architecture, how to localize content without duplicating work, and how to configure tax and shipping rules that actually hold up under the pressure of diverse customer expectations and regulatory requirements. The scope decisions described here are the difference between a clean implementation and one full of surprises.

Architecting your multistore setup — decide before you build

Before configuring a single locale or tax zone, the most critical decision is architectural: how many stores do you actually need? Adobe Commerce’s three-tier hierarchy — Website → Store → Store View — gives immense flexibility, but it also creates confusion when teams conflate these levels.

Tier
Use when
Example
Website
You need isolated catalogs, pricing, or separate customer bases
B2B vs. B2C storefront, or two distinct brand entities
Store
Same catalog, distinct root category presentation
North America vs. Europe sharing Website-level products
Store View
Language variations within the same market
English and French views for Canada
NOTE
A Store defines the root category and the presentation of the Website-level catalog. It does not provide separate pricing, tax settings, or product visibility rules — those are Website-scoped. Many catalog settings including product attributes, tax classes, and product enablement are Website-scoped, not Store-scoped. If your markets require independent pricing or tax behavior, that separation must live at the Website tier, not the Store tier.
NOTE
Multistore performance: With larger multistore deployments, be aware of caching challenges with many Store Views, Elasticsearch index growth beyond 20 Store Views, and the need for CDN and Varnish configuration variations per Website. These are not blockers, but they should be scoped into architecture planning before go-live.

How to configure a new Store View for a new locale

Localizing content that actually resonates

Localization goes well beyond translation. Customers in Germany have different trust signals than customers in Japan. Payment methods that convert in Brazil may not exist in Australia. Getting localization right means thinking holistically about content, UX, and commerce behavior — not just swapping strings.

NOTE
Payment methods: Payment methods are Website-scoped, with the exception of PayPal, which has Global-level settings with child settings at lower scopes. For multi-region setups, configure and validate payment methods at the Website scope for each market — do not assume a Global configuration will behave correctly per region.

Translating CMS content and product data

Three common approaches, in order of scalability:

Manual Store View overrides work for smaller catalogs. Navigate to each product and use the Store View scope switcher to enter translated names, descriptions, and attributes. This does not scale.

Import/Export is suitable for mid-size catalogs. Use System → Import/Export to export product data, hand off to translators, and re-import against specific Store Views.

NOTE
The correct column name for targeting Store View–scoped content during product import is store_view_code — it is the documented, official column name listed second in Adobe’s standard product CSV structure, immediately after sku. There is no “store” column in Adobe’s product CSV schema. Using the wrong column name will result in data being written at the wrong scope or being silently ignored. For more information, see the Adobe Commerce product data attributes documentation.

Third-party Translation Management Systems (TMS) are recommended for any large catalog. Integrate with tools like Phrase for workflow-driven translation at scale.

NOTE
Adobe Commerce includes built-in translation mechanisms via language packages (located at app/i18n/<Vendor>/<language>) and an inline translation tool. What Commerce does not include is enterprise translation workflow management or TMS connectors. For small teams maintaining a limited number of locales, language packages may be sufficient. For scalable multi-locale operations, a TMS integration is the correct path.

Localizing currency and formatting

NOTE
Base Currency can technically be set at Global scope, but this is not recommended for multistore implementations. Set it at Website scope to ensure market-specific currency behavior and avoid unintended overrides across websites.
NOTE
Fixer.io (legacy) remains the default in the UI but has been officially deprecated since Adobe Commerce 2.4.6 and replaced by the Fixer API (APILayer) service. Merchants on 2.4.6 or later should configure the APILayer-based Fixer API instead. On the Scheduled Import Settings panel, the default still shows fixer.io — this needs to be updated manually. For more information, see the Adobe Commerce currency setup documentation.

Configuring tax rules that work across borders

Tax is where many multistore implementations run into trouble. The rules vary not just by country but by product type, customer type, and sometimes the customer’s precise location within a country.

Understanding Adobe Commerce’s tax model

Adobe Commerce calculates tax based on Tax Rules — three-way intersections of:

Setting up tax rules for a new market: step-by-step

NOTE
Product Tax Classes and Customer Tax Classes can be created inline within the Tax Rule form using the Add New Tax Class option. However, they are not exclusively managed there. Customer Tax Classes are also accessible via Stores → Other Settings → Customer Groups. Product Tax Classes are attribute options on the Tax Class product attribute. Understanding where these live matters when auditing or bulk-managing classes across a large implementation.

EU VAT: Key considerations

VAT One Stop Shop (OSS): OSS applies to cross-border sales of both goods and digital services to EU consumers — not just digital goods. If you sell into EU markets, you may need to register for OSS and apply the VAT rate of the customer’s country. Adobe Commerce supports per-country rates, but OSS reporting and remittance is entirely the merchant’s responsibility. Adobe Commerce does not automate OSS reporting.

B2B Reverse Charge: When selling to VAT-registered EU businesses in other member states, the reverse charge mechanism typically applies.

NOTE
Handling reverse charge correctly requires more than a VAT-exempt Customer Tax Class and a 0% rule. It also requires VAT ID validation at checkout and storing the validated VAT ID with the order for audit purposes. Adobe Commerce does not handle this automatically. The native VAT ID validation covers the VIES check, but full reverse charge compliance — including correct tax group assignment, audit-grade VAT ID storage, and checkout UX — may still require a VAT exemption extension depending on your implementation's requirements. For more information, see the VAT ID validation in Adobe Commerce documentation.

VAT number validation at checkout: Adobe Commerce includes native VAT ID validation, configurable under Stores → Settings → Configuration → Customers → Customer Configuration. The system validates against the European Commission VIES server and stores the VAT request ID and date in the order’s Comments History. An extension may still add value for advanced audit or UX requirements, but native validation is available out of the box. (Reference: https://experienceleague.adobe.com/en/docs/commerce-admin/stores-sales/site-store/taxes/vat)

Shipping configuration for multi-region operations

Shipping configuration is the final piece — and often the most visible one to customers. Poorly configured shipping can kill conversion even when everything else is correct.

Structuring shipping methods across stores

Adobe Commerce supports multiple carriers natively — UPS, FedEx, DHL, USPS — and a flexible Table Rates system for custom shipping logic.

NOTE
Native carrier support is subject to API changes and Commerce version. Two carriers require immediate attention: First, the USPS Legacy Web Tools API (not ‘SOAP API’ — corrected terminology per Adobe documentation) was retired on January 25, 2026. Merchants on Adobe Commerce 2.4.6, 2.4.7, or 2.4.8 without the migration patch will experience active USPS shipping failures today — this is not a future risk. Second, DHL: schema changes occurred across 2022–2023 spanning three API versions, but modern 2.4.6+ natively supports MyDHL REST APIs alongside the existing DHL Express XML integration. If you are on 2.4.6 or later, the DHL compatibility issue is resolved natively. Verify both carriers against your specific Commerce version before go-live. For more information, see the Adobe Commerce shipping carriers documentation.

Two key principles for multi-region setups:

Scoped configuration: Always switch the scope selector to the target Website before configuring carriers. Shipping settings are generally Website-scoped — configuring at Global scope will apply changes across all websites.

NOTE
While most carrier configuration is Website-scoped, certain carrier subsettings remain Global depending on the Commerce version. Confirm the scope behavior for each carrier setting in your version before assuming Website-scope isolation.

Table Rates for complex rules: If shipping logic depends on weight, price thresholds, or destination region in combination, Table Rates (Stores → Settings → Configuration → Sales → Delivery Methods → Table Rates) gives full control via CSV upload. The CSV import is also scoped per Website — ensure you are at the correct Website scope when importing.

Setting up Table Rates for international shipping

Key considerations for cross-border shipping

Duties and taxes at the border: Decide whether you operate as DDP (Delivered Duty Paid) or DDU (Delivered Duty Unpaid). DDP provides a better customer experience but requires more logistics setup. Communicate the policy clearly at checkout.

Restricted destinations: Go to Stores → Settings → Configuration → Sales → Delivery Methods, switch to the target Website scope, then set Ship to Applicable Countries to ‘Specific Countries’ for each carrier.

Free shipping thresholds: Configure these per Website scope if thresholds differ by market.

NOTE
Free Shipping carrier method thresholds are Website-scoped. Cart Price Rules used for promotional free shipping are Global rules but can be restricted per Website within the rule configuration. These are two separate mechanisms — understand which one applies to your use case before configuring.

Estimated delivery dates: Adobe Commerce does not natively display carrier-based delivery estimates in checkout. MSI Source Selection Algorithms support limited ETA logic for in-store delivery scenarios, but cart and checkout delivery estimates remain non-native. Consider an extension or custom logic factoring in carrier cutoff times and regional handling periods.

Key takeaways

What I'd do differently today

I'd make Website vs Store View a hard gate before any Admin configuration starts

The most expensive mistake I’ve seen in multistore implementations is the wrong scope tier choice — and it almost always happens because that decision gets deferred. A team starts configuring Store Views for what are actually separate markets with different pricing, different payment methods, or different tax behavior. Everything looks fine until it doesn’t.

Today I treat Website vs Store View as a blocking question, not a background assumption. Before anyone logs into the Admin, that structure needs to be decided, documented, and agreed on. Changing it mid-project means rebuilding — and changing it post-launch means rebuilding while the store is live. Neither is a good situation to explain to a client.

I'd stop treating tax as a late-stage configuration item

We caught a serious EU VAT compliance gap in UAT — which is about the best time you can catch it, but not nearly as good as never having the gap. The issue wasn’t that anyone was careless. It was that tax configuration was scoped and scheduled like a checkout setting, not like the compliance requirement it actually is.

For EU markets specifically: OSS reporting, B2B reverse charge, and VAT ID validation are not things you bolt on at the end. They have to be part of the requirements conversation before a line of configuration is written. If you’re implementing for a merchant selling cross-border into the EU and these items aren’t on the functional spec, push back before UAT — not during it.

The same goes for US sales tax. If someone on the project is still suggesting you manually manage state rates, treat that as a project risk, not a configuration question. At any meaningful transaction volume, manual US sales tax management is not a viable approach — full stop.

The platform gives you the tools to get this right. The implementations that go sideways aren’t usually technical failures — they’re sequencing failures. Decide the architecture first. Treat tax as a compliance workstream, not a config task. Everything else in this article follows from getting those two things right.

Actionable next steps

  1. Map your Website / Store / Store View structure on paper before touching the Admin. Confirm which markets need Website-level isolation (separate pricing, payment methods, tax behavior) versus Store View-level separation (language only). Changing this after launch is the most expensive mistake in a multistore implementation.

  2. Audit your product import CSV columns. The correct column to target Store View content is store_view_code — do not replace it. If any import scripts or documentation in your environment reference a ‘store’ column, that is incorrect and will cause imports to fail silently or write to the wrong scope. Verify imports are writing to the correct scope by checking a product record after import. For more information, see the Adobe Commerce product data attributes documentation.

  3. Verify carrier compatibility immediately, not just at go-live. USPS Legacy Web Tools API was retired January 25, 2026 — merchants on 2.4.6, 2.4.7, or 2.4.8 without the migration patch have active shipping failures today. For DHL: 2.4.6+ natively supports MyDHL REST APIs, so the compatibility gap is resolved on current versions. Check your Commerce version and apply the USPS migration patch if you have not done so.

  4. For EU VAT reverse charge, do not rely on a 0% tax rule alone. Implement a VAT exemption extension with EU VIES API validation, and confirm that validated VAT IDs are stored with orders for audit purposes.

  5. Confirm whether OSS registration applies to your cross-border EU sales — it covers both goods and digital services to EU consumers since July 2021. Adobe Commerce supports per-country VAT rates but does not automate OSS reporting; this is the merchant’s responsibility.

  6. Set Base Currency at Website scope, not Global. Configure payment methods per Website. Import Table Rate CSVs at Website scope. Before any production configuration, verify the scope selector is set to the correct level — a single wrong-scope setting can silently affect all websites.