Tiered and volume pricing on Shopify: a complete guide
Published August 25, 2026 · 9 min read
“Buy 3 save 10%, buy 5 save 15%, buy 10 save 20%” sounds like one promotion. On Shopify it isn’t: a native discount carries exactly one discount value, so a three-step ladder is three separate discounts that then have to be talked out of competing with each other. This guide covers the three things merchants mean by tiered pricing, what the native tools can and can’t express, and the two failure modes — silent best-discount loss and currency drift — that make a ladder pay out the wrong amount without ever showing an error.
The 30-second version
- One discount, one value. Shopify’s automatic discounts let you set a minimum quantity of items or a minimum purchase amount — a single threshold with a single reward. Tiers mean multiple discounts.
- Multiple discounts don’t stack by default. When two of your tiers match the same cart, Shopify applies whichever is worth more and silently drops the other. For a properly built ladder that’s the behaviour you want; it’s also why an incorrectly built one quietly pays the wrong tier.
- Tier order matters more than tier count. If a higher tier is ever worth less than a lower one for some cart, the customer gets the lower one and your “buy more, save more” promise is broken for that basket.
- Thresholds are currency-sensitive. A $200 threshold does not mean 200 in the shopper’s currency; on a Markets store the tier trips at a different real basket size per region.
- Shoppers can’t see a ladder they aren’t shown. The discount applies at checkout, but the money is made on the product page, where the shopper decides whether to add the fourth item.
Three different things called “tiered pricing”
These get used interchangeably and they behave differently. Knowing which one you actually need decides everything else:
| Shape | Triggered by | Typical use |
|---|---|---|
| Quantity breaks (volume pricing, bulk pricing) | Number of units of a product or collection | Consumables, apparel multipacks, B2B case quantities |
| Cart-total tiers (spend-and-save) | Order subtotal crossing a threshold | Raising average order value across a mixed basket |
| Customer-group tiers (wholesale, VIP) | Who the customer is, not what they bought | Wholesale accounts, loyalty tiers, trade pricing |
The first two are cart maths. The third is identity, and it’s the one that most often needs an app: a discount that reads customer tags has to be told which tags exist, and on Shopify Functions that list is compiled into the discount when it’s built. Tags a merchant adds later don’t retroactively appear in it unless the app mirrors them into a customer metafield and keeps that mirror in sync.
What native Shopify discounts can express
A native automatic discount — Amount off products or Amount off order — gives you one reward gated by one requirement: a minimum purchase amount, or a minimum quantity of items. That is a perfectly good single tier: “10% off when you buy 3” is one discount and it works.
A ladder is where it stops being comfortable. “10% at 3, 15% at 5, 20% at 10” is three discounts, all active at once, all matching a cart of ten items. You are relying on Shopify’s best-discount behaviour to pick the 20% one — which it will, as long as 20% of that cart really is the largest number. That assumption is where ladders break:
- Mixed rewards. Tiers that mix percentages with fixed amounts (“10% at 3, $15 off at 5”) cross over at some basket value. Below the crossover the “higher” tier pays less, so the customer who bought more saves less.
- Different scopes. A tier that applies to one collection and a tier that applies to the whole order aren’t comparable at a glance, and the winner changes with cart composition.
- Tier drift after edits. Someone raises the middle tier for a weekend promotion and never lowers it back. Nothing errors; the ladder is just wrong.
The currency trap on multi-currency stores
If you sell internationally through Shopify Markets, a threshold written as “spend $200” is a number in your store’s currency, but the cart being evaluated is in the shopper’s presentment currency. Depending on how the discount is built, the tier can trip at a meaningfully different real basket size in each market — the promotion that needs €200 in Germany may effectively need the euro equivalent of $200, or vice versa.
Nothing throws an error. The totals are simply not what your marketing says in at least one region, and it usually surfaces as a support ticket from the region you look at least. If you run currency-gated tiers, check one cart per market against the threshold you advertise there before the campaign, and after any exchange-rate-sensitive change.
Making the ladder visible to shoppers
A quantity break that only appears at checkout has already lost most of its value. The decision it’s meant to influence — add a fourth unit or not — happens on the product page, minutes earlier. Whatever you build, the shopper needs to see three things at the moment they choose:
- The tiers themselves, as a small table near the add-to-cart button. Not in the description, not in a banner at the top of the page.
- Which tier they’re currently in, so the offer feels earned rather than hypothetical.
- The gap to the next one — “add 1 more to save 15%”. This single sentence is the difference between a discount that reports well and one that moves average order value.
A build checklist
- Pick the shape — quantity break, cart-total tier, or customer-group tier. Mixing shapes in one ladder is the most common source of crossovers.
- Keep the reward type consistent across tiers (all percentages, or all fixed amounts) so higher always means better by construction.
- Decide what the ladder combines with. Tiers should generally not stack with each other, but you may want them to stack with free shipping. Combination settings are per discount and must be mutual — see our guide to discount combinations.
- Test every boundary, plus one cart per currency if you sell internationally.
- Show it on the product page. Then check the checkout total matches what the product page promised.
FAQ
Can I do volume pricing on Shopify without an app?
For a single tier, yes — one automatic discount with a minimum quantity requirement does it. For a real ladder you’d create one discount per tier, keep their reward types consistent so the highest always wins, and accept that shoppers won’t see the tiers on the product page unless you also edit your theme.
What’s the difference between volume pricing and quantity breaks?
Nothing meaningful — they’re the same mechanic under different names, along with bulk pricing and tiered pricing. “Wholesale pricing” usually implies the third shape above: tiers gated by who the customer is rather than how many units are in the cart.
Why did my customer get the smaller discount?
Almost always the best-discount rule doing its job on tiers that cross over: for that particular cart, the lower tier was worth more money. Compare the actual reward values at that exact quantity and subtotal rather than comparing the tier labels.
Do volume discounts work with discount codes?
They can, if both the automatic tier and the code opt into each other’s discount class. By default they don’t combine and only the better one applies — which is why a valid code can look broken on a cart that already qualifies for a tier.
Do these still work now that Shopify Scripts are gone?
Scripts stopped running on June 30, 2026. Tiered pricing that used to live in a Ruby script now belongs in Shopify Functions — available on every plan, not just Plus. Our Scripts-to-Functions migration guide maps the common script shapes to their replacements.
Build the ladder once
DiscountForge builds tiered and volume pricing, Buy X Get Y, customer-tag pricing, and free-shipping thresholds as rules on Shopify Functions, with a product-page widget and a simulator that shows why a rule fired or didn’t on any sample cart. The Free plan runs three active rules on a live store — enough for a full ladder plus a shipping threshold.