Getting started
What Tiered Pricing Table does
Charge different prices depending on the quantity a customer buys — “buy more, save more”. You set the tiers; the plugin shows them on the product page, updates the price, totals and savings live, applies the right price in the cart and checkout, and shows the lowest price or a price range in the catalog.
Also included: minimum / maximum / step quantities, prices per customer role or individual customer, global rules for categories, tags, brands or roles, request a quote, and tier labels such as “Best value”.

How pricing tiers work
- A tier = a quantity and the price (or discount) that applies from that quantity up to the next tier.
- Tiers start at quantity 2; quantity 1 is always the regular/sale price.
- Fixed rules set the unit price; percentage rules set a discount from the product price.
- With a minimum order quantity, the first tier runs from the minimum to your first rule at the regular/sale price.
- The highest tier the quantity reaches wins (tiers at 10 and 20 → quantity 15 gets the 10+ price).
Quick start: your first tiered price
- Products → Edit → General: under the regular/sale price choose a Tiered pricing type and add rows (quantity + price or discount) with New tier.
- Optional — Tiered Pricing tab: quantity limits, a layout and unit label for this product. Role and customer prices live on the Role & Customer Pricing tab.
- Update. The table appears above Add to cart and the price follows the quantity.

Store-wide defaults
How tiers look (layout, colours, texts, position, totals, catalog prices…) is set once under WooCommerce → Settings → Tiered Pricing. Product-level fields only decide what the prices are.
Where to find everything
| Screen | What you do there |
|---|---|
| Products → Edit → General | Tiered pricing rows (product or each variation) |
| Products → Edit → Tiered Pricing | Min / max / step quantity, layout, unit label, default variation |
| Products → Edit → Role & Customer Pricing | Prices per role or per customer |
| WooCommerce → Pricing Rules | Global rules for many products, roles or customers |
| WooCommerce → Settings → Tiered Pricing | General (Pricing Display for the product page, shop & category pages and the cart, Price Calculation), Badges & Labels, Request a Quote, Wholesale (registration, Private store, Cart rules, Guest Users), Integrations, Multicurrency, Product Addons, Advanced (Modules, Roles Management, Cache, Debug, Data clean-up; called Tools before 8.0.0) |
| WooCommerce → Wholesale Applications | Wholesale account applications to approve or reject |
| Products → Categories → Edit | Who can see the category (Private store) |
| WooCommerce → Quote Requests | Submitted quotes |
| WooCommerce → Settings → Tax | Per-role tax settings |
Pricing rules
Fixed and percentage rules
Fixed = flat unit price per tier. Percentage = discount from the product price (from the sale price if there is one; switch to the regular price in Settings → General → Price Calculation). Both examples below give 1–9 = $100, 10–19 = $90, 20+ = $80.

Please note
Never enter the regular price as a tier — tiers start at quantity 2.
Minimum, maximum and quantity step
Set in the Tiered Pricing tab (and in every role, customer and global rule):
- Minimum — quantity field pre-filled, smaller quantities rejected.
- Maximum — quantity field capped, validated on add-to-cart and cart update.
- Group of (step) — multiples only (10, 20, 30…).
Minimum + tiers
Minimum 10 with 10–19 = $100, 20–49 = $90, 50+ = $80 → regular price $100, minimum 10, tiers 20 = $90 and 50 = $80.
Mix & match (variable products): let the minimum apply to the sum of all variations in the cart — per product in Additional options, or globally in Settings → General → Price Calculation.
Variable products
- Each variation has its own tiered pricing rows and minimum.
- Rules on the parent (Tiered Pricing tab) are inherited by variations without their own rules.
- Default variation — its table is shown before attributes are selected.
- Variations have the same prices — the table never reloads when attributes change (requires a default variation).
Per-product display options
Additional options in the Tiered Pricing tab: a layout for this product only and a unit label (“bottle / bottles”) next to quantities. Empty = global settings.
Role-based pricing
Role & Customer Pricing tab → pick a role → Setup for role. A role rule can set:
- a base price: flat regular/sale prices, or a percentage discount from the sale/regular price (empty = keep the product price);
- minimum / maximum / step;
- tiered pricing rules;
- tax status and class.

A role rule replaces the product’s pricing for customers with that role (first matching role wins). Also available on variations and in global rules; exportable via CSV — see Import and export.
Customer-specific pricing
Same tab, same fields, for one customer: search the customer → Setup for customer. A customer rule beats the role rule — ideal for negotiated prices.
Global pricing rules
WooCommerce → Pricing Rules → Add new applies one pricing to many products at once.

| Tab | What you set |
|---|---|
| Pricing | Base price override (flat or %), tiers, and the calculation type: Individual (each product on its own) or Mix and Match (quantities of all covered products added up) |
| Products | Categories, tags, brands, products — plus exclusions. Empty = all products |
| Users & Roles | Roles / customers to include or exclude. Empty = everyone |
| Quantity limits | Min, max, step, mix & match minimum |
| Tax | Tax status / class for matching products |
| Priority settings | How the rule interacts with product-level rules (see below) |
- One global rule per product and customer — the newest matching rule wins; keep rules specific.
- Rules can be suspended, reactivated and duplicated from the list.
- A rule without tiers is fine (e.g. a flat role discount or a minimum for a category).
Which rule wins?
- 1Product rules
The tiers, base price and limits entered on the product or variation (variations inherit the parent’s rules). - 2Role rule replaces the product rules for customers with that role
- 3Customer rule replaces both for that specific customer
- 4Global rule is applied on top according to its Priority settings: Prefer product rules (only used when the product has no rules of its own), Override (always wins), Flexible (decide separately for tiers, base price and quantity limits) or Default, which follows the Global rules override product rules option in Settings → Calculations.
Tip
Unsure what applied? Debug mode (Settings → Tools) prints the source of the pricing under the table and in the cart — see Tools and maintenance.
Price calculation settings
Settings → General → Price Calculation holds the switches that change how a price is worked out. Each one shows an Off / On example, so you can see the effect before saving.
- Combine variations for quantity calculation — variations of one product count as one item for the tier quantity (Red × 3 + Blue × 4 = 7).
- Combine variations for minimum quantity — the minimum applies to the sum of all variations in the cart.
- Calculate percentage discounts from regular price — percentage tiers start from the regular price even while the product is on sale.
- Round calculated prices — rounds tier prices to the store’s decimals (off keeps exact fractions).
- Prioritize global pricing rules — a matching global rule wins over the product’s own rules.

Product page
Everything a customer sees on the product page is configured in WooCommerce → Settings → Tiered Pricing → General → Pricing Display, on the Product page tab; every element can be switched off.

The layout configurator
Pricing Display is a visual editor with a live preview. The options sit on the left; the preview on the right shows how the product page, the shop grid or the cart will look with them, and updates as you change things. Three tabs cover the storefront: Product page, Shop & category pages and Cart & Checkout. Nothing is stored until you click Save changes.

Classic settings
The configurator is a module. Switch off Layout Configurator under Settings → Modules to get the classic rows of settings instead; both edit the same stored options.
Layouts and design styles
Pick a Layout and a Design style on the Product page tab; a product can override the layout in its Tiered Pricing tab. All layouts highlight the active tier and can be clickable.
| Layout | Best for | Design styles |
|---|---|---|
| Table | Quantity / discount / price, extra columns | Default + 6 |
| Blocks | Compact cards, 3–8 tiers | Default + 8 |
| Options | Radio list, optional totals | Default + 6 |
| Dropdown | Many tiers, little space | Default + 1 |
| Horizontal table | Tiers as columns | — |
| Plain text | One templated sentence per tier | Default + 2 |
| Tooltip | Table on hover next to the price | — |







Settings shared by all layouts
- Show on the product page — off means nothing is inserted automatically; place the layout yourself with the shortcode, the block or the Elementor widget (prices still update live).
- Position — above/below the Add to cart button, above/below the add-to-cart form, above the product title or before the product summary.
- Compact layout — a space-saving version of the design style with smaller badges (table, blocks, options, dropdown, horizontal table).
- Spacing — the gap between tiers (blocks and the card-style table and options styles); Cell padding — the padding inside table cells, which also overrides the theme’s (table, horizontal table). Auto keeps the style’s own values.
- Active tier colour; Discount badge colour for table styles #2 – #6 (Auto = the style’s own colour); Active tier border — a left bar in the active tier colour for table styles #1, #5 and #6.
- Title, Quantity format (Range “10 – 24” or Static values “10”), Tier order (smallest quantity first or biggest discount first), Make pricing tiers clickable.
- Quantity unit — singular/plural noun next to quantities (per product override); Column headers (table, horizontal table, tooltip) — rename a header or leave it empty to hide the column.
- Discount format — Percentage (10%), Amount saved ($4.50) or Both.
20+ bottles
20 bottles
Table columns and custom columns
The Custom table columns card at the bottom of the Product page tab adds columns to the table layouts:
- Custom data (price / number / text) — one input per tier in the product editor, role rules and global rules.
- Dynamic — Price excl. taxes, Price incl. taxes, Total row price, Saving per item.

Layout-specific options
- Blocks — show/hide the discount label.
- Options / dropdown — crossed-out regular price, the total for the selected option, a base price option (“Buy 1 – 9”, no discount), and the option text with
{tp_quantity},{tp_discount},{tp_rounded_discount},{tp_base_unit_name}. - Plain text — the pricing string (also
{tp_price}), first tier on/off. - Tooltip — icon colour and size, border.
Total:
Crossed-out regular price, per-tier total and the editable option text.
The percentage discount label can be switched off.
Tier labels
Design labels (“Most popular”, “Best value”) in Settings → Badges & Labels: a style preset (square, rounded, pill, outline, dashed), an icon, colours and a live preview. Assign them to tiers in products, role rules or global rules; they show in every layout.

Pricing summary
The Pricing summary card adds a quantity × price block near the layout that updates live: summary layout (Detailed, Compact, Inline labels), title, position, the Total / Each labels, and whether to show it on products without tiers.
Savings badge
The Savings badge card shows “You save …” under the price when the selected quantity has a discount. Template with {tp_ys_price} (per unit), {tp_ys_total_price}, {tp_ys_percentage_discount}; badge colour; include the WooCommerce sale discount; show on products without tiers. Also available as the [tiered_price_you_save] shortcode.
Price display
The Price card decides what the main product price shows: Match shop & categories (the lowest price or a price range, as in the product grid) or Price for the selected quantity — the price follows the quantity the customer enters. With the second choice you can show the original price crossed out, show the total (price × quantity) instead of the price per item, and apply the behaviour to products without tiered pricing too.

Request a quote
Settings → Request a Quote: build forms (text, e-mail, phone, number, textarea, select, radio, checkbox, date, file, headings) and choose where they appear:
- Integrated — an extra row/option at the end of the layout, optionally auto-opening above a quantity.
- Next to Add to cart — a button beside or instead of Add to cart (also for non-purchasable products).
Attach a form per product, role rule or global rule. Requests land in WooCommerce → Quote Requests (unread / read / converted / rejected) with one-click convert to order; admin and customer e-mails are WooCommerce e-mails; reCAPTCHA v3 supported.

Shop and category pages
Configured on the Shop & category pages tab of Pricing Display.

Catalog prices
The Price card replaces the regular price of products with tiers: the lowest price with a prefix (“From $19.80”), a price range (“$75.00 – $90.00”) or a custom template ({tp_lowest_price}, {tp_prices_range}, {tp_original_price}); optionally for variable products too.

Pricing tiers in the product grid
Show on shop and category pages puts a reduced pricing layout in every product card.
- Where it shows — Everywhere, or Selected places: tick the product lists (shop page, category pages, tag and attribute pages, search results, related products, upsells, cross-sells in the cart, product shortcodes and other lists, the Product Collection block) and, if you like, limit it to products in chosen categories (type to search; a category covers its child categories).
- Position — above or below the add-to-cart button, above or below the product title.
- Grid item — Compact layout; Dynamic price (the card’s price follows the quantity, which needs a quantity field on the grid item); Quantity selector in the grid for themes that have none; Tiers per grid item — the rest sit behind a “+N more tiers” link to the product page.
- Layout source — Same as product page, or Custom with its own layout, design style, spacing, colours and title (the tooltip layout and the segmented blocks style are not available in the grid).
Bulk savings badge
A badge on the product image with the biggest discount the product’s tiers give — shown whether or not the tiers themselves are, in the lists Where it shows allows. Template (Save up to {tp_max_discount} by default; also {tp_lowest_price}, {tp_lowest_quantity}, {tp_max_saving}), position (top left / top right) and colour (Auto = the active tier colour).

Cart and checkout
Configured on the Cart & Checkout tab of Pricing Display.

Tiered prices in the cart
The cart charges the tier price for the quantity in the cart. Cart prices decides how discounted items look: the original item price crossed out, the original subtotal crossed out, and whether to cross out the regular price instead of the sale price for products on sale.
Total savings adds a row before the order total — in the cart totals and in the classic checkout’s order review — with what the tiered prices take off the cart; the row label is editable. Not available with the Checkout block.
- Combine variations for quantity calculation (Settings → General → Price Calculation) — variations of one product are counted together.
- Round calculated prices — off for exact fractions.
- Mix and Match global rules add up every covered product.
Cart upsells
Upsell message: “Add 13 more to get $14.50 each” under the item name while a higher tier is within reach (not available with the Cart block). The template takes {tp_required_quantity}, {tp_next_price}, {tp_next_discount} and {tp_actual_discount}; the colour is yours to pick.
Next tier shortcuts: the quantity in the message is a link — one click sets the cart line to the next tier and updates the cart — and a progress bar under the message shows how close the customer is.

Coupons
Tick Disable tiered pricing on a coupon → covered products are charged the regular price while it is applied.
Wholesale
Available from version 8.0.0
Wholesale registration, the private store and the cart rules described in this chapter ship with version 8.0.0. They belong to the Wholesale & Guest Users module and live on the Wholesale tab of the plugin settings. Wholesale registration and the private store are part of the free plugin; the cart rules and the guest options need the premium version. Every feature in this chapter is off until you switch it on; the guest options moved here from the General tab.
Wholesale registration and approval
Let customers apply for a wholesale account on your site instead of e-mailing you. Under Settings → Wholesale → Wholesale registration:
- Create the wholesale role first (Settings → Advanced → Roles Management) and give it prices with a global pricing rule or per product (see Role-based pricing).
- Switch on Enable wholesale registration and pick the Wholesale role approved applicants get.
- Choose the Approval mode: review every application by hand, or approve automatically.
- Create a page with the
[tiered_pricing_wholesale_registration]shortcode and select it as the Registration page. Optionally choose the page wholesale customers land on after login and show an Apply for a wholesale account link under the My Account login form.

The form. Name, e-mail and (when WooCommerce does not generate passwords) a password are always asked. Build the rest under Application form: add fields with a label, a type (text, text area, phone, e-mail, URL, number, dropdown, checkbox) and a required flag, drag them into order, or pick common fields such as Company, Phone, Tax ID, Website and Message from the dropdown. Company, Phone and Website are copied to the customer account; every other field is stored with the application and shown in the queue and the e-mails. An optional terms page adds an “I agree” checkbox. The form carries a honeypot; reCAPTCHA v3 keys under Spam protection add a score check on top.


What the applicant sees. A guest gets a customer account right away, with the regular Customer role, and the “Application received” message; a logged-in customer applies with one click less. The three status messages are editable under Messages.


The queue. Applications land under WooCommerce → Wholesale Applications, with a pending counter in the menu. Approve or reject from the list, in bulk, or from the application screen, where you can send a reason to the applicant. Approving gives the customer the wholesale role; rejecting keeps the customer role.


E-mails. Four transactional e-mails, edited like any WooCommerce e-mail under WooCommerce → Settings → Emails: New wholesale application (to the shop), Application received, Application approved and Application rejected (to the applicant, the last one with the reason).

Approved customers see the wholesale prices as soon as they log in; with a login redirect page set they land there instead of on My Account.

Guest users
Settings → Wholesale → Guest Users (before 8.0.0: Settings → General → Guest Users): hide prices for visitors who are not logged in (custom message) and/or prevent purchasing (relabelled button + notice).
Private store
Two switches under Settings → Wholesale → Private store, both off by default and both available in the free plugin.
Closed store sends visitors who are not logged in to the login page and brings them back after the login. My Account, the wholesale registration page and the pages you list under Pages visitors may open stay open; feeds and not-found pages are not redirected, and the Store API product routes answer 401 to visitors. Exclude the store from page caching for visitors.
Catalog visibility by role adds a Who can see rule to every product (the product’s Tiered Pricing tab, under Additional Options) and every product category: everyone, only the selected roles, or everyone except the selected roles. Guests count as a role, so wholesale-only, retail-only and members-only catalogs are all possible. A product’s own rule wins; a product without one follows its categories, parents included, and every category rule must let the visitor through.



Hidden products leave the shop, search, related, upsell and cross-sell lists, menus, the sitemap and the Store API, cannot be bought and are removed from an existing cart. Hidden categories leave category lists, menus, breadcrumbs and their archives. A visitor who opens a hidden page goes to the login page (the Hidden products and categories switch) or, with the switch off, gets a not-found page; a logged-in customer who may not see it always gets a not-found page. Shop managers see everything. The products list and the categories list show a Who can see column, and the products list can be filtered by it: everyone, restricted, or hidden from a role.

Cart rules by role
Settings → Wholesale → Cart rules by role (premium): one switch for three groups.
- Minimum order — a minimum order amount and/or a minimum quantity for the whole cart, per role. Guests count as a role; a customer with several roles gets the strictest minimum. The cart and the checkout, classic pages and blocks alike, show the error and block the order until the minimum is met. The two messages are editable, with the placeholders
{minimum},{subtotal}and{count}; the amount is the cart subtotal after tiered prices, before shipping. - Payment methods by role — for each enabled payment method, the roles that may use it. Leave a method empty to keep it for everyone; tick Wholesale alone for invoice or bank-transfer payment for wholesale customers only.
- Shipping methods by role — the same for every shipping method of every zone, for example free shipping for retail customers only.




The admin order screens keep every method, so you can still create any order by hand.
Orders
Manually created orders
Admin orders skip the cart — click Re-calculate with tiered pricing on the order screen to price every line by the customer’s rules (an order note is added).

Import and export
WooCommerce CSV importer and exporter
Products → Export / Import handle tiered pricing; columns map automatically (group Tiered Pricing):
| Column | Format | Example |
|---|---|---|
| Tiered pricing type | fixed / percentage | fixed |
| Fixed pricing rules | quantity:price,… | 10:90,20:80 |
| Percentage pricing rules | quantity:discount,… | 10:10,20:20 |
| Minimum order quantity | number | 5 |
Role-based pricing gets one column set per role.

WP All Import
A Tiered Pricing Table section appears in product/variation import templates: fixed / percentage tiers (10:5,20:15), pricing type, minimum quantity, and per-role pricing (tick the roles). Honours WP All Import’s update options.
Taxes
- Per rule — role rules and global rules have a Tax section: tax status (taxable / shipping only / none) and tax class.
- Per role — WooCommerce → Settings → Tax → Role-based tax settings: tax-exempt, tax class, prices incl./excl. tax in shop and cart, entered prices incl. tax, price suffix (e.g. net prices for wholesalers).
Integrations
Toggles under Settings → Integrations:
| Category | Plugins | Effect |
|---|---|---|
| Product add-ons | WooCommerce Product Add-ons, Acowebs WCPA, Advanced Product Fields (StudioWombat) | Add-on costs on top of tier prices |
| Currency switchers | FOX (WOOCS), WP Experts (WCCS), CURCY, Aelia, WPML Multi-currency, YITH Multi Currency, WooPayments | Tier prices converted |
| Product types | WooCommerce Subscriptions (+ All Products for Subscriptions), Product Bundles, WPC Bundles, Mix & Match, Deposits | Correct prices for plans, bundles, deposits |
| SEO | Yoast, Rank Math, SEOPress | lowest price / price range variables, offer per tier in structured data |
| Translation | WPML, Polylang | Pricing copied to translations; global rules match translated terms |
| Other | Elementor (widget), WP All Import, YITH / Addify Request a Quote, Discount Rules for WooCommerce | Widget, import add-on, correct quote prices, free-gift compatibility |
| Themes | Avada, Astra, Divi, Flatsome, Shopkeeper, The Retailer, Merchandiser, Zakra, OceanWP | Styling fixes |
Shortcodes, blocks and page builders
Set the position to “I display the table via shortcode / block / Elementor”, then:
| Method | How |
|---|---|
| Shortcode | [tiered-pricing-table] (current product) or [tiered-pricing-table product_id="123"]; attributes override settings: display_type="blocks", title="…", active_tier_color="#96598a", show_discount_column="no", quantity_type="static" |
| You save | [tiered_price_you_save] next to your own price output |
| Block | Tiered Pricing block (WooCommerce category) in a single-product template |
| Elementor | Tiered Pricing Table widget in a single-product template |
Tools and maintenance
Modules
Settings → Advanced → Modules switches every feature on/off — disable what you don’t use. The Wholesale & Guest Users module carries the whole Wholesale tab.
Cache
Catalog prices are cached for speed and refresh on product save. After bulk changes click Purge cache (Settings → Advanced → Cache), or disable caching while setting up.
Debug mode
Settings → Advanced → Debug: shows the pricing source, tiers, limits and a change log under the table and each cart item. Visible to everyone — turn it off when done.
Utilities
Settings → Advanced (the tab was called Tools before 8.0.0): the module switches, Roles management (create/edit/delete customer roles), Data clean-up (remove tiered pricing data from products, reset the plugin settings, delete all global rules), plus the Cache and Debug switches.
Troubleshooting
- No table on the product page — Pricing Display → Product page: Show on the product page must be on; the product needs a tier ≥ 2; the layout is not inserted automatically if you placed it via shortcode or block.
- Price doesn’t change with quantity — choose Price for the selected quantity under Product page → Price; themes with custom quantity fields need a one-line override (see Developer Docs).
- Quantity 1 isn’t discounted — by design; lower the regular price or use a role/global base price.
- Cart shows another tier — the cart counts the cart quantity (+ variations with Summarize variations, + other products for Mix and Match rules); check coupons.
- Wrong prices for a customer — Debug mode; check roles, customer rules, newest matching global rule.
- Stale catalog prices — purge the plugin cache (Settings → Tools) and your page cache.
- Contact us or read the Guides.