Dynamic Pricing Recipe
Quantity Breaks
Buy more, pay less per unit. Three rows, and the price drops on its own.
Read this first: the whole order gets the lower price
A quantity break is a threshold, not a marginal rate. When a customer reaches 10 units, all 10 are priced at the 10-unit rate — not nine at list and one discounted.
This is what Bulk mode means, and it is the default. If you want part of the order discounted and the rest at list — buy two get one free, any three for a fixed price — that is Special Offer mode and a different recipe.
What you need
- WooCommerce Dynamic Pricing, activated
- A simple or variable product with a price set
Configure the rule
- Edit the product, and open the Dynamic Pricing tab in the Product data panel.
- Click Add Pricing Group.
- Leave Applies To on Everyone, Quantities based on on Product Quantity, and Rule Processing Mode on Bulk.
- Fill the first row: From 5, To 9, type Percentage Discount, amount 10.
- Click the + at the end of the row to add another, and fill it: From 10, To 24, Percentage Discount, 20.
- Add a third: From 25, To *, Percentage Discount, 30.
- Update the product.
There is no row for 1–4. A quantity with no matching row is simply not discounted, so the first four units stay at list price without you saying so.
What each field does
| Field | Meaning |
|---|---|
| From | The quantity at which this row starts applying |
| To | The last quantity it applies to. * means no upper limit — the top row should almost always use it |
| Type | Percentage Discount takes a percentage off. Price Discount takes a flat amount off each unit. Fixed Price sets the unit price outright |
| Amount | The number, with no % or currency symbol |
What the customer is charged
Measured on a $100.00 product with the three rows above:
| In cart | Unit price | Full price | Charged | Saved |
|---|---|---|---|---|
| 1 | $100.00 | $100.00 | $100.00 | — |
| 4 | $100.00 | $400.00 | $400.00 | — below the first tier |
| 5 | $90.00 | $500.00 | $450.00 | $50.00 |
| 9 | $90.00 | $900.00 | $810.00 | $90.00 |
| 10 | $80.00 | $1,000.00 | $800.00 | $200.00 |
| 24 | $80.00 | $2,400.00 | $1,920.00 | $480.00 |
| 25 | $70.00 | $2,500.00 | $1,750.00 | $750.00 |
| 40 | $70.00 | $4,000.00 | $2,800.00 | $1,200.00 |
Note the step from 9 to 10: one more unit takes the whole line from $810.00 to $800.00, so the tenth unit is free and then some. That is threshold pricing doing its job — and it is exactly the nudge a quantity break is for. If you would rather it never happened, keep the gap between tiers small enough that the total always rises.
Variations on the same rule
| You want | Change |
|---|---|
| Set prices per tier rather than percentages | Type → Fixed Price, amount 90 / 80 / 70 |
| A flat amount off each unit | Type → Price Discount, amount 10 — $10.00 off each |
| Counted per variation, not across the product | Quantities based on → Variation Quantity. Six of one size discounts; three plus three does not |
| Counted across a whole category | Quantities based on → Quantity of Category — mixed products add up together |
| Trade customers only | Applies To → Specific Roles — see Wholesale Pricing by Role |
| The same tiers on every product | WooCommerce → Dynamic Pricing → Advanced Category Pricing, rather than a rule per product |
| A promotion that ends on its own | Fill Dates: (Inclusive), YYYY-MM-DD. Blank means no restriction |