Expanding your business to multiple markets requires additional functionality in your commerce solution. Norce Commerce supports multinational sales by allowing you to configure sales areas, currencies, VAT rates, and price lists. This guide explains the key concepts and best practices for setting up and managing sales in multiple countries.
Norce Commerce uses several core entities to support multinational sales:
- Culture: Determines the language and regional formatting for product content. Each product description is tagged with a
CultureCode
to support multiple languages. - Currency: Defines the monetary unit for transactions. Each application can support multiple currencies, but each price list uses only one currency.
- Sales Area: Represents a market or region with specific VAT rules and regulations. Sales areas are configured per application.
- Price List: Manages product assortments and prices in a specific currency. Price lists can include rounding rules and are linked to sales areas.
When retrieving product information using methods like GetProduct
or ListProducts
, Norce Commerce returns data based on the application's configuration and the parameters you provide. You can override default settings to display products for different markets.
- CultureCode: Specifies the language for product texts. If a translation is missing, a default language can be set.
- CurrencyId: Overrides the default currency. Currency conversion is performed on-the-fly, but rounding must be handled by your application.
- PriceListSeed: A comma-separated list of price lists for price calculation. Only the specified price lists are used if the relevant client setting is enabled.
- CompanyId, CurrencyId: Allows known customers to receive personalized prices and assortments.
The VAT rate for a product is determined by both the sales area and VAT codes. The process is as follows:
- Resolve Sales Area:
- Check the price list for a sales area.
- If not set, use the application's primary sales area.
- Resolve VAT Code:
- Check the product for a VAT code.
- If not set, check the primary category for a VAT code.
- If still not set, use the default VAT code for the sales area.
You can configure sales areas and VAT rates in the Norce Commerce Admin panel. The default VAT rate applies to all products in a sales area unless overridden at the category or product level.
Add Sales Areas:
In the Admin UI, add the sales areas relevant to your markets.Image: Sales area configuration in Admin UI (shows a list of sales areas with options).
Tip: Before the customer selects their country, you can display a default rate (often 0%) using a generic sales area like "No VAT".
Add VAT Codes to Sales Areas:
Assign VAT codes and rates to each sales area.Image: VAT code assignment interface (shows VAT codes and rates for a sales area).
Each sales area can have multiple VAT codes. You can edit names and add new codes as needed.
For products that do not use the standard VAT rate, you can change the default rate for an entire category.
Select a Category:
In the Categories section, choose a category to edit.Image: Category VAT code selection (shows a category with VAT rate options).
Override the Default Rate:
Unlock the VAT rate field and select a new value from the dropdown.Image: VAT code override interface (shows how to unlock and change the VAT rate).
View and Edit All Sales Areas:
Expand the list to view and modify VAT rates for all active sales areas.Image: Expanded sales area VAT rates (shows all sales areas and their VAT rates for the category).
You can assign VAT rates directly to individual products via the Admin UI or through data imports using Norce Commerce Connect.
Image: Product VAT code assignment (shows product-level VAT rate selection).
Note: In the Admin UI, VAT rates are shown on the price list tab for convenience, but VAT rates are not tied to price lists—they are determined by sales area.
When creating or updating a basket, you can set the sales area to apply the correct VAT rate for each customer. The VAT rate is determined as follows:
- Resolve Sales Area:
- Use the basket's sales area if set.
- Otherwise, use the application's primary sales area.
- Resolve VAT Code:
- Use the product's VAT code if set.
- Otherwise, use the primary category's VAT code.
- Otherwise, use the default VAT code for the sales area.
Most Payment Service Providers (PSPs) require the purchaser's country. If the purchase country differs from the application's default, pass the CountryCode
as a payment parameter.
Note: Some PSPs (especially form-based providers) may not allow changing the purchase country after payment initiation. Always confirm the purchaser's country before starting the payment process.
In some markets (e.g., the US), sales tax is calculated per purchase rather than using VAT rates. Norce Commerce does not provide built-in sales tax calculation, but you can integrate third-party services.
Steps to Add Sales Tax:
- Create a product with type
SalesTax
in your catalog. - During checkout, call the external sales tax service with the necessary data.
- Add the calculated tax as a basket item using the
SalesTax
product and set the manual price. - Proceed with payment as usual.
To sell products without VAT, configure a sales area with a 0% VAT rate. Norce Commerce will process sales as if VAT is included, but the rate will be zero.
- Allow customers to select their country during checkout.
- Update the basket to use the correct sales area for that country.
- Pass
CountryCode
to the payment provider.
- Update the basket to use a sales area with a 0% VAT code.
- Use a customer flag or similar mechanism to indicate VAT-free eligibility.
- Let visitors choose currency and language, or display prices without VAT.
- Update baskets to the correct sales area during checkout.
- Pass
CountryCode
to the payment provider.
Note: Confirm that your payment provider and Norce Commerce adapter support the required currencies and markets.
- Determine if the customer requires sales tax calculation.
- Use a sales area with a 0% VAT rate if needed.
- Integrate with a sales tax service as described above.