Installation
Free version
- Download the plugin from wordpress.org.
- Go to WordPress Admin → Plugins → Add New → Upload Plugin and choose the file you downloaded.
- Click Install Now, then Activate Plugin.
Premium version
- Download the premium plugin from the email you received after purchase, or log in at users.freemius.com to access the buyer dashboard with the premium version and your license key.
- Before installing the premium version, deactivate the free version if it is still running.
- Go to WordPress Admin → Plugins → Add New → Upload Plugin, choose the premium file, click Install Now, and activate it.
- Double-check that no other role-based-pricing plugins are active — deactivate them to avoid conflicts.
If you see an error like
Fatal error: Cannot declare class ComposerAutoloaderInit…, because the name is already in use, the free version is most likely still active. Deactivate it and start the premium plugin again.
Configuration
Once installed, configure the pricing options for your members and subscribers. If your business runs on subscriptions — users sign up and get different pricing from regular customers — you will also need the WooCommerce Subscriptions plugin.
If you follow a membership-tier model instead, Subscriptions is not required. In that case, pricing is defined by the purchased product (the membership) and the order’s status. A membership can be any WooCommerce product — simple, variable, physical, or virtual. When a user purchases it, they become a member. Throughout this documentation, “members” and “subscribers” means users who purchased the corresponding membership or subscription product and whose orders or subscriptions are in the states you selected.
General settings (order status, subscription state)
The settings page lives at WooCommerce → Settings → Members Based Pricing.
Preventing non-logged-in users from purchasing
For visitors who are not logged in — whose membership status is unknown — you can restrict actions until they sign in or create an account:
- Enable Prevent purchase for non-logged-in user to block anonymous purchases.
- Customize the message shown when a logged-out visitor clicks “Add to Cart” (the Error message when the non-logged-in user adds to cart field). By default it reads something like “Please enter your account to make a purchase.” You can include links to your sign-in page, registration page, or a page explaining your membership.
Hiding prices and the Add to Cart button from non-logged-in users
You can also hide all prices (regular WooCommerce prices and stock-level prices) from visitors by enabling Hide prices for the non-logged-in user. Additionally, you can change the add-to-cart label for these visitors to something that points them to the next step — for example, renaming “Add to Cart” to “Log in to make a purchase”. Leave the field empty to keep your theme’s default label (see Troubleshooting below for one quirk with this field).
Subscription statuses that keep special pricing active
There are two pricing types: flat prices (you set regular and sale prices) and percentage discounts. To showcase the member advantage clearly, you can select Sale price in the “Display as” dropdown.
When special pricing is based on active subscriptions, configure Recognize subscription active when its status is. Only users whose subscription is in one of the selected statuses benefit from subscriber pricing. For example, selecting only “Active” means pricing applies while the subscription stays active — when it expires or is canceled, the user automatically reverts to regular pricing, with nothing more to do on your side. Review all subscription statuses carefully to include the ones relevant to your case.
Order statuses that grant membership pricing
Any WooCommerce product can act as a membership product — no extra plugins needed, and you can have as many membership products as you like for different tiers. Select which order statuses qualify: for instance “Processing” and “Completed”, so refunded, canceled, or failed orders do not count as purchased memberships. If an order later moves to a status you did not select, the user loses the special pricing.
If a user has several orders or subscriptions (for example, after switching membership tiers), the plugin considers the most recent one with a qualifying status — an active subscription wins over a canceled one.
Creating pricing rules (product level)
Rules can be created globally (for several products and categories) or per product. For product-level rules, open the product in wp-admin, go to Product data → MembersSubscribers based pricing, and click Add pricing rule. Create as many rules as you need — useful when you offer several membership tiers.
Each rule has the following fields:
- Purchased products to determine pricing — the product(s) a user must have purchased to qualify. With several products selected, any one of them unlocks the deal.
- Use any purchased products from category — any purchase from the selected category qualifies the user.
- Pricing type — Flat price (set a regular and optional sale price that replaces the product’s cost for members) or Percentage discount (the current cost — sale price if present, otherwise regular — is reduced by the percentage you set).
Optional quantity fields (leave empty if you don’t need limits):
- Minimum quantity — the smallest amount a member can buy in one order; it is reflected in the quantity selector on the product page (theme-dependent).
- Maximum quantity — caps how many pieces a member can buy per order.
- Quantity step — the increment for the quantity selector; a step of 2 allows 2, 4, 6… from the minimum quantity.
Creating pricing rules (variable products)
Variable products can carry rules at the parent level (works like simple products) or per variation. Variation-level rules use the same fields as above and have the highest priority; variations without their own rules inherit the parent-level rules.
Creating pricing rules (global level)
For rules that cover the whole store, categories, or groups of products, go to WooCommerce → Member pricing rules. The table lists every rule you’ve created, with quick actions to edit, delete, or suspend each one. Click Add pricing rule, give the rule a title, and configure the Rules section.
Unlike product-level rules, here you define the scope first:
- Apply for categories — one or more product categories the rule affects.
- Apply for specific products — individual products the rule affects.
Leaving both empty makes the rule apply to every product in the store — handy for a storewide percentage discount for all members and subscribers.
An extra condition lets you require a user role in addition to the purchase: select User roles (custom-created roles work as well as default WordPress ones), or target specific customers directly. The Pricing section then uses the same fields as product-level rules — qualifying products/categories, pricing type, prices or discount percentage, and optional quantity limits.
Be careful with the Flat price type on categories or product groups — it sets one exact price for a range of products that usually cost different amounts. A percentage discount is usually the safer storewide choice.
Rule priority
Variation-level rules win over everything; if there is none (or the product isn’t variable), the product-level rule applies; if neither exists, the global rule determines the member’s price.
Extra feature — create user roles
If you use role-based conditions in global rules, the built-in role creator may help: go to Users → Roles Management, name the role, and choose which existing role’s capabilities it inherits (pick “Customer” for a plain shopper role). The plugin replicates existing capability sets — it does not build custom capability lists from scratch; roles created by other role plugins work fine in pricing rules too.
Custom roles can be removed from the list (WordPress defaults cannot). Important: deleting a role that is still referenced by a pricing rule leaves the rule active for all users until you update the rule. After creating a role, assign users to it under Users → All Users.
Troubleshooting
- The add-to-cart label changed but your custom label field is empty: type something into the field, save settings, then clear the field and save again — the button label returns to your theme default.
- Pricing doesn’t update after changes: most likely caching. Clear the product price cache at WooCommerce → Status → Tools → Clear transients.