Configuring wholesale sales in WooCommerce is not only a matter of entering lower prices. A workable B2B setup connects four decisions: who receives wholesale access, how prices are calculated, which products and prices each audience can see, and which order restrictions apply. If these elements are configured independently, retail customers may see wholesale information or approved buyers may receive an incomplete ordering experience.
The documented capabilities described here come from specific WooCommerce extensions rather than from WooCommerce core as a universal feature set. The exact settings can vary by extension version, theme, environment and other active plugins. A practical implementation therefore starts with customer roles and approval, continues with pricing and quantity rules, then addresses visibility and finishes with role-by-role testing.
Plan the B2B and B2C Customer Structure
Before changing store settings, map the audiences that will use the shop. A typical plan distinguishes retail customers, approved wholesale customers and, where applications require review, pending wholesale applicants. Each group should have a defined relationship with products, prices, cart controls and order rules.
A WooCommerce store can serve retail and wholesale customers at the same time when separate roles and corresponding rules are used. The decision is not simply whether to offer a discount. It is whether each audience should browse the same catalog, see different products, use different quantities or follow a different approval path.
Define customer groups before pricing rules
Document the intended customer groups before assigning prices. Decide whether one wholesale role is sufficient or whether multiple wholesale roles are needed for different pricing configurations. A single role can simplify management when all approved buyers follow the same rules. Multiple roles may be appropriate when different wholesale groups need separate pricing or visibility settings.
Keep the structure understandable and avoid combining roles without testing how the selected extension handles that combination. The role model should be based on the actual customer segmentation, not on rules added one at a time without an overall plan.
Choose an open or restricted storefront model
Decide whether the store should remain openly available to retail customers or use a private-store approach for users who are not logged in. A documented private-store configuration can hide prices and cart functionality from non-logged-in users. Without private-store mode, normal retail prices can remain visible to B2C customers.
Record the intended visitor, retail and wholesale experience before configuration. This makes it easier to determine whether a later visibility result is intentional or caused by an incomplete rule.
Create Wholesale Customer Roles and Approval Rules
Dedicated wholesale customer roles provide the basis for role-based pricing and product visibility. If wholesale registration is enabled, decide which roles applicants can request and which role should be assigned before approval. The documented workflow recommends using a pending role with no rights until the business approves the applicant, where that workflow is supported.
Wholesale registration requests can be manually approved or rejected in the documented extension workflow. This separation helps prevent retail users or unapproved applicants from receiving wholesale prices prematurely. The exact registration and approval behavior still needs to be validated in the actual store environment.
Set up the registration and approval path
First decide whether wholesale applicants should use a dedicated registration workflow. If applications require review, keep new accounts restricted until approval. A pending role with no rights follows a least-privilege approach: the applicant can exist in the process without immediately receiving wholesale access.
Test both approval and rejection with non-production accounts. Check which role is assigned after each outcome and whether the expected catalog, price and cart behavior appears only after approval.
Separate approved wholesale access from retail access
Assign wholesale pricing and visibility rules to approved wholesale roles rather than to all registered users. Confirm that retailers do not see wholesale prices before they become wholesalers through the registration process. Also check whether an account with additional roles still receives the expected wholesale price, because role combinations can affect the displayed result.
Configure WooCommerce Wholesale Pricing
Wholesale pricing can be structured globally, by product category or for individual products, depending on the selected extension and the intended catalog logic. Start by deciding how broad the rule should be. A global rule is easier to manage when the same approach applies across much of the catalog, while category and product rules provide more precise control.
The documented options include fixed and percentage pricing for wholesale roles. For more complex B2B structures, review role-based, category-based and product-based rules together before publishing changes. Do not assume that competing rules have the same priority in every extension or version. Check the available documentation and test the actual result.
Choose global, category or product pricing
Use global pricing when the same wholesale logic applies broadly. Choose category pricing when groups of products share a pricing approach. Use product-level pricing for exceptions or individual requirements. Before entering settings, list the roles, categories and products affected by each rule.
This written map helps prevent an exception from being overwritten or applied too widely. After configuration, compare the product-page price and cart price using both a wholesale account and a retail account.
Select fixed or percentage pricing logic
Decide whether the relevant wholesale role should receive fixed pricing or percentage-based pricing. Record the intended logic for each role, category or product, without assuming a discount value that has not been defined by the business.
Then verify the result in the product page and cart. Exact menu labels, pricing-priority behavior and compatibility may vary by extension version, theme, WordPress environment and other active plugins.
Add Tier Pricing, Bulk Discounts and Minimum Quantities
B2B orders often require more than one wholesale price. The documented feature set includes bulk wholesale pricing, tier pricing and step quantities, while another documented extension includes dynamic quantity discounts. These rules should be designed before they are entered, so the store has a clear relationship between quantity, customer role and unit price.
The sources do not prescribe a universal tier structure or minimum quantity value. Instead, define the breaks required by the business and configure only the rules supported by the selected extension. Avoid overlapping rules until their interaction has been tested in a staging environment.
Design quantity breaks before configuring them
List each intended quantity break and identify the applicable role, category or product. Specify whether the rule is a bulk, tier or step-quantity rule. This makes it easier to identify conflicting settings and to explain the expected result during testing.
Verify the unit price at each relevant quantity in the product page, cart and checkout. A displayed tier price is not enough if the final cart calculation does not follow the intended rule.
Configure minimum quantities for the relevant products
Where the extension supports it, minimum quantities are documented at the product variation level. Configure the minimum quantity for the relevant variation, then test both permitted and disallowed quantities. Confirm the behavior through checkout rather than relying only on the product-page display.
Variation behavior should be tested separately from simple product behavior when both are present. Validate the result before applying changes to a live store.
Restrict Wholesale Product and Price Visibility
Pricing and catalog visibility are separate decisions. The documented controls can hide wholesale products from retail users or visitors, hide retail products from selected customers, hide prices and control add-to-cart visibility. Choose the combination that matches the intended storefront rather than assuming that hiding a price also hides the product.
Expose restricted products only to approved wholesale roles where the catalog requires role-based access. At the same time, remember that hidden prices or catalog items should not automatically be treated as a complete access-control or data-security boundary. Visibility must be tested across the paths used by the store.
Choose the visibility level
Decide whether visitors and retail users should see wholesale products at all. Then decide whether to hide the entire product, the price, the add-to-cart control or a combination of these elements. Document which approved roles can view each restricted item.
If the storefront requires separate catalogs, also consider whether retail products should be hidden from selected wholesale customers. The right choice depends on the store’s catalog model and customer process.
Test visibility beyond the main catalog
Test logged-out views, retail accounts and approved wholesale accounts separately. Review direct product URLs, search results and catalog navigation. Also check cached pages, feeds, emails and structured data, because restricted information may appear outside the main shop view if the environment is not configured or tested consistently.
Repeat the test after changes to roles, products, prices or caching. A successful catalog test alone does not establish that every exposure path behaves as intended.
Build a Hybrid B2B and B2C Storefront
A hybrid WooCommerce storefront can keep normal retail prices available to B2C customers while approved wholesale users receive role-based pricing. Product and price visibility rules can then separate the experiences further. This arrangement requires distinct roles and rules rather than a single price logic applied to every account.
Review the complete order journey for both audiences. Tax or VAT-related settings, coupons, shipping, payment methods and checkout behavior may interact with customer roles and pricing. These settings affect store behavior but do not replace jurisdiction-specific tax verification or professional advice where necessary.
Keep B2C and B2B rules distinct
Keep retail pricing available to B2C customers when the store is not configured as a private store. Apply wholesale pricing only to approved wholesale users, and review whether those users should see the retail catalog, a wholesale catalog or both.
Use separate test accounts for each audience. Compare product visibility, displayed prices, add-to-cart controls and checkout access rather than checking only whether a discount appears.
Review the complete order journey
Check coupons, taxes, shipping, payment methods and checkout behavior by customer type. Confirm that quantity restrictions and final prices remain correct through order completion. This is especially important when variable products, tier rules or role combinations are active.
The documented extensions do not provide a complete implementation model for every business type, including negotiated contracts, purchase orders, credit limits or external ERP synchronization. Those requirements should not be assumed from role-based pricing alone.
Test and Troubleshoot the Configuration
Testing should reproduce every meaningful customer state before launch. At minimum, check a logged-out visitor, a retail customer, a pending applicant and an approved wholesale customer. For each state, record the expected product visibility, price, add-to-cart behavior, allowed quantities and checkout result.
Run these checks in a staging environment before applying configuration changes to the live store. If results differ from expectations, investigate the extension version, theme, cache, tax configuration, payment gateway and other active plugins rather than assuming that the pricing rule is the only cause.
Use a role-by-role test matrix
Use a simple test matrix with one row for each customer type. Check global, category, product, tier, bulk and minimum-quantity rules in the product page, cart and checkout. Include both permitted and disallowed quantities where restrictions apply.
Repeat the matrix after changing a role or pricing rule. Recording expected outcomes makes future troubleshooting more precise and helps distinguish a rule issue from a theme, cache or other-plugin issue.
Investigate conflicts and environment differences
Review role combinations carefully when an approved user does not see the expected wholesale price. Additional roles may affect whether wholesale pricing is displayed. Also compare logged-out and logged-in behavior, including direct product access and catalog navigation.
After resolving a conflict, re-test the complete journey. Validate variations, coupons, taxes, shipping, payment methods and checkout, as well as cached pages, feeds, emails and structured data. Do not treat hidden content as fully protected until the relevant exposure paths have been checked.
A reliable WooCommerce wholesale setup follows a clear sequence: define customer roles and approval rules, choose the scope of wholesale pricing, add tier or quantity restrictions, control product and price visibility, then verify the hybrid B2B and B2C experience. The documented capabilities belong to specific extensions, so the actual menus, rule interactions and compatibility must be checked in the selected environment. Tax and VAT behavior also requires jurisdiction-specific verification. Explore our WordPress plugins, WooCommerce extensions, themes and membership plans to find the right tools for your website.