Tiered pricing looks like a simple plugin decision until you meet real wholesale requirements: different customer roles seeing different catalogs, per-user negotiated rates, and quotes that bypass the cart. We have set up B2B pricing on eight stores in the last two years. Here is how the main options behaved in production.
The three models you can buy
- Role-based tier tables — wholesale role sees fixed tiers (10+ = 12% off). Fastest to launch.
- Per-user negotiated pricing — each account has its own price list. Slower setup; needed for distributors with contract customers.
- Quote-based pricing — no prices at all; requests convert to manual or semi-automated quotes.
Decide the model first. Half the “plugin problems” we see are model mismatches: someone bought a tier-table plugin when they actually needed per-user pricing.
Setup reality: tier tables
For the tier-table model, most plugins we tried (the widely used B2B suite and role-pricing plugins) took two to four hours to configure properly: roles, tiers per product category, and display rules. The recurring gotcha is caching. Prices that vary by user role break full-page caches unless the cache varies by role or the price block loads dynamically. Every store that skipped this step showed the wrong prices to somebody — see our caching guide for the pattern that works.
Setup reality: per-user pricing
Per-user pricing scales with your account count. Importing a price list for 400 SKUs and 50 accounts is a spreadsheet operation — until a product is added and nobody updates the matrix. Stores that succeed assign ownership: a named person updates the price matrix on the same day as the catalog. Stores that fail let it drift, and sales reps start quoting from memory.
What we tell clients to check in a demo
- Does the tier table show on the product page and in the cart correctly?
- Do search and category pages show the right “from” price per role?
- Does the checkout confirm the tiered price — not the retail price with a discount line bolted on?
- How does the plugin handle sale prices colliding with tier discounts? (Most handle it badly; decide your rule.)
Theme interplay matters
Whatever plugin you choose, the theme renders the price table. We had one client whose premium theme restyled price rows into unreadable 11px text. Before buying anything, install it on staging with your live theme — our wholesale theme checklist lists the pages to test. If the combination drags performance, the theme is usually the culprit; the slow-theme guide shows how to measure that.
Costs in practice
Budget the plugin license ($60–200/year depending on scope) plus real setup time: 4 hours for role tiers, 1–2 days for per-user pricing with imports, and a day of QA across roles and devices. If that math scares you, quote-first flows avoid pricing infrastructure entirely — start with the free audit and we will tell you which model fits your order volume.
Not natively. WooCommerce supports one price per product and sale prices; role-based or volume tiers always require a plugin or custom development. Full-page caches store one version of the page. If prices vary by role, the cache must vary by role or the price must load dynamically — otherwise users share whatever version was cached first. Role tiers if your discount structure is uniform; per-user pricing if you negotiate contracts per account. Per-user costs more to maintain and needs an owner for the price matrix. Well-built ones add little front-end weight, but role-based logic interacts with caching. Test on staging with cache enabled and each role browsing cached pages.Can WooCommerce handle tiered pricing without a plugin?
Why do wholesale customers see wrong prices after caching?
Which is better: role tiers or per-user pricing?
Do B2B pricing plugins slow down my store?