Table of Contents

Prices

Understand and configure product pricing in Dynamicweb

Every product in Dynamicweb has a default price — a single number in your default currency. For many scenarios, that is all you need.

But commerce is rarely that simple. You may sell in multiple currencies, operate in countries with different VAT rates, offer negotiated prices to key accounts, or give volume discounts to encourage larger orders.

The price matrix handles all of this. It lets you create as many price entries as you need for a product, each scoped to a specific combination of currency, country, customer, quantity, date range, and more.

This article starts with the simplest pricing scenario and adds one dimension at a time, so you can stop reading when you have reached the level of complexity your business requires.

The default price

All products have a standard product field called Price in which you enter a price using the default currency.

Default price field

When a product is shown on the frontend, this is the price that is used unless the price matrix provides a more specific match.

If your solution supports multiple currencies, the default price is automatically converted using the exchange rates configured on each currency. You do not need to create separate price entries for each currency unless you want to set explicit prices.

Example; one product, one price:

Product Default price Currency
Trail Runner 500 120.00 EUR

A customer browsing a GBP website sees the price converted at the exchange rate — for example, £104.00 if the EUR-to-GBP rate results in that value. A customer on the EUR website sees a price of €120.00.

Tip

The default currency context for a website is set in the website ecommerce settings.

The Price Matrix

For more advanced pricing needs, Dynamicweb provides the price matrix — a flexible, multi-dimensional list of price entries for a product, using a format familiar from classic ERP systems.

To open the price matrix:

  1. Open the product overview screen
  2. Open the action menu and select Prices

Price matrix

Each row in the price matrix is a price entry with up to four dimensions:

Dimension Controls
Price The amount, currency, VAT handling, discount, and discount settings
When Quantity thresholds and date ranges
Who Which customers or customer groups qualify
Where Which variant, unit, stock location, country, language, or shop the price applies to

A price entry only applies when all of its criteria are met. Criteria that are left blank are treated as "all" — meaning a price with no country set applies in every country, a price with no user set applies to every user, and so on.

To add a new price, click New Price and configure the dimensions described below.

Note

Price matrix entries are often created and maintained via integration with an ERP system rather than entered manually.

Price

The Price section defines the core pricing information. Price section In this section:

Amount and currency

Enter the price and select the currency. These are the only required fields. Every other field on the price entry is optional.

Example — explicit prices in multiple currencies:

Product Price Currency
Trail Runner 500 120.00 EUR
Trail Runner 500 109.00 GBP
Trail Runner 500 899.00 DKK

When a customer browses in GBP, the system finds the explicit GBP price (£109.00) instead of converting from EUR. This is useful when you want to set market-friendly price points rather than relying on exchange rates.

VAT handling

Each price entry specifies how VAT is handled using one of two options:

Option What it means Typical use
Price does not include VAT The entered amount is net. VAT is added based on the customer's country. B2B pricing, where business customers expect to see prices without VAT.
Price includes VAT The entered amount is the gross (final) price. The system calculates how much of it is VAT based on the customer's country. B2C pricing, especially in the EU, where consumers expect to see VAT-inclusive prices.
B2C example — same gross price, different VAT

A common B2C scenario: you want consumers in every EU country to see the same price on the shelf — for example, €99.95. Because VAT rates differ by country, the VAT amount inside that price varies.

Country Gross price VAT rate VAT amount Net price
Germany €99.95 19% €15.96 €83.99
Netherlands €99.95 21% €17.35 €82.60
Denmark 799.00 DKK 25% 159.80 DKK 639.20 DKK

To configure this, create one price entry per country with Price includes VAT selected. The system handles the back-calculation automatically, using the VAT rate from the VAT group assigned to the product, or the country's default VAT rate.

Tip

This approach mirrors how physical retail works in the EU: the sticker price is the same everywhere, but the merchant remits different VAT amounts depending on the country.

B2B example — net price, VAT added at checkout

In B2B, the standard practice is to show prices without VAT. The customer sees the net price, and VAT is added during checkout based on the delivery country and the customer's VAT registration.

Product Net price Currency Customer sees (DE, 19% VAT) Customer sees (NL, 21% VAT)
Trail Runner 500 100.00 EUR €100.00 + €19.00 VAT = €119.00 €100.00 + €21.00 VAT = €121.00

To configure this, create a price entry with Price does not include VAT selected. You do not need separate entries per country — the system adds the correct VAT at checkout.

Note

VAT calculation depends on the product's VAT group, the customer's country, and whether reverse charge applies. For details on how VAT is calculated, see VAT & Taxes. For system-wide VAT settings (such as rounding), see Price settings.

Informative prices

Check the Informative box to mark a price as a reference price that is never applied to an order. Informative prices are used to display:

  • Recommended retail price (RRP/MSRP) — "Suggested price: €149.00"
  • Before price — "Was: €149.00, Now: €119.00"

The system retrieves informative prices separately from regular prices, so they never interfere with the actual price calculation. Your frontend template controls how and where they are displayed.

Example:

Product Price Currency Informative Purpose
Trail Runner 500 120.00 EUR No The selling price
Trail Runner 500 149.00 EUR Yes The RRP shown for comparison

Discount percentage

Set a discount percentage to reduce the price. The discount is applied to the amount, so a price of €100.00 with a 20% discount results in an effective price of €80.00.

You can also create discount-only entries by setting the price to 0 and specifying only a discount percentage. In this case:

  • The discount is applied to the lowest applicable priced entry in the matrix
  • If no priced entries exist, the discount is applied to the product's default price

This is particularly useful in B2B scenarios where you want to define customer-group discounts independently of specific price points.

Example — customer group discount without a fixed price:

Price Currency Discount % User group What happens
100.00 EUR (all) Base price for everyone
0 EUR 15% Wholesale Wholesale customers pay €85.00 (15% off the base)
0 EUR 25% Platinum Platinum customers pay €75.00 (25% off the base)
Note

This structure mirrors how price and discount lines work in Microsoft Dynamics 365 Business Central, making it straightforward to synchronize via integration.

Allow order line discounts

Controls whether this price entry can receive product-specific discounts (e.g., a discount configured on a promotion that targets this product). When unchecked, no product discounts or discount percentages are applied to the order line.

Enabled by default.

Allow order discounts

Controls whether this price entry contributes to and receives order-level discounts — for example, "10% off orders over €500."

When unchecked, order lines with this price are excluded from order discount calculations. This is useful for products sold at already-negotiated margins where further discounting would erode profitability.

Enabled by default.

See Allow order discounts — examples for detailed calculation walkthroughs.

Priority

When multiple price entries match, Dynamicweb uses this selection logic:

  1. If any matching price has a priority value greater than zero, only the prices with the highest priority are considered
  2. Among those candidates, the lowest effective price (amount after discount) is selected
  3. If no prices have a priority set, the system selects the lowest effective price across all matches

Leave the priority field empty to use the default lowest-price behavior. Use priority when you need a specific price to take precedence even if it is not the cheapest — for example, a contractual price that must apply regardless of promotional prices.

Tip

Priority is typically used when prices are managed via ERP integration and the ERP system determines which price should win.

When

The When section controls temporal and quantity conditions. Price section In this section:

Quantity

Set a quantity threshold to create tiered pricing. The price applies when the customer orders at least this many units.

Example — quantity breaks:

Product Price Currency Quantity Effective price per unit
Trail Runner 500 120.00 EUR (empty) €120.00 (any quantity)
Trail Runner 500 108.00 EUR 3 €108.00 (3 or more)
Trail Runner 500 96.00 EUR 10 €96.00 (10 or more)
Trail Runner 500 84.00 EUR 50 €84.00 (50 or more)

A customer ordering 5 units pays €108.00 each. A customer ordering 50 pays €84.00 each.

Note

When a price is set for the Any variants option (see Where — Variant), the quantity threshold can be evaluated against the total quantity across all variants of the product, not just a single variant. This is useful when you want to offer volume discounts regardless of which size or color the customer picks.

Valid from / Valid to

Set a date range to create time-limited prices — for example, a seasonal promotion or a contractual price that expires.

Example — Black Friday pricing:

Product Price Currency Valid from Valid to
Trail Runner 500 120.00 EUR (empty) (empty)
Trail Runner 500 89.95 EUR 2025-11-25 2025-12-02

Outside the date range, the regular price applies. During Black Friday week, the promotional price takes over automatically.

Who

The Who section targets prices to specific customers or customer groups. Price section In this section:

User

Select a specific user to create a customer-specific price. This is the most specific targeting — it overrides group-level and general prices for that individual.

Example — negotiated price for a key account:

Product Price Currency User
Trail Runner 500 120.00 EUR (all)
Trail Runner 500 95.00 EUR Acme Corp (user #142)

When the buyer from Acme Corp logs in, they see €95.00. Everyone else sees €120.00.

User group

Select a user group to apply a price to all members of that group. This is the standard way to implement tiered pricing in B2B — for example, different price levels for distributors, resellers, and retail customers.

Example — tiered group pricing:

Product Price Currency User group
Trail Runner 500 120.00 EUR (all)
Trail Runner 500 102.00 EUR Resellers
Trail Runner 500 90.00 EUR Distributors

Customer number / Group customer number

For businesses using ERP-assigned customer numbers, you can target prices using a customer number (for an individual account) or a group customer number (for a customer segment defined in the ERP).

These fields let you match prices to customers based on ERP identifiers rather than Dynamicweb user IDs, which simplifies integration and keeps pricing in sync with the ERP.

Where

The Where section scopes a price to a specific product variant, unit of measure, stock location, language, country, or shop. Price section In this section:

Variant

By default, a price applies to all variants of a product. You can restrict a price to:

  • All variants — the price applies regardless of which variant is selected (default)
  • Any variants — also applies to all variants, but with a difference: quantity thresholds are evaluated against the total quantity of all variants combined rather than each variant individually
  • A specific variant — the price applies only to that variant (e.g., "Size XL / Red")

Example — variant-specific pricing:

Product Variant Price Currency
Trail Runner 500 (all) 120.00 EUR
Trail Runner 500 Limited Edition Gold 159.00 EUR

Unit

If your product is sold in multiple units of measure (e.g., per piece, per box, per pallet), you can set a different price per unit.

Example:

Product Unit Price Currency
Cleaning Agent X Piece (1 L) 12.50 EUR
Cleaning Agent X Box (12 × 1 L) 132.00 EUR
Cleaning Agent X Pallet (48 boxes) 5,760.00 EUR

Stock location

Set different prices for different warehouses or fulfillment centers. This is relevant when stock at different locations has different costs — for example, a local warehouse versus an overseas distribution center.

Language

Restrict a price to a specific language version of your site. This is typically used when language implies a different market or pricing context — for example, a French-language site serving France versus a Dutch-language site serving Belgium.

Country

Restrict a price to a specific country. Combined with VAT handling, this is how you implement market-specific pricing.

Example — different prices per market:

Product Price Currency Country VAT included
Trail Runner 500 99.95 EUR Germany Yes
Trail Runner 500 99.95 EUR Netherlands Yes
Trail Runner 500 799.00 DKK Denmark Yes
Trail Runner 500 89.95 GBP United Kingdom Yes

Each country sees a locally optimized price point. The system back-calculates the correct VAT amount per country.

Shop

Restrict a price to a specific shop (sales channel). Use this when you run multiple storefronts — for example, a B2C webshop and a B2B portal — and want different pricing on each.

Example:

Product Price Currency Shop
Trail Runner 500 120.00 EUR B2C Webshop
Trail Runner 500 96.00 EUR B2B Portal

How prices are resolved

When a customer views a product or adds it to the cart, the system evaluates all price entries for that product and selects the one that applies. Understanding this process helps you predict which price a customer will see.

The filtering step

Every price entry is tested against the customer's current context. A price must match all of its criteria:

Filter What is checked
Currency Does the price's currency match the session currency?
Country Does the price's country match the customer's country? (Empty = all countries)
Shop Does the price's shop match the current shop? (Empty = all shops)
Language Does the price's language match the current language? (Empty = all languages)
Variant Does the price's variant match the selected variant? (Empty or "Any" = all variants)
Unit Does the price's unit match the selected unit? (Empty = all units)
Stock location Does the price's stock location match? (Empty = all locations)
Quantity Is the order quantity at least the price's quantity threshold? (Empty = any quantity)
Valid from / to Is the current date within the price's date range? (Empty = always valid)
User Does the price's user match the logged-in customer? (Empty = all users)
User group Is the logged-in customer a member of the price's user group? (Empty = all groups)
Customer number Does the customer's number match? (Empty = all customers)

Any criteria left blank on a price entry is treated as "applies to all." Only price entries that pass every filter proceed to the selection step.

The selection step

Among the price entries that pass all filters:

  1. Priority check — if any price has a priority greater than zero, only the prices with the highest priority value are kept
  2. Lowest effective price — among the remaining candidates, the one with the lowest effective price wins. The effective price is: amount × (1 − discount percentage ÷ 100)
  3. Fallback — if no price matrix entry matches at all, the product's default price is used
Important

The system always selects the best price for the customer. In the common case (no priorities set), this means the lowest price. When priorities are used, the highest-priority price wins — even if a lower price exists at a different priority level.

Worked example

Consider a product with these price entries:

# Price Discount Qty Country User group Effective price
1 €120.00 €120.00
2 €108.00 3 €108.00
3 €0.00 15% Resellers (discount only)
4 €95.00 Key Accounts €95.00
5 €99.95 Germany €99.95

Scenario A: A guest customer in France orders 1 unit. Entries #3 and #4 are excluded (wrong group). Entry #2 is excluded (quantity < 3). Entry #5 is excluded (wrong country). Only entry #1 matches → €120.00.

Scenario B: A Resellers group member in France orders 5 units. Entries that match: #1 (€120.00), #2 (€108.00, qty ≥ 3), #3 (discount-only, applies 15% to the lowest priced match). Entry #3's 15% discount is applied to the lowest priced match (#2): €108.00 × 0.85 = €91.80.

Scenario C: A Key Accounts member in Germany orders 1 unit. Entries that match: #1 (€120.00), #4 (€95.00), #5 (€99.95). Lowest effective price → €95.00.

Appendix A: Combining dimensions

The power of the price matrix is that dimensions can be freely combined. Here are common configurations:

B2C multi-country with VAT

Goal: Charge consumers a clean shelf price in each market, with VAT baked in.

Product Price Currency Country VAT included Qty User
Running Shoe Pro 149.95 EUR Germany Yes
Running Shoe Pro 149.95 EUR Netherlands Yes
Running Shoe Pro 149.95 EUR France Yes
Running Shoe Pro 1,199.00 DKK Denmark Yes
Running Shoe Pro 129.95 GBP United Kingdom Yes

B2B tiered pricing with quantity breaks

Goal: Give resellers better prices at higher volumes, with separate pricing tiers per customer group.

Product Price Currency Qty User group VAT included
Industrial Bearing X200 45.00 EUR No
Industrial Bearing X200 42.00 EUR 50 No
Industrial Bearing X200 38.00 EUR 100 No
Industrial Bearing X200 0.00 (10% disc.) EUR Silver No
Industrial Bearing X200 0.00 (20% disc.) EUR Gold No

A Gold customer ordering 100 units: the base price at qty 100 is €38.00, with a 20% group discount applied → €30.40 per unit.

Seasonal sale with before-price

Goal: Run a 2-week promotion and show the original price for comparison.

Product Price Currency Informative Valid from Valid to
Winter Jacket Deluxe 249.00 EUR Yes
Winter Jacket Deluxe 199.00 EUR No
Winter Jacket Deluxe 149.00 EUR No 2025-01-15 2025-01-31

During the sale period, the customer sees: €249.00 €149.00. Outside the sale period: €249.00 €199.00. The informative price provides the "was" reference.

Contract pricing with priority

Goal: A negotiated contract price must always apply, regardless of whether a cheaper promotional price exists.

Product Price Currency User Priority Valid from Valid to
Server Rack Unit A 2,400.00 EUR
Server Rack Unit A 1,999.00 EUR 2025-03-01 2025-03-31
Server Rack Unit A 2,100.00 EUR Acme Corp 10

During the March promotion, most customers see €1,999.00 (lowest price). Acme Corp sees €2,100.00, because their contract price has priority 10, which overrides the promotional price.

Appendix B: Allow order discount

The Allow order discounts toggle on a price entry controls whether the order line participates in order-level discounts. Here are detailed walkthroughs.

Setup:

  • Product A: Default price 1,000 DKK, price matrix price 500 DKK
  • Product B: Default price 200 DKK, no price matrix entry
  • Order discounts applied: Flat 100 DKK off + 10% order discount

Allow order discounts — unchecked (Product A)

  1. Product A: 500 DKK — excluded from order discounts
  2. Product B: 200 DKK
    • 100 DKK flat discount applied → 100 DKK
    • 10% order discount applied → 90 DKK
  3. Total: 500 + 90 = 590 DKK

Product A keeps its price intact. Only Product B receives the order discounts.

Allow order discounts — checked (Product A)

  1. Product A: 500 DKK
  2. Product B: 200 DKK
  3. Subtotal: 700 DKK
    • 100 DKK flat discount → 600 DKK
    • 10% order discount → 540 DKK
  4. Total: 540 DKK

Both products participate in the order discounts, resulting in a larger total reduction.

Only Product A in cart — unchecked

  1. Product A: 500 DKK
  2. 100 DKK flat discount applied → 400 DKK
  3. 10% order discount is not applied (Product A has order discounts unchecked)
  4. Total: 400 DKK
Note

Flat-rate order discounts apply to the cart total, not individual products, so they still affect the final price even when the only item in the cart has order discounts unchecked. Percentage-based order discounts, however, are excluded for that product.

To top