BuddyX

13 min read · 2,578 words

How to Set Multiple Prices Per Product in WooCommerce (Step-by-Step Guide)

WooCommerce Removes Home From Category Path

Not every customer should pay the same price. Wholesale buyers, members, and bulk purchasers each have a case for different pricing, and WooCommerce doesn’t handle that natively. A store selling identically to a first-time retail shopper and a distributor placing a standing order for five hundred units every month is leaving real margin, and real relationship value, on the table by treating both the same way at checkout.

Why Offer Multiple Prices for the Same Product?

  • Sell to retail and wholesale buyers from one store
  • Offer bulk discounts to encourage larger orders
  • Reward members or subscribers with exclusive pricing
  • Adjust prices by user role or location
  • Run flash sales or tiered promotions

What WooCommerce Supports by Default

Out of the box: a regular price, a sale price, and variable pricing across product variations (size, color, etc.). It doesn’t support role-based pricing, quantity discounts, or customer-specific pricing without a plugin. This gap surprises a lot of store owners moving from a general-purpose platform, since it’s easy to assume a mature e-commerce system this widely used would cover something as fundamental as “charge this customer type differently,” but WooCommerce’s core pricing model was built around a single price per product (or per variation), full stop, with everything more sophisticated left to the plugin ecosystem to fill in.

Plugins That Add Multiple Pricing

1. Role Based Pricing for WooCommerce (Official WooCommerce Extension)

Different prices per user role (wholesalers, members, VIPs), with the option to hide prices or disable purchasing entirely for specific roles.

Features: unique pricing per role, hide price/Add to Cart for selected roles, custom role support, bulk price import/export.

View plugin

2. YITH WooCommerce Role Based Prices

Custom prices by role, fixed or percentage discounts, hidden prices for guests, minimum purchase enforcement, and support for product variations.

View plugin

3. YITH WooCommerce Dynamic Pricing and Discounts

Tiered pricing, quantity-based discounts, cart-level rules, BOGO offers, and discount tables with visual savings indicators.

View plugin

4. WooCommerce Wholesale Prices (Wholesale Suite)

Confirmed active (Josh Kohlbach, 20,000+ installs, v2.2.8, updated within the last 2 months). Free wholesale roles and pricing fields, with tax control, shipping adjustments, and minimum order quantities available in the upgraded full suite.

View plugin

5. Discount Rules for WooCommerce (Flycart)

Tiered pricing by quantity, percentage/fixed discounts, cart-subtotal or user-based rules, first-order and loyalty discounts. Free core, updated regularly.

View plugin

Comparing the Five at a Glance

PluginPricing ModelBest For
Role Based Pricing (WooCommerce.com)Per-role fixed priceSimple wholesale/VIP split, official extension
YITH Role Based PricesPer-role fixed or percentageMinimum purchase enforcement alongside role pricing
YITH Dynamic Pricing and DiscountsQuantity, cart, BOGOVolume discounts and promotional bundles
Wholesale SuiteRole-based wholesaleFree entry point, dedicated wholesale roles
Discount Rules (Flycart)Quantity, cart, user, loyaltyBroadest free rule coverage

Step-by-Step: Setting Up Role-Based Pricing

Using YITH WooCommerce Role Based Prices as the example:

  1. Install and activate the plugin.
  2. Create the user roles you need (Retail, Wholesale, etc.) under Users.
  3. Open a product, scroll to the Role-Based Pricing section, and set a price per role.
  4. Test with accounts assigned to each role to confirm pricing actually adjusts correctly.
  5. Customize how pricing displays in your theme’s store layout as needed.

Multi-Vendor Marketplaces

With Dokan, WCFM, or WC Vendors, these pricing plugins generally support per-vendor role pricing, global rules across all vendors, visibility control by user type, and vendor-dashboard price editing. Confirm compatibility with your specific marketplace plugin before committing, since support varies by combination.

Best Practices

  • Label pricing tiers clearly (“Wholesale Price,” “Member Discount”) so customers understand why prices differ.
  • Use tooltips or a comparison table to explain how the pricing works.
  • Show savings explicitly on promotional pricing.
  • Test regularly across roles, a pricing rule that silently breaks is worse than no rule at all.

The Wholesale Application and Approval Process

Role-based wholesale pricing is only as trustworthy as the process that assigns the wholesale role in the first place. A common and costly mistake is leaving wholesale registration open with no verification step at all, which means anyone can register an account, get flagged with the wholesale role, and immediately access below-retail pricing with zero actual business relationship behind it. A proper wholesale flow typically includes a dedicated application form asking for a business name, tax ID or resale certificate, and expected order volume, with manual admin review before the account is approved and the pricing role actually applied. Wholesale Suite and several of the dedicated wholesale-focused tools in this space build this approval gate in directly; if you’re using a more general role-based pricing plugin instead, you may need to pair it with a separate registration-approval plugin to close this gap, since the pricing plugin itself typically assumes the role has already been assigned correctly rather than managing who gets that role in the first place.

Displaying Multiple Prices Without Confusing Retail Shoppers

A subtle but important design decision: how much of your pricing structure should a logged-out retail visitor actually see? Some stores hide wholesale pricing entirely from anyone not logged in under the wholesale role, showing standard retail pricing to everyone else with no indication a different tier exists at all. Others display a visible “wholesale pricing available, apply here” prompt to attract genuine bulk buyers who might not otherwise think to ask. Neither approach is universally correct, hiding wholesale pricing entirely protects your retail margin from casual price comparison, while surfacing it can genuinely grow your wholesale channel by making the option visible to buyers who’d qualify but wouldn’t have thought to look for it. Whichever you choose, make sure the choice is deliberate rather than an accident of how the plugin happened to default, since the wrong choice for your specific business can either suppress a real revenue channel or undercut your own retail pricing in front of the wrong audience. A middle path some stores land on: show a generic “wholesale pricing available” call to action to logged-out visitors without revealing specific numbers, which captures interest from qualifying buyers while still protecting the actual pricing figures from casual competitor scraping.

Tax Implications of Multiple Pricing Tiers

Different pricing tiers can carry different tax treatment depending on your jurisdiction and the nature of the transaction, wholesale sales are frequently tax-exempt or handled differently than retail sales in many regions, since the wholesale buyer typically collects and remits tax on their own eventual resale rather than paying it upfront. If your store serves both retail and wholesale customers, confirm your tax configuration correctly distinguishes between them rather than applying identical tax logic across every pricing tier by default. This is a genuine compliance question worth confirming with an accountant familiar with your specific jurisdiction and product category, not something to assume a pricing plugin handles correctly out of the box just because it handles the price display correctly.

Testing Checklist Before Going Live

A short but important list to work through before rolling any of these tiers out to real customers:

  • Log in as a test account in each role and confirm the correct price displays on both the product page and cart, not just one or the other.
  • Confirm a role change (upgrading a customer from retail to wholesale, for instance) reflects correctly on their next login without requiring a cache clear or manual intervention.
  • Test a product with variations under role-based pricing specifically, since variation-level pricing occasionally behaves differently than simple-product pricing depending on the plugin.
  • Confirm minimum order quantity enforcement, if you’re using it, actually blocks checkout rather than just displaying a warning message that’s easy to ignore.
  • Check how pricing displays for a logged-out guest, since this is the experience the largest share of first-time visitors will actually have.

Common Configuration Mistakes

Setting wholesale prices as a flat percentage off retail without checking individual product margins. A blanket 30% wholesale discount applied uniformly across a catalog with wildly varying margins can turn your thinnest-margin products into money losers at wholesale volume, even while your best-margin products remain comfortably profitable at the same discount rate. Review margin per product, or at least per category, before setting a single global wholesale discount percentage.

Forgetting to test the cart and checkout pages, not just the product page. It’s a common gap: a role-based price displays correctly on the product page but silently reverts to the standard retail price once the item hits the cart, usually because a caching plugin or a theme’s cart template is pulling a cached price rather than recalculating it for the logged-in user’s role. This specific failure mode is easy to miss if testing only ever checks the product page.

Not accounting for guest checkout. If your store allows checkout without an account, a guest by definition has no role to key pricing off of, which means role-based pricing plugins typically fall back to standard retail pricing for guest checkouts regardless of intent. If wholesale customers are expected to always be logged in, this is fine; if there’s any chance a wholesale buyer might attempt guest checkout, confirm the experience degrades gracefully (standard pricing, clear messaging) rather than producing a confusing or broken cart.

Leaving default WooCommerce roles in place instead of creating purpose-built ones. Using the built-in “Customer” role for both retail and wholesale, distinguished only by some other flag, tends to get confusing fast as your rule set grows. Creating dedicated roles (Wholesale, VIP, Retail) that map directly and unambiguously to your pricing tiers keeps the whole system easier to audit and troubleshoot months later when you’ve forgotten the original setup logic.

Performance Considerations at Real Order Volume

Role-based and dynamic pricing rules add a genuine evaluation step to every product page load and every cart recalculation, checking the current user’s role, matching it against configured rules, and computing the applicable price rather than simply reading a single static price field. On a catalog of a few hundred products with a handful of pricing rules, this overhead is negligible. On a catalog running into the thousands of SKUs with many overlapping rules across multiple roles and quantity tiers, the cumulative query and computation cost can become measurable, particularly on cart and checkout pages where multiple line items each need their pricing recalculated. If you’re running a larger catalog with genuinely complex pricing logic, monitor page load times specifically on the cart and checkout pages after activating a new pricing plugin or adding a substantial new rule set, and consider consolidating overlapping rules rather than layering an ever-growing, rarely-audited list.

Segmenting Beyond Simple Role: Lifetime Value and Purchase History

Role-based pricing handles the coarse segmentation, wholesale versus retail, member versus non-member, well, but some of the plugins in this space (and several dedicated loyalty-focused tools outside it) go a level deeper, offering pricing or discounts based on a customer’s actual purchase history or lifetime spend rather than a manually assigned role. A “spend $2,000 in a rolling twelve months, automatically unlock a 10% discount tier” rule rewards genuinely loyal high-value customers without requiring an admin to manually reassign roles as customers cross spending thresholds. This is a meaningfully more sophisticated setup than static role assignment and isn’t something every plugin on this list supports natively, worth checking specifically if automatic, behavior-driven tier progression (rather than manual role assignment) is what you actually want, since retrofitting this onto a simple role-based system later is more work than building it in from the start.

Summary

Multiple pricing tiers matter most for wholesale operations, membership stores, and multi-vendor marketplaces. Role Based Pricing for WooCommerce, YITH’s role-based and dynamic pricing plugins, Wholesale Suite, and Discount Rules for WooCommerce all cover this ground, pick based on whether role-based, quantity-based, or wholesale-specific pricing is the actual need, and don’t be afraid to run two of them together where their coverage areas genuinely don’t overlap.

Frequently Asked Questions

Can a single customer belong to more than one pricing tier?

Not directly through role assignment alone, since WordPress users typically hold one primary role at a time in most setups, though some plugins support secondary tags or groups layered on top of the base role for more granular segmentation. If a customer genuinely needs access to multiple discount structures simultaneously (a wholesale account that’s also a loyalty member, for instance), check whether your chosen plugin supports stacking or combining rules before assuming a single role covers every case.

Will role-based pricing work correctly with a subscription or recurring-billing product?

Compatibility varies by plugin and depends on whether the subscription extension you’re using reads pricing at the same point in the checkout flow the pricing plugin modifies. Test a full subscription signup and at least one renewal cycle specifically under each pricing tier before assuming it works, rather than extrapolating from how one-time-purchase products behave.

Do these plugins support different pricing for different countries or regions?

Some do, either as a built-in feature or through a location-based rule type, but this is a genuinely different mechanism than role-based pricing and worth confirming specifically if geographic pricing is your actual requirement rather than customer-type pricing. A few dedicated geolocation pricing plugins exist outside this list specifically for that use case, and combining both geographic and role-based rules on the same store is possible with the right plugin, though it multiplies the number of pricing combinations you’ll need to test before launch.

How do I prevent a wholesale customer from sharing their login so retail shoppers get wholesale pricing?

There’s no fully technical fix for credential sharing, this is fundamentally a trust and terms-of-service issue rather than something a pricing plugin can enforce on its own. Some stores mitigate the risk by tying wholesale pricing to a minimum order quantity or minimum order value large enough that casual credential sharing for a single retail purchase isn’t worth the effort, which addresses the practical impact even without solving the underlying access-control question directly.

Is it possible to offer a temporary promotional price on top of an existing role-based price?

Yes, most of these plugins support layering a scheduled promotional discount on top of role-based pricing, though the exact stacking behavior (whether the promotion applies to the role price or the standard retail price as its base) varies by plugin. Test this combination specifically in staging before running a live promotion, since unexpected stacking behavior here directly affects revenue during the promotion window, and a discount that stacks unexpectedly generous can turn a planned marketing expense into a much larger one before anyone notices the math was off.

What’s the difference between a coupon code and a role-based price for wholesale customers?

A coupon requires the customer to actively know about and enter a code, which makes it a poor fit for an ongoing wholesale relationship where you want pricing to simply apply automatically every time a qualifying account shops. Role-based pricing applies transparently based on who’s logged in, no code needed, which is the correct mechanism for a standing pricing agreement rather than a one-off promotional offer.

Can I set a completely different product catalog for wholesale customers, not just different prices?

That’s a separate capability from pricing plugins specifically, usually handled through catalog visibility rules (hiding certain products from certain roles) layered alongside your pricing plugin rather than something the pricing tool itself manages. Several of the plugins listed here include basic visibility controls, but a genuinely separate wholesale-only catalog with distinct products is typically a bigger structural decision worth planning deliberately rather than assuming any single pricing plugin covers it as a side effect.

Interesting Reads:

Best WooCommerce Discount and Dynamic Pricing Plugins

Best Star Rating Plugins for WordPress

Reading
13 min · 2,578 words
Published
Jul 15, 2025
Shashank Dubey
BuddyX contributor

Writing about WordPress communities, BuddyPress, BuddyBoss, LMS plugins, and the business of paid communities.

Keep reading

More from the BuddyX blog

Browse all posts on community, WordPress, BuddyPress and the studio of plugins behind BuddyX.