Introduction
Quantity-Based (Volume / Tiered) Pricing lets an add-on field’s price change as the quantity goes up.
You define quantity ranges (tiers), and the tier the quantity lands in sets the price for the field — perfect for bulk discounts, wholesale breaks, and per-quantity setup fees.
This guide is customer-focused and explains every setting in simple language, with practical examples that cover the four tier types, Product vs Field quantity, option fields, and how it works together with Price Rules.
Where It Fits: The Pricing Methods
Extra Product Options can price an add-on field in several ways at once. Volume / Tiered Pricing is one of four, and it helps to know the others before setting it up — because the order they combine in is what decides the final total.
- Per-option price — option fields (Select, Radio, Checkbox, Country, etc.) price each option in the Options tab.
- Field price & price type — single-value fields (Text, Number, etc.) use a field price with a type: Fixed, Percentage of product price, Per character/word, Formula, and more.
- Price Rules — adjust the price when another field has a specific value (Add, Subtract, Multiply, Percentage, Replace).
- Volume / Tiered Pricing — the subject of this guide: change the price by quantity using tiers, driven by either the product quantity or the field’s own quantity.
What Is Volume / Tiered Pricing?
Volume / Tiered Pricing is a pricing option in Extra Product Options for WooCommerce that adjusts an add-on field’s price based on quantity. It uses the “all units” (volume) model: the tier the quantity lands in sets the price for every unit — not just the units above a threshold.
For example, if 1–5 is €10/unit and 6–10 is €8/unit, then buying 6 charges all 6 units at €8 (= €48), not “5 at €10 + 1 at €8”. This is the most common bulk-discount model in WooCommerce and feels the most generous to shoppers.
Common use cases:
- bulk / wholesale discounts (buy more, pay less per unit)
- per-quantity add-ons (engraved lines, extra pockets, gift cards)
- flat setup or handling fees that apply to a quantity range
- percentage surcharges that scale with the order
Where to Configure It
Go to: WP Admin -> WooCommerce -> Extra Product Options -> Addons Builder
Open/create an addon, add a priceable field (Text, Number, Select, Radio, Checkbox, Country, etc.), then open the field’s Pricing Options tab. Volume / Tiered Pricing is a Premium feature.
Quick Setup (Step by Step)
- Open your addon in the builder and add a priceable field.
- Open the field’s Pricing Options tab.
- Turn on ⚖️ Quantity-Based Pricing (Volume / Tiered).
- Choose a Tier basis — Product quantity or Field quantity.
- Click + Add Tier and fill each row: From, To, Price, and Type.
- Leave the last tier’s To empty if you want it to cover “and above”.
- Save the addon and test on the frontend.
How tiers are matched
- Leave “To” empty for “and above” — e.g. From 11 with an empty To covers 11 and up.
- Tiers are sorted by “From” and the first match wins. If two tiers overlap, the one with the lower “From” is used.
- Gaps fall back to the base price. A quantity between two tiers keeps the field’s normal price.
- “From” must be at least 1. Tiers without a starting quantity are discarded on save.
- Not available on every field type. Layout fields (Heading, Paragraph, Separator) and Product Group have no single field price for a tier to replace, so the section is hidden for them.
Tier Price Types Explained
Each tier’s Type controls two things: whether the amount is Fixed or a Percentage of the product price, and whether it is charged per unit or as a single flat amount for the whole tier.
- Fixed – per unit: the price is multiplied by the quantity. Example: €8 × 6 = €48.
- Fixed – flat: one flat charge for the whole tier, no matter the quantity in it. Example: €40 whether the qty is 6 or 10.
- % of product – per unit: (percentage × product price) × quantity. Example on a €99 product: 10% = €9.90 × 6 = €59.40.
- % of product – flat: percentage × product price, charged once for the whole tier. Example on a €99 product: 10% = €9.90 total.
At a glance — on a €99 product, with a tier priced at 10 and a quantity of 6:
| Type | Calculation | Charge at qty 6 |
|---|---|---|
| Fixed – per unit | 10 × 6 | €60.00 |
| Fixed – flat | 10 (once) | €10.00 |
| % of product – per unit | (10% × €99) × 6 | €59.40 |
| % of product – flat | 10% × €99 (once) | €9.90 |
Product Quantity vs Field Quantity
The Tier basis setting decides which quantity is (a) compared against your tiers to pick the rate, and (b) multiplied by the per-unit price. Both use the same number, so the preview and the cart always match.
Product quantity
The main WooCommerce quantity box on the product page — how many of the whole product the customer is buying. It is always available. Choose this when the discount should depend on how many products are purchased.
Example: a “Gift wrap” add-on costs €5 each. Tiers: 1–4 products → €5 each, 5+ products → €3 each. Buying 6 products charges the wrap at 6 × €3 = €18.
Field quantity
The field’s own quantity — a small quantity input shown next to the field. It only appears when you enable per-field quantity for that field (in the field’s Quantity Options tab). The customer chooses how many of that add-on they want, independent of the product quantity.
Example: an “Extra embroidered line” add-on where the customer picks how many lines. Tiers: 1–5 lines → €2 each, 6+ lines → €1.50 each. Choosing 7 lines charges 7 × €1.50 = €10.50 — the product quantity does not affect this.
Important: to use the Field quantity basis, first turn on per-field quantity for that field. Without it there is no field quantity to measure, so the tier falls back to the product quantity.
Whichever basis you pick, the price recalculates live as the customer changes that quantity, and crossing a tier boundary (for example 5 → 6) switches the rate automatically. Per-unit types multiply by the quantity; flat types stay the same for every quantity inside the tier.
Volume Pricing on Select & Option Fields
Option fields — Select, Radio, Checkbox, Checkbox Group, Multiselect and Country — normally set a price per option in the Options tab. When Volume Pricing is enabled on one of these fields, the matching tier replaces the selected option’s price for the current quantity.
Example: a Country select uses Field quantity basis with tiers 1–5 = €2 per unit and 6–10 = €5 per unit. The customer selects a country and sets the field quantity to 7 → the tier makes it €5 per unit → 7 × €5 = €35, whichever country is chosen.
Good to know: because the tier replaces the price, the individual per-option prices are overridden while Volume Pricing is on. If each option must keep a different price, use per-option pricing (Options tab) on that field instead.
How the Price Is Calculated (Priority Order)
The price is built in the order below (the same steps run for the product-page preview and on the server, so preview and cart always match). The one thing that varies is how a cross-field Price Rule is applied — and that depends on the type of the tier the quantity matched.
When a flat tier matches
- Priority 1 — Base / option price: the field’s own price (the selected option’s price, or the field’s price).
- Priority 2 — Volume tier (replaces): the flat amount replaces the price and stands as the whole field total, at any quantity inside the tier.
- Priority 3 — Price Rules: cross-field rules adjust the field total once (e.g. a single “− €10”). There is no separate quantity multiply — the flat amount already is the total.
- Priority 4 — Clamp & Tax: the price is never less than 0, then WooCommerce tax is applied.
When a per-unit tier matches, no tier matches, or Volume Pricing is off
- Priority 1 — Base / option price (per unit).
- Priority 2 — Volume tier (replaces): a matching per-unit tier replaces the per-unit price. If the quantity falls outside every tier, the base price from Priority 1 is kept.
- Priority 3 — Price Rules: cross-field rules adjust the per-unit price, so a fixed amount comes off (or goes on) every unit.
- Priority 4 — × Quantity: multiplied by the product or field quantity to give the field total.
- Priority 5 — Clamp & Tax.
Flat tier matched: base → tier (flat total) → Price Rules (once, on the total) → clamp, tax
Per-unit tier matched: base → tier (per unit) → Price Rules (per unit) → × qty → clamp, tax
No tier / Volume off: base → Price Rules (per unit) → × qty → clamp, tax
This only changes the outcome for rules that do not scale with the amount they are applied to. Percentage and Multiply rules give the same total either way. Add and Subtract differ: “Subtract 10” against a flat tier is one €10 deduction, but against a per-unit tier it is €10 off each unit. Replace differs most of all — against a flat tier it replaces the whole field total, while per unit it replaces the unit price and is then multiplied by the quantity.
Worked totals (product €99, rule −€10 when Australia; tiers 1–5 = €20/unit, 6–10 = €30 flat)
| Qty | Tier | Rule applied | Calculation | Total |
|---|---|---|---|---|
| 5 | €20 / unit | Per unit | (€20 − €10) × 5 | €50 |
| 6 | €30 flat | Once, on the total | €30 − €10 | €20 |
| 11 (no tier) | base €12 / unit | Per unit | (€12 − €10) × 11 | €22 |
Key points: the volume tier replaces the price (Priority 2), so per-option prices are overridden while a tier is matched. Only a flat tier makes a fixed Price Rule apply once to the whole field — with a per-unit tier it applies to every unit, which is why qty 5 above comes to €50 and not €90. Quantities outside every tier fall back to the base price and to per-unit rule handling; add a final tier with an empty “To” to keep a rate for “and above” and avoid that switch.
Price Rules + Volume Pricing on the Same Field
You can use both on one field. The volume tier always runs first and sets the field’s price for the quantity; the Price Rule then adjusts that amount. How it adjusts depends on the matched tier: against a flat tier the rule is applied once to the total, and against a per-unit tier it is applied to each unit. A typical use is a volume discount that also grants an extra fixed discount for a specific country.
If you only need one behavior, use a single pricing method per field — it is the easiest setup to predict and to support.
Real Examples
Example 1: Bulk discount (Fixed – per unit)
- Tiers: 1–9 = €10, 10–49 = €8, 50+ = €6 (Fixed – per unit)
Qty 5 → €10 × 5 = €50 | Qty 20 → €8 × 20 = €160 | Qty 60 → €6 × 60 = €360.
Example 2: Flat fee for a range (Fixed – flat)
- Tiers: 1–5 = €10 (Fixed – flat), 6–10 = €18 (Fixed – flat)
Qty 3 → €10 | Qty 5 → €10 | Qty 7 → €18 | Qty 10 → €18 (one flat charge, any quantity inside the tier).
Example 3: Percentage break (% of product – per unit)
- Product €200. Tiers: 1–4 = 10%, 5+ = 5% (% of product – per unit)
Qty 2 → (10% × €200) × 2 = €40 | Qty 8 → (5% × €200) × 8 = €80.
Example 4: Above the last tier (revert to base)
- Field base price €1. Tiers: 1–5 = €2, 6–10 = €5 (Fixed – per unit)
Qty 5 → €2 × 5 = €10 | Qty 7 → €5 × 7 = €35 | Qty 11 (no tier) → base €1 × 11 = €11. To keep a rate for 11 and above, add a tier From 11 with an empty To.
Frontend Customer Experience
Customers will see:
- the field’s price update instantly as they change the product or field quantity
- the correct tier rate applied the moment a quantity boundary is crossed
- the add-on and its price reflected in the Addon Details table and the product subtotal
Admin Setting
Front Behaviour
Best Practices
- Start your first tier at 1 so small quantities are always covered.
- Leave the last tier’s “To” empty to price a quantity “and above”.
- Make per-unit prices decrease as quantity rises — that’s the “reward” shoppers expect.
- Use one pricing modifier per field (either Volume Pricing or Price Rules) for predictable results.
- Test the cart total after changing the quantity to confirm the tier applied.
Troubleshooting
The tier doesn’t change when I use Field quantity
- Enable per-field quantity for that field (Quantity Options tab) — Field quantity basis needs it.
Price jumps back to normal at a high quantity
- The quantity is above your last tier — add a tier with an empty “To” to cover “and above”.
All options cost the same price
- On option fields the tier replaces the option price. Use per-option pricing instead if each option needs its own price.
Product page price and cart price differ
- Clear any caching plugin/CDN so the latest scripts load; both use the same calculation.
Developer Notes
Server-side pricing
The tier is applied again on the server at add-to-cart via the epofw_field_price_before_add_to_cart filter. Volume Pricing hooks it at priority 5 and Price Rules at priority 9/10, so rules always stack on top of the tier price. A flat tier reports its quantity to the Price Rules addon, which rebuilds the field total, applies the rule once, then spreads the result back per unit; per-unit tiers and unmatched quantities report nothing, so the rule stays per unit. The browser preview follows the identical branch, which is why the cart total always matches the product page.
Data & migration
Volume Pricing is stored inside the field settings, so existing add-ons are unaffected (the feature is simply off until enabled) and it is included automatically when you export/import add-ons. No migration is required.
Conclusion
Volume / Tiered Pricing turns quantity into a flexible pricing control. With four tier types, Product or Field quantity, and support for option fields and Price Rules, you can model bulk discounts, flat fees, and percentage surcharges with a clean, instant customer experience.
Frequently Asked Questions
Find answers to commonly asked questions about Volume / Tiered Pricing.
Still have a question?
If you have any other queries, feel free to reach out to us. Our knowledgeable team is here to help!

