How to Create a WooCommerce Wholesale System


[mp_span col=”12″]


This post comes from a guest blogger, Beka Rice from sellwithwp.com. You can find the original post here.

WooCommerce works out of the box for direct-to-consumer sales, but business-to-business sales require extensions or additional plugins. Creating a WooCommerce wholesale system also requires additional setup, as wholesale customers, pricing, and payment or shipping methods need to be created.

Fortunately, there are several plugins that can help you create your WooCommerce wholesale shop, and can create a store that sells wholesale products exclusively, or sells to both regular and wholesale customers. The plugin costs to create this system can range from $129 to $256 (plus annual renewals at 50% off), but this setup can also be customized with the help of a developer.

Creating WooCommerce Wholesale Customers

When anyone purchases an item in your shop and creates an account, they’re identified with the “Customer” role in WordPress. This ensures that they have only the capabilities on your site that customers should have (such as the ability to update account information in the “My Account” area on your site’s frontend), but don’t have further capabilities on your site (like adding blog posts).

There are two main ways you can create WooCommerce wholesale customers: create a wholesaler role, or create a wholesaler group. Each can be done with a free plugin.

Creating a new wholesaler role is fairly simple, I’d recommend this approach for most WooCommerce wholesale systems, as user roles are easy to work with and customize or extend, as there are several core WordPress hooks and functions you can leverage around user roles.

More WooCommerce extensions also support user roles versus groups, so you gain the ability to use plugins like Catalog Visibility Options with this approach.

To create a wholesale role, you can use the free User Role Editor plugin. Go to Users > User Role Editor and click “Add Role”. This will let you select an existing role to clone, so I’ll give wholesale customers all of the same abilities as regular customers by cloning the “Customer” role.

WooCommerce wholesale role

Create a Wholesale Role

Creating a wholesale group is easy as well, but I don’t recommend using this unless you have a specific reason to avoid using roles. Groups are basically a secondary way of categorizing users, but you won’t get the built-in WordPress structure that you do around roles, which makes it harder to develop custom code around user groups. There are also a couple of WooCommerce extensions that will integrate with roles, but not groups.

A group may be a better fit if your wholesale customers have a specific role on your site due to a subscription or membership (as they most likely have the “Subscriber” role), so you won’t want to change this. Roles are also used to give access to various parts of your site, so if you have a guest writer contributing to your blog, you probably have them set as an “Author” or “Editor” role, and thus couldn’t also assign a “Wholesale” role.

In this case, user groups can be useful, and can be created using the free Groups plugin. You can create a group by installing the plugin, then going to the “Groups” menu and clicking “Add New Group”. You don’t need to assign any additional capabilities to this group, as we’ll only be using it as user categorization.

WooCommerce wholesale group

Create a Wholesale Group

If you’d like to learn more about how I manage wholesale customer creation, applications, and approval, take a look at this more in-depth article.

Create WooCommerce Wholesale Pricing

Wholesale pricing systems can be created in WooCommerce using the Dynamic Pricing extension ($129), which will work with either wholesale roles or groups.

WooCommerce Dynamic Pricing will allow you to choose how your wholesale pricing roles should be configured. You can create global discounts for wholesalers based on your group or role by going to WooCommerce > Dynamic Pricing. You can turn on price or percentage-based discounts for your role or group here.

WooCommerce Group Percentage discount

WooCommerce Group Percentage discount

These global discounts will override any other rules you’ve set (for example, a product-specific rule), so you should ensure that you’d like this to apply to all products if set.

You can also create advanced category rules for wholesale products. These will let you choose how to apply discounts based on product category, and can be applied based on the line item quantity, or the total quantity of products in the category.

You can select which category must be purchased, which group or role this pricing applies to, and then which category should be discounted. You can also set minimum and maximum purchase quantities for this pricing to take effect, which is a requirement for many wholesale systems.

You can set several quantity rules to tier out discounts, i.e., quantities of 20-30 provide a 10% discount, while quantities over 30 provide a 15% discount.

WooCommerce Dynamic Pricing Category discount

Advanced Wholesale discounts

When these rules are met, the wholesale customer will see a discount reflected in the cart and at checkout:

WooCommerce wholesale pricing applied

Wholesale pricing applied

Order total discounts can be created as well, which are similar to category discounts. Instead of meeting an item quantity or category quantity, an order total or total spend for a category must be met instead to trigger a discount.

The final method that can be used to change WooCommerce wholesale pricing is per-product pricing. This gives you more granular control over your wholesale pricing, as you set product-specific rules.

When editing a product, you can provide discounts based on product quantity, variation quantity, line item quantity (all variations of a product), or category quantity. You can also create quantity tiers for discount amounts as well.

WooCommerce product wholesale pricing

Product Wholesale pricing

The thing I like about product-specific rules is that you can set a fixed price for the product for wholesale customers rather than creating a discount. This can let you create a system where regular customers pay $30 for a product, but wholesale customers pay $18, but only if a minimum quantity is purchased.

WooCommerce Wholesale dynamic pricing fixed price

Wholesale Fixed Price

WooCommerce Wholesale Product Catalogs

If you sell products to both regular customers and wholesale customers, you can probably stop your setup with Dynamic Pricing. However, many shops have products that are wholesale-only, and should be hidden from everyone but wholesale customers.

If this is the case, you’ll need another plugin to change your product visibility: Catalog Visibility Options ($49). Note that this plugin will work with user roles, but not with groups.

We covered this plugin more in-depth when we wrote about creating a customers-only store, but the setup for creating wholesale-only products is very similar. When this plugin is installed, you’ll be able to adjust visibility options for your products to determine which roles can see them.

You can do this on a per-category basis by viewing the product category and editing the visibility options:

WooCommerce Wholesale Visibility: category

Wholesale visibility: Category

You can also adjust visibility on a per-product basis with more granular control. You can select which roles are able to view products, which can view price, and which can purchase products, which lets you limit some products to your wholesale customers. Your regular customers will never see products that are wholesale-only.

WooCommerce Wholesale visibility: product

Wholesale visibility: Product

WooCommerce Wholesale Systems: Other Useful Extensions

There are several other useful extensions, but there are a couple that are particularly relevant for WooCommerce wholesale stores.

If you’d like to offer different payment or shipping methods to wholesale customers (for example, the ability to be invoiced for an order), you can do so using the Role-based methods extension ($49). This plugin integrates with both roles and groups to limit your shipping and payment methods to particular customers.

For example, you can choose to provide invoices to wholesale customers only, while also disallowing free shipping for wholesale purchases. We have an in-depth article on using Role Based Methods here.

While Dynamic Pricing allows you to set minimum quantities required for wholesale discounts or pricing, you may also want to completely limit the checkout to minimum purchase quantities. In this case, the Min/Max Quantities extension ($29) should be helpful. This lets you create minimum and maximum quantities allowed during the checkout process, so orders that contain a quantity lower than the minimum cannot be placed.

Min/Max Quantities can also restrict checkout based on the order total instead of item quantities, and you can opt to omit certain products from these rules.

Summary: Creating a WooCommerce Wholesale System

Creating a basic WooCommerce wholesale system is fairly simple and requires the help of a couple of plugins.

You can create your wholesale customers by adding a new role (preferred method) with the User Role Editor plugin, or by creating a new group (if you cannot adjust roles) with the Groups plugin. Both of these plugins are free. You can then take wholesale customer creation a bit further with our tips on managing wholesale customers.

Once you’ve created your wholesale customers, here are the extensions we’ve mentioned that may prove helpful in creating your WooCommerce wholesale system:

Plugin Price Works with Function?
Dynamic Pricing $129 Roles
Creates pricing rules for quantity, role, or group discounts
Catalogue Visibility Options $49 Roles Restricts product visibility or purchasing to specific roles
Role Based Methods $49 Roles
Selectively enables / disables payment and shipping methods for users
Min/Max Quantities $29 All customers Restricts checkout to min / max quantities or order totals



Download this Resource