docs/user/how-to/regional-volume.mdx
Regional volume discounts let you offer quantity-based price breaks that are specific to each market. For example, a customer ordering 25 units in the US sees a USD discount, while a customer ordering the same quantity in Germany sees the equivalent EUR discount — and the thresholds and rates can differ by market too.
In Spree, you do this by combining a Market rule and a Volume rule on each Price List using Match All logic. Each market gets its own set of tiered price lists, and Spree applies the correct one based on where the customer is shopping and how many units they're ordering.
In this guide, we'll set up two volume tiers for each of three markets: US (USD), Germany (EUR), and France (EUR).
<Note>This guide assumes your DE and FR markets are already configured and your products have EUR base prices set. If not, follow <u>Set Up Multi-Currency Pricing</u> first. For volume pricing without a regional split, see <u>Set Up Volume Pricing</u>. For regional wholesale pricing using Customer Group rules, see <u>Set Up Regional Wholesale Pricing</u>.</Note>
Before you start, you should have:
Familiarity with Price Lists and volume rules is helpful. See <u>Set Up Volume Pricing</u> for a full walkthrough of the volume rule setup.
You'll be creating six price lists in total — two tiers for each of the three markets:
| Price List | Market | Volume Rule | Currency |
|---|---|---|---|
| US Volume (21–50 Units) | United States | Min: 21, Max: 50 | USD |
| US Volume (51–100 Units) | United States | Min: 51, Max: 100 | USD |
| Germany Volume (21–50 Units) | Germany | Min: 21, Max: 50 | EUR |
| Germany Volume (51–100 Units) | Germany | Min: 51, Max: 100 | EUR |
| France Volume (21–50 Units) | France | Min: 21, Max: 50 | EUR |
| France Volume (51–100 Units) | France | Min: 51, Max: 100 | EUR |
Navigate to Products → Price Lists and click New Price List.
Fill in the details for the first US tier:
US Volume Pricing (21–50 Units)Mid-volume USD discount for US market)Click Create to open the price list editor.
In the Rules section, set the match logic to Match All, then add two rules:
21 and Max Quantity to 50Click Add Products, select the products to include, then click Edit Prices. Make sure USD is selected in the currency switcher and enter the discounted USD prices for this tier.
Click Save, then Activate (or Schedule if it has a future start date) to make this tier live.
Now repeat to create the second US tier — US Volume Pricing (51–100 Units) — with the same Market rule (United States) and a Volume rule set to Min: 51, Max: 100. Enter the deeper discounted USD prices and activate.
With the US tiers in place, repeat the same process for Germany and France. For each market you'll create two price lists — one per volume tier.
For each price list:
Germany Volume Pricing (21–50 Units) and Germany Volume Pricing (51–100 Units)Click Save and Activate for each. Once done, you'll have six active price lists — two tiers for each of the three markets.
<Note>Volume thresholds and discount rates don't need to match across markets. You can set different min/max quantities or different discount levels for each region to reflect local pricing strategies or distribution agreements.</Note>
To confirm the tiers are working correctly, test from the storefront across each market.
25, and confirm the mid-volume USD discount is applied at checkout.60 and confirm the deeper USD discount applies.If the expected discount is not being applied, check that: