WooCommerce: How to Set Different Prices Based on User Role?

B2C WooCommerce stores can also have a B2B section. Wholesalers can offer different prices based on different criteria. Subscription stores can offer lower prices to current members.

Either way, setting different WooCommerce prices for different users (“based on user role”) is not that difficult. All you need is a plugin (or a stack of plugins, depending on your custom requirements), and you can immediately show different prices if the logged in user has a specific role or “capability”, as well as targeting active memberships, active subscriptions or other criteria.

If you want to learn more about user roles and capabilities, I suggest to take a look at the WordPress documentation: https://codex.wordpress.org/Roles_and_Capabilities – you’ll know WordPress has 6 default roles (administrator, editor, etc.) and that WooCommerce adds another one (customer). Other plugins can set additional roles – for example https://wordpress.org/plugins/members/ by Justin Tadlock, a very popular WordPress developer.

So, while “targeting” user roles is quite easy, the only difficult part is to choose the right “user role based pricing” product. As usual, when picking a plugin, you always need to consider its functionalities as well as the quality of its support team, long-term reliability, code cleanliness, frequent updates and total number of sales.

Today, we’ll take a look at the plugins I recommend, together with their pros and cons. If you use different stacks or custom functionalities, feel free to interact via the comments.

1. YITH WooCommerce Role Based Price

Now that you’ve chosen to assign different prices to a certain user role, with this plugin you can do even more than that. There are also nice third party plugin integrations (such as currency switchers).

Here are some of the best functionalities offered by YITH WooCommerce Role Based Price:

  • Edit price (percentage or amount) for a single product, product category or product tag, based on user role
  • Apply different pricing to either regular or sale amount
  • Toggle visibility of Add to Cart button, price, role based price, based on user role
  • Show/hide product price tax depending on user role
  • Works with variable products
  • Works with Currency Switcher for WooCommerce by Aelia

Typical scenarios:

  1. 10% off to all customers with user role “wholesaler”
  2. $20 off (category “wholesale”) to all customers with user role “resellers”
  3. Hide product prices unless logged in (wholesale shop only)
Adding a new pricing rule to a single product (% or amount) – YITH WooCommerce Role Based Price Plugin
Adding a new pricing rule to a whole product category – YITH WooCommerce Role Based Price Plugin

2. YayPricing – WooCommerce Dynamic Pricing & Discounts

To enhance your dynamic pricing based on user roles, you can use YayPricing to run advanced promotion campaigns on your WooCommerce store.

It allows you to specify user roles, and also add further Any/All conditions to tailor the discounts. For example, the customer has to be a “VIP Customer” and use the payment method as “Direct bank transfer” to enjoy the discount.

Not only user role based discounts, YayPricing also helps you quickly add discounts based on customer purchase history. 

  • Customer order count: Used for first-time order discount, 10th-order discount, or loyalty rewards.
  • Past orders’ product/category: Give a discount if the customer has bought items from your specified products/categories.
  • Order history’s purchase date: You can set a discount applied to those who are early birds or have bought in a custom date range.

Exclusively, YayPricing allows you to display custom notice only to those user roles that match the conditions.

With YayPricing, you can add dynamic messages with variables, rich text, and images to the product page. This is super helpful to let your customers know which products are offering sales.

You can add user role conditions to other types of WooCommerce dynamic pricing rules as in these scenarios:

3. WooCommerce Dynamic Pricing

Dynamic Pricing by WooCommerce can not only be used to change the pricing of target user roles – it can also do bulk discounts (based on quantities). Here’s the reason of its cost – when you have different prices or discounts for wholesalers, you usually also want to give bulk discounts (e.g. buy 5 get 10% off) to all users.

This plugin has the following functionalities:

  • Edit price (percentage or amount) for a single product or product category, based on user role and/or product quantity and/or cart total
  • Works with variable, composite, grouped, etc. products
  • Integrates with other WooCommerce.com plugins

Typical scenarios:

  1. 10% off to all customers with user role “wholesaler”
  2. $20 off (category “wholesale”) to all customers with user role “resellers”
  3. 5% off when a customer buys 5 items or more
  4. 10% discount to all items in the “chairs” category
  5. $10 off if cart total > $100
  6. Buy product X, get 5% product Y
Adding a new dynamic pricing rule to a single product (% or amount) – WooCommerce Dynamic Pricing Plugin
Adding dynamic pricing rules to user roles – WooCommerce Dynamic Pricing Plugin
“Buy one, get one free” scenario – WooCommerce Dynamic Pricing Plugin

4. WISDM Customer Specific Pricing

This product allows you to quickly set different pricing by user role – and you can even define a custom group of products this applies to.

Besides, you can define dynamic pricing by WooCommerce product category, bulk pricing (price changes based on purchased quantity), run B.O.G.O. campaigns and also quickly bulk edit prices with a nice price dashboard.

Discounts can be set as a fixed amount or price percentage.

Here are some interesting screenshots:

Setting up per-customer quantity discounts
Product dynamic pricing editor

Related content

  • WooCommerce: Display Total Discount / Savings @ Cart & Checkout
    If you love Ecommerce as much as I do, and are passionate about Sales Conversion Rate and reducing Shopping Cart Abandonment, today’s snippet will come in handy. Besides, this is officially the first guest blog on Business Bloomer (have ideas? Send me your proposal here)… so let me officially introduce you to today’s author: Jamie […]
  • WooCommerce: Display % Discount @ Shop Page
    Default WooCommerce shows a “Sale” badge if the item is on sale – but what about showing the exact sale percentage instead? I implemented this for one of my freelance clients so here you go with the easy-peasy solution. Enjoy!
  • WooCommerce: Display Prices as “Was $$$ – Now $$$ – Save $$$”
    Many retailers use this price tag strategy quite successfully. And displaying the amount of savings can increase your ecommerce store conversion rate as well 🙂 So, turning simple product default pricing from “$30 $20″ to “Was $30 – Now $20 – Save $10” is quite easy. With a little CSS you can also style the […]
  • WooCommerce: Set / Override Product Price Programmatically
    There are times when the edit product page settings are not enough. Yes, you usually set regular and sale price via the price fields under “Product Data”; however sometimes you may have to override those prices via code, because you’re running a special promotion, you don’t want to manually change thousands of prices or maybe […]
  • WooCommerce: “Sale” Category (Automatic)
    You can use a shortcode or block in order to display the WooCommerce products on sale. However, what if you wanted a proper “product category” called “Sale” – and where you didn’t need to manually assign this category to each product? Basically, how do we display all the discounted products in a custom category called […]

Rodolfo Melogli

Business Bloomer Founder

Author, WooCommerce expert and WordCamp speaker, Rodolfo has worked as an independent WooCommerce freelancer since 2011. His goal is to help entrepreneurs and developers overcome their WooCommerce nightmares. Rodolfo loves travelling, chasing tennis & soccer balls and, of course, wood fired oven pizza. Follow @rmelogli

26 thoughts on “WooCommerce: How to Set Different Prices Based on User Role?

  1. Hi, I definitely recommend the first option. YITH WooCommerce Role Based Price by YITH – I use this plugin on multiple websites and couldn’t be happier 🙂

    1. Thanks for your feedback

  2. Hi, R!

    This can be applied on purchase, but what about applying a discount to all current members automatically.

    I’d like, for example to give a free month subscription to my current subscriptors to celebrate Christmas or something like that. And the following month will be normal price subscription.

    Any idea about doing that?

    Thanks in advance.

    1. Hi Teresa, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  3. I am trying to find a simple way to have one price for customer role and 1 price for Dealer role that is a fixed price using the standard regular and sale price fields. So customer gets regular price and dealer gets sale price. I have like o12 pricing plugins and none can see the regular and sale price as a field and non can do fixed price. They all do formula percentage fixed discount etc.. but not 39 for customer and 25 for dealer using regular fields.

    1. Hi Mark, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

      1. The third option does offer the fix price function for different roles since I have installed it recently.

        1. Great!

  4. how to set special price for product+role (not discount or markup but different price which not concern to main price) ?

    1. Hi Rus, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  5. Hello, I have this problem.
    I have a product that belongs to two categories: XX and YY. I would like who consult the XX category see the full price, while who consult the YY category (password protected only for bestbuyers) see the sale price. The different price must be set for each product (not for the whole category) and not for user roles.

    1. Hello Michele, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  6. Hey there!

    Is it possible to set a price according to a custom UserMeta? ex:(isDoctor). ?

    1. Hello Robert, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  7. Hello..

    I have a question, I have an App linked with an API with my woo-commerce …Can you make this app work with my woo-commerce app?

    Respectfully Yours,

    1. Hi Waleed, impossible to know until you run some tests!

  8. Hi Rodolfo,

    I want to setup a Woocommerce powered store in such a way that I can specify different prices for normal users, retailers and wholesalers.

    Is that possible?

    1. Yes!

  9. Hi,

    None of these plugins work as our members have 2 roles – Subscriber (default WP) and Member (added by the User Role Editor plugin) if they’re a member (set up by the MemberPress plugin).

    These plugins only seem to recognise whatever is the first role.

    A snippet for the member role pricing for categories would probably work? We only have a couple of categories and the pricing is exactly the same in each category.

    Have you seen a snippet like this?

    Cheers

    1. Hi Keely, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  10. Hello,

    I want to offer members discounted prices. Is it possible to display two prices for each item for users not logged in?
    Ex:
    Non-Member Price: $20
    Member Price: $18

    Specific roles will only see the member price when logged in and will see that price for the product when added to the cart. All other users will see both prices and charged the non-member price for the product when added to the cart unless they join while or before completing their purchase.

    1. Hello Rodney, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  11. Hello, do you know if there is a way to show a different pricing based on a page? For example if page x shows 10 dollars I want page y to show 14 dollars.

    1. Hello Nick, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  12. these solutions work well indeed.
    I use also in one of my project where i need prices based on users roles
    – WooCommerce Role Based Pricing Pro (https://codecanyon.net/item/woocommerce-role-based-pricing-pro/14120734)
    it integrate very well with wp all import

    – Product Visibility by User Role for WooCommerce Pro (https://wpfactory.com/item/product-visibility-by-user-role-for-woocommerce/)
    Need to hide some products or some categories based on the role

    1. Thanks for your feedback Mike!

Leave a Reply

Your email address will not be published. Required fields are marked *