Sell to the trade from the same shop you sell to the public from. A trade customer signs in and sees their price everywhere — the shop page, the product page, the cart, the checkout and their order — with the retail price struck through beside it.
Three things this plugin gets right
* The price on the shop page and the price in the cart are the same number, because they are the same call. The defining complaint against this category is a product listed at one price and charged at another, and it is only possible when the catalog and the cart work the number out separately. Here one resolver answers, through the one WooCommerce hook the shop loop, the cart, the Blocks cart, the Store API and the order line all read through. * A customer can hold more than one role. WordPress users have a *list* of roles, and a shop that grants somebody a wholesale role while they keep customer — which is what happens every time you upgrade a retail customer — has a user whose first role is still customer. A plugin that reads the first role charges that customer retail forever and you cannot work out why. Every role is read, and your first match wins. * A trade account is granted, never claimed. Nothing a visitor submits gives them a price. An application is recorded; you approve it from the Users screen. Approving *adds* the role rather than replacing what the customer had, so an upgraded retail customer keeps everything else.
What you get
* Any number of wholesale roles, in your own priority order * A percentage off the regular price per role, overridden per category (sub-categories included, most specific wins) and per product or variation * Minimum order value and minimum item count per role, enforced at the cart and the checkout with a sentence that says how much more is needed * Products only trade accounts can see or buy — hidden from the shop *and* refused at the cart, not merely unlisted * Tax exemption per role, because it differs by jurisdiction and by account * The retail price struck through beside the trade one, and what it saves * An application form ([gatemi_wholesale_form]) and approve/decline actions on the Users screen * A wholesale_customer role created for you if you have none
Careful about the details
* A percentage comes off the regular price, never the sale price: a trade term is not a promotion to stack on a sale, and a store that compounds them sells below cost during every sale it runs. * Variable products are priced correctly per role. WooCommerce caches a variable product's price range against a hash; this plugin puts the role into that hash, so one customer never sees another's range from cache. * Only the products you have actually marked trade-only are excluded from shop queries — there is no catalog scan on a storefront request. * Emptying a price box clears that price rather than storing zero. * There is no JavaScript at all: every price is server-rendered by the same resolver that charges it, so a page cache can serve it.
Every license includes
- One year of updates and priority support, delivered straight to your WordPress dashboard.
- Use on 1, 5 or 25 sites depending on your license — local, staging and development sites are always free.
- 30-day money-back guarantee — full refund, no questions asked.
- Keeps working after expiry — if you choose not to renew, the plugin keeps running exactly as installed; it simply stops receiving updates and support until you do.
Requires WordPress 6.4+ · PHP 7.4+ · tested up to WordPress 6.8. Works with the classic and block checkout alike.

Amy T (verified owner) –
The documentation actually covers what you need it to. The Pricing & Promotions options are a crowded field and this is the one I settled on. Does not put a foot wrong.
Gemma T. (verified owner) –
Running it on four client sites now. I audited my plugins in June and Wholesale Pricing stayed.
Romain G (verified owner) –
Bien, avec une petite réserve. Wholesale Pricing fait son travail, sans plus.
Thomas F. (verified owner) –
I expected slightly more for the money, but only slightly. Wholesale Pricing is doing its job, if not much more.
Pauline V. (verified owner) –
Rentabilisé en une quinzaine de jours. Wholesale Pricing fait partie des quatre extensions que je mets partout. Mieux que tout ce que j’ai utilisé en Pricing & Promotions.