Advanced discounts Pro
Pro: the full set of discount shapes — tiers, cart-spend, buy X for Y, buy X get Y and volume bundles.
Updated September 14, 2026
Advanced discounts is a Pro module that extends the free discounts module. It does not replace it: the same pricing pipeline, the same combination modes, the same scheduling and the same explain output.
What it adds, and what was never missing
Free core runs any number of simple percentage or fixed-amount campaigns, and always has — there is no cap to lift. What this module adds is the shapes a campaign can take: tiered and volume pricing, bundles, cart-spend discounts and gifts.
The additional shapes
- Tiered quantity pricing — 10+ at 5% off, 50+ at 15% off, 100+ at a fixed unit price. The highest tier a line reaches wins, and tiers may change kind as well as value.
- Cart-spend discount — a percentage or fixed amount once the basket passes a threshold, applied as a basket-level adjustment rather than by repricing lines. That distinction matters: repricing lines would make each price depend on the others, and removing one item would move every other price on the page.
- Buy X for Y — "any 3 for £10". Units beyond a whole multiple stay at the normal price, so seven items at "3 for £10" is £10 + £10 + one full-price unit, not an average smeared across the line.
- Buy X get Y — a free or discounted gift with stable basket identity, so a shopper who removes it does not get it back on the next page load, and checkout never resurrects one that has gone out of stock.
- Volume bundles — a fixed total for a whole bundle quantity.
The invariants still hold
A discount can never produce a negative line total. Zero is allowed only where a free gift is meant to be zero. A malformed rule leaves the price alone rather than guessing — Praetor will not undercharge on your behalf.
Explaining a price
Diagnostics → Explain price shows every stage of a calculation for a chosen product, customer, quantity and date: the base price, the role price, each campaign considered, which one applied, and the reason each of the others did not.
Still stuck? Email [email protected].