Tiered Pricing Table for WooCommerce charges different prices depending on the quantity a customer buys. You set the tiers; the plugin shows them on the product page, updates the price, totals and savings as the quantity changes, charges the right price in the cart and checkout, and shows the lowest price or a price range in the catalog. It also covers minimum, maximum and step quantities, prices per customer role or individual customer, global rules for categories, tags, brands and roles, request a quote, tier labels, and a wholesale module with registration, a private store and cart rules.
Developers find the hooks, the REST API fields and the template system in the developer documentation.
Installation
↑ Back to top- Download the plugin .zip file from your WooCommerce.com account under My Subscriptions.
- In WordPress go to Plugins → Add New → Upload Plugin, choose the file and click Install Now.
- Click Activate.
After activation you find the settings under WooCommerce → Settings → Tiered Pricing, global rules under WooCommerce → Pricing Rules, and three tabs in the product editor: General (the tiers), Tiered Pricing and Role & Customer Pricing.
The plugin needs WooCommerce 7.0 or newer and PHP 7.4 or newer, and works with classic and block themes, including the Cart and Checkout blocks.
How tiered pricing works
↑ Back to top- A tier is a quantity and the price or discount that applies from that quantity up to the next tier.
- Tiers start at quantity 2. Quantity 1 always pays the regular or sale price.
- Fixed rules set the unit price per tier. Percentage rules set a discount from the product price.
- The highest tier the quantity reaches is used: with tiers at 10 and 20, quantity 15 gets the 10+ price.

Quick start
↑ Back to top- Open a product and, on the General tab under the price, choose a Tiered pricing type. Add rows with New tier: a quantity and a price (fixed) or a discount (percentage).
- Optional, on the Tiered Pricing tab: a minimum, maximum and quantity step, a layout for this product and a unit label such as “box / boxes”. Prices for roles and customers live on the Role & Customer Pricing tab.
- Click Update. The pricing table appears above the add-to-cart button and the price follows the quantity.

How the tiers look (layout, colours, texts, position, catalog prices) is set once for the whole store under WooCommerce → Settings → Tiered Pricing. The product fields only decide what the prices are.
Pricing rules
↑ Back to topQuantity limits
↑ Back to topSet on the Tiered Pricing tab, and in every role, customer and global rule:
- Minimum: the quantity field starts there and smaller quantities are rejected.
- Maximum: the quantity field is capped and checked when the cart is updated.
- Group of (step): multiples only, for example 10, 20, 30.
With a minimum of 10 and prices 10 to 19 = $100, 20 to 49 = $90, 50+ = $80, enter a regular price of $100, a minimum of 10 and the tiers 20 = $90 and 50 = $80. Mix & match lets the minimum apply to all variations of a product added together.
Variable products
↑ Back to top- Each variation has its own tiers and minimum. Rules on the parent product apply to variations without rules of their own.
- A default variation shows its table before attributes are selected. Variations have the same prices keeps one table that never reloads.
Role and customer pricing
↑ Back to topOn the Role & Customer Pricing tab, pick a role and click Setup for role, or search a customer and click Setup for customer. A rule can set a base price (flat prices or a percentage discount), quantity limits, tiers, a tax status and a tax class. Empty fields keep the product’s values. A role rule replaces the product’s pricing for customers with that role; a customer rule beats the role rule, which makes it the place for negotiated prices. Customer roles are created under Settings → Tiered Pricing → Advanced → Roles Management.

Global pricing rules
↑ Back to topWooCommerce → Pricing Rules → Add new applies one pricing to many products at once:
- Pricing: a base price override, the tiers, and whether quantities count per product or across all covered products (Mix and Match).
- Products: categories, tags, brands and products to include or exclude. Empty means all products.
- Users & Roles: roles and customers to include or exclude, with Guests listed as a role. Empty means everyone.
- Quantity limits and Tax, as on a product.
- Priority settings: how the rule interacts with the product’s own rules.
The Rule status box shows the status and its reason, a Suspend button, the Priority number, optional start and end dates and a Test this rule link. When several rules match a product and customer, the lowest priority number wins; the same number goes to the newer rule.

Which rule wins?
↑ Back to top- The product’s own tiers, base price and limits.
- A role rule replaces them for customers with that role.
- A customer rule replaces both for that customer.
- A global rule is applied according to its priority settings: used only when the product has no rules of its own, always, or decided separately for tiers, base price and limits.
Not sure what a customer pays? Run the Pricing Test under Settings → Tiered Pricing → Advanced, or switch on Debug mode there to print the pricing source under the table and in the cart.
Price calculation
↑ Back to topFive switches under Settings → Tiered Pricing → General → Price Calculation: count the variations of a product together for the tier quantity, apply the minimum to the variations together, calculate percentage discounts from the regular price instead of the sale price, round calculated prices to the store’s decimals, and let global rules win over product rules.
Product page
↑ Back to topEverything the customer sees on the product page is set under Settings → Tiered Pricing → General → Pricing Display, a visual editor with the options on the left and a live preview on the right. Three tabs cover the storefront: Product page, Shop & category pages and Cart & Checkout. Nothing is stored until you click Save changes.

Layouts
↑ Back to top| Layout | Best for | Design styles |
|---|---|---|
| Table | Quantity, discount and price columns, extra columns | Default + 6 |
| Blocks | Compact cards for 3 to 8 tiers | Default + 8 |
| Options | A radio list with optional totals | Default + 6 |
| Dropdown | Many tiers in little space | Default + 1 |
| Horizontal table | Tiers as columns | Default |
| Plain text | One sentence per tier | Default + 2 |
| Tooltip | A table on hover next to the price | Default |
A product can override the layout on its Tiered Pricing tab. Every layout highlights the active tier and can be made clickable, so a click on a tier sets the quantity.

Options shared by all layouts
↑ Back to top- Position: above or below the add-to-cart button or form, above the title, or placed by you with the shortcode, the block or the Elementor widget.
- Design: design style, compact layout, spacing, cell padding, active tier colour, discount badge colour.
- Texts: title, column headers, quantity unit, quantity format (a range such as “10 – 24” or a single value), tier order, discount format (percentage, amount saved, or both).
- Custom columns: extra table columns with values entered per tier, or dynamic values such as the price with tax or the total for the row.
Labels, summary, savings and price
↑ Back to top- Tier labels such as “Best value” are designed under Settings → Tiered Pricing → Badges & Labels and assigned to tiers in products, role rules and global rules.
- The Pricing summary adds a live quantity × price block near the layout, as a table, a compact block or an inline line.
- The Savings badge shows “You save …” for the selected quantity, as text, a pill or an outline, under the price, above the button or after the layout.
- The Price card decides whether the main product price shows the price for the selected quantity, optionally with the original price crossed out, or the same lowest price or range as the catalog.
Request a quote
↑ Back to topUnder Settings → Tiered Pricing → Request a Quote you build forms with text, e-mail, phone, number, select, checkbox, date and file fields, and show them inside the pricing layout or next to the add-to-cart button, also for products without a price. Attach a form per product, role rule or global rule. Requests land under WooCommerce → Quote Requests and convert to an order in one click.

Shop and category pages
↑ Back to topSet on the Shop & category pages tab of Pricing Display:
- Catalog prices: products with tiers show the lowest price with a prefix (“From $19.80”), a price range (“$75.00 – $90.00”) or a custom template, optionally for variable products too.
- Pricing tiers in the grid: a reduced pricing layout in every product card, everywhere or only on selected lists and categories, with a quantity selector and a limit on the number of tiers per card.
- Bulk savings badge: a badge on the product image with the biggest discount the tiers give, for example “Save up to 30%”.

Cart and checkout
↑ Back to topSet on the Cart & Checkout tab of Pricing Display:
- The cart charges the tier price for the quantity in the cart. Cart prices decide whether the original price and subtotal are shown crossed out.
- Total savings adds a row with the amount saved before the order total in the cart and the classic checkout.
- Cart upsells show “Add 3 more to get $14.50 each” under an item while a higher tier is within reach, with a one-click link to the next tier and an optional progress bar. The message needs the classic cart shortcode.
- A coupon with Disable tiered pricing ticked charges the regular price while it is applied.

Wholesale
↑ Back to topThe Wholesale tab holds four groups. All of them are off until you switch them on.
- Wholesale registration: create the wholesale role, switch on Enable wholesale registration, pick the role approved applicants get and the approval mode (by hand or automatic), put the
[tiered_pricing_wholesale_registration]shortcode on a page and select it as the registration page. Add your own form fields, an optional terms page and reCAPTCHA. Applications land under WooCommerce → Wholesale Applications with approve and reject actions and four WooCommerce e-mails. - Guest users: hide prices from visitors who are not logged in, prevent them from purchasing, or both, each with a custom message.
- Private store: Closed store sends visitors to the login page, and Catalog visibility by role adds a “Who can see” rule to every product and category. Hidden products leave every list, search, menu and the sitemap.
- Cart rules by role: a minimum order amount or quantity per role, and payment and shipping methods per role.

Orders created by hand
↑ Back to topOrders created in the admin 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 records the change.
Import and export
↑ Back to topProducts → Export and Products → Import handle tiered pricing. The columns map automatically, with one column set per role for role-based pricing.
| Column | Format | Example |
|---|---|---|
| Tiered pricing type | fixed or percentage | fixed |
| Fixed pricing rules | quantity:price,… or quantity=price,… | 10:90,20:80 |
| Percentage pricing rules | quantity:discount,… or quantity=discount,… | 10:10,20:20 |
| Minimum order quantity | number | 5 |
Spreadsheets read a single rule such as 20:100 as a time. Keep the rule columns as text, or write 20=100. WP All Import gets a Tiered Pricing Table section in product and variation templates.
Shortcodes, block and page builders
↑ Back to topSet the position to “I display the table via shortcode / block / Elementor”, then:
| Method | How |
|---|---|
| Shortcode | [tiered-pricing-table] for the current product, or [tiered-pricing-table product_id="123"]. Attributes such as display_type="blocks" or title="Volume pricing" override the settings. |
| Savings | [tiered_price_you_save] next to your own price output |
| Block | The Tiered Pricing block in a single product template |
| Elementor | The Tiered Pricing Table widget in a single product template |
Integrations
↑ Back to topSwitch them on or off under Settings → Tiered Pricing → Integrations:
| Group | Plugins |
|---|---|
| Product add-ons | WooCommerce Product Add-ons, Acowebs WCPA, Advanced Product Fields |
| Currency switchers | FOX, WP Experts, CURCY, Aelia, WPML Multi-currency, YITH Multi Currency, WooPayments |
| Product types | WooCommerce Subscriptions, Product Bundles, WPC Bundles, Mix & Match, Deposits |
| SEO | Yoast, Rank Math, SEOPress: lowest price and price range variables, an offer per tier in structured data |
| Translation | WPML and Polylang: pricing copied to translations, global rules match translated terms |
| Other | Elementor, WP All Import, YITH and Addify Request a Quote, Discount Rules for WooCommerce |
Taxes: role rules and global rules carry a tax status and class, and WooCommerce → Settings → Tax → Role-based tax settings sets tax-exempt roles and how prices are shown per role.
Tools
↑ Back to topUnder Settings → Tiered Pricing → Advanced:
- Modules switch every feature on or off.
- Cache: catalog prices are cached and refresh on product save. Click Purge cache after bulk changes.
- Debug mode prints the pricing source under the table and each cart item. It is visible to everyone, so switch it off when done.
- Pricing Test shows what a chosen customer pays for a product per quantity, and every global rule with its verdict.
- Roles Management and Data clean-up.
FAQ
↑ Back to topThe table does not show on the product page. Check that Show on the product page is on, that the product has a tier of 2 or more, and that the position is not set to shortcode or block.
The price does not change with the quantity. Choose Price for the selected quantity under Product page → Price. Themes with a custom quantity field need a one-line override, see the developer documentation.
Quantity 1 is not discounted. By design. Lower the regular price, or set a base price in a role or global rule.
The cart charges another tier than the product page shows. The cart counts the quantity in the cart, plus other variations when they are combined, and plus other products for Mix and Match rules. Check coupons as well.
A customer gets the wrong price. Run the Pricing Test for that product and customer. A global rule’s status (Skipped, Suspended, Scheduled, Expired or Overridden by) explains why it does nothing.
Catalog prices are stale. Purge the plugin cache under Advanced and your page cache.
Developers and support
↑ Back to top- Developer documentation: hooks, template overrides, JavaScript events, REST API fields and shortcode attributes.
- Get help: open a ticket from your WooCommerce.com account.