WooCommerce Wholesale Plugins Compared for B2B Stores

WordPress Caching Plugins for WooCommerce Compared

Both of the serious WooCommerce wholesale plugins — Wholesale Suite and B2BKing — have a capable free version on WordPress.org, so start there and only pay when you hit a wall you can name. When you do hit it, B2BKing’s $199 Startup licence covers a single site with registration approval and net-terms payment built in, while Wholesale Suite only sells a $299 unlimited-site bundle, which makes it the cheaper option if you run more than two stores and the more expensive one if you run exactly one.

What nobody tells you before you buy is that the pricing plugin is the easy half. A working B2B store also needs tax exemption for resellers, a payment method that is not a credit card, and a page cache that does not serve your wholesale prices to retail shoppers. Pick the plugin with those three in mind and the decision gets much simpler.

The four jobs a wholesale plugin actually has

“Wholesale” gets sold as one feature and it is four, bought in roughly this order:

  1. Different prices for different buyers. A per-product wholesale price, or a percentage off a category, visible only to an approved account.
  2. Gating. Retail visitors must not see wholesale prices. Some stores also hide prices entirely until login, which is the “catalogue mode” most plugins advertise.
  3. Onboarding. A registration form that captures a business name and a resale certificate, and an approval step before the account gets the wholesale role.
  4. Getting paid. Trade buyers expect to be invoiced on terms, not to type a card number. This is where most WooCommerce wholesale setups stall.

Job one is a twenty-line filter. Jobs two, three and four are where a plugin earns its licence fee, and it is worth being honest that most roundups only compare job one.

The mistake that costs the most

Turning on role-based pricing while full-page caching is active, without varying the cache by role. A product page cached for a logged-in wholesale buyer can then be served to the next anonymous visitor at trade prices. Nothing errors, nothing is logged, and you find out when a retail customer quotes your wholesale price back at you.

How I judged these WooCommerce wholesale plugins

Stated up front so you can weight them differently if your store is shaped differently. These are documented behaviours and published prices, not benchmark scores — a wholesale plugin’s speed is not what decides this:

How much works for free. If the free tier covers a single wholesale role and per-product pricing, a small store may never need to pay.
  • Licence shape, not headline price. One site or unlimited, and what the renewal costs.
  • Registration and approval, because manually promoting user roles stops being charming at about the tenth account.
  • Payment on terms — an invoice or purchase-order gateway included, or something you have to solve separately.
  • Tax exemption for resale buyers, since a wholesale order that charges sales tax is wrong before it is slow.
  • Install base and release cadence, as a rough read on whether a bug you report gets fixed.

Prices were checked in October 2026 on each vendor’s own pricing page. Two of the three were running introductory or discounted rates, which I have flagged — plan around the regular figure, because that is what you renew at.

WooCommerce wholesale plugins compared

On a narrow screen this table stacks into one card per option rather than scrolling sideways.

OptionFree versionPaid priceRegistration + approvalTerms payment includedWhere it falls short
Wholesale Suite 2.3.0Yes — 20,000+ installs. One wholesale role, per-product and per-variation prices, catalogue mode, coupon restrictions$299/yr, unlimited sites, All Access Bundle only (regular $598, introductory rate). 14-day refundPaid add-on (Wholesale Lead Capture)Yes — Wholesale Payments, in the bundleNo single-site tier. One store pays the same $299 as fifty
B2BKing 5.2.60Yes — 10,000+ installs. Customer groups, group pricing, per-group payment and shipping methods, percentage discount rules, B2B CRM$199/yr 1 site, $299 3 sites, $449 unlimited. 14-day refundYes, in the paid version, with custom fields and approvalYes — invoice and purchase-order gateways in the paid versionLarge feature surface. You will configure things you do not need before you find the thing you do
WISDM Customer Specific PricingNo$79/yr via the WooCommerce Marketplace. 30-day money-backNoNoIt is a pricing engine, not a B2B suite. Per-customer prices and CSV import are strong; registration, gating and payment are not its job
Role filter in coden/a — $0$0NoNoYou own the edge cases: variable-price ranges, cache keys, tax, and every future WooCommerce change
Checked October 2026 against each vendor’s pricing page and WordPress.org listing. Both free versions list WordPress 7.1.2 as tested-up-to.

Wholesale Suite: the biggest free tier, the bluntest licence

The free plugin on WordPress.org is version 2.3.0 with 20,000+ active installs and it does more than you would expect: it creates a Wholesale Customer role, lets you set a wholesale price on simple and variable products, hides prices and the add-to-cart button until login, and stops wholesale accounts stacking retail coupons. For a store with one trade price list, that is the whole job, for nothing.

Paid is where it gets awkward. There is one plan: the All Access Bundle at $299 a year for unlimited sites, listed as an introductory rate against a $598 regular price, with a 14-day refund window. It includes Wholesale Prices Premium, Wholesale Payments, Wholesale Order Form, Wholesale Lead Capture and Wholesale Quotes — the premium tier is where multiple role tiers, quantity-tiered pricing, tax exemption, minimum order amounts and payment-gateway restrictions live.

Weakness worth naming: the absence of a single-site tier is the real cost. If you need one feature from Wholesale Prices Premium on one store, you are buying a five-plugin unlimited bundle to get it. An agency running ten client stores gets a bargain; a single store owner pays agency pricing. Also treat an “introductory” price as a price that moves — ask what the renewal is before you buy.

B2BKing: the one that covers jobs three and four

B2BKing’s free plugin is version 5.2.60 with 10,000+ active installs, and it is built around customer groups rather than a single wholesale role: group-specific prices, group-specific payment and shipping methods, percentage discount rules, and a B2B CRM panel with separate B2B and B2C sales reporting. If your trade pricing differs by customer tier rather than being one flat list, that model fits better than Wholesale Suite’s from the start.

Paid runs $199 a year for one site, $299 for three and $449 for unlimited, with a 14-day money-back guarantee. The paid version is where the two things that actually stall B2B launches live: a business registration flow with custom fields and an approval step, and invoice and purchase-order payment gateways. It also adds tiered pricing tables, private-store mode, tax exemption and VAT handling, quote requests, company subaccounts with order approval, per-customer pricing, CSV price import, and Dokan and WCFM integrations.

Weaknesses worth naming: that list is also the problem. B2BKing has a wide settings surface and a vocabulary of its own — groups, rules, conversations — and you will spend an evening learning it. Its free tier is smaller than Wholesale Suite’s on the pricing side. And at $199 for one site it is more than double WISDM’s $79 if pricing rules are genuinely all you need.

WISDM Customer Specific Pricing: cheapest, and narrower than it looks

Sold through the WooCommerce Marketplace at $79 a year with a 30-day money-back guarantee — the longest refund window here, and the only one that is not 14 days. It sets prices per customer, per role or per group, sitewide or on categories or individual products, with quantity-based tiers, CSV import and export, cart-level discounts and threshold messaging.

That is a genuinely good pricing engine, and per-customer pricing with CSV import is the feature negotiated-price stores keep asking for. The marketplace listing does not state the site count for a licence, so confirm that before you buy if you run more than one store.

Weakness worth naming: it is not a B2B suite and does not claim to be. No registration flow, no approval queue, no terms payment. Buy it when you have retail customers who have negotiated their own prices; do not buy it expecting to open a trade channel with it.

The no-plugin route, and the bug it will give you

If you have one wholesale tier and a developer, job one really is a short filter. Put it in wp-content/mu-plugins/ so a theme switch cannot take your pricing with it:

<?php
// wp-content/mu-plugins/wholesale-pricing.php
add_filter( 'woocommerce_product_get_price', 'wpf_wholesale_price', 20, 2 );
add_filter( 'woocommerce_product_variation_get_price', 'wpf_wholesale_price', 20, 2 );

function wpf_is_wholesale() {
	return is_user_logged_in()
		&& in_array( 'wholesale_customer', (array) wp_get_current_user()->roles, true );
}

function wpf_wholesale_price( $price, $product ) {
	if ( ! wpf_is_wholesale() ) {
		return $price;
	}

	$wholesale = $product->get_meta( '_wholesale_price' );

	return ( '' !== $wholesale ) ? $wholesale : $price;
}

Now the part that catches people. WooCommerce caches the price range it shows on variable products, and that cache is keyed by a hash that knows nothing about your user roles. Leave it alone and a wholesale buyer sees “From $24.00” in retail money above a cart that charges them $16.00. You have to add the role to the hash:

add_filter( 'woocommerce_get_variation_prices_hash', function ( $hash ) {
	$hash['wholesale'] = wpf_is_wholesale() ? 1 : 0;

	return $hash;
} );

That is one edge case. The others are sale prices, price sorting and filtering, the REST API, and tax. Every one of them is solvable and every one of them is yours forever. The honest comparison is not “$0 versus $199” — it is “$199 versus however many hours this costs you in year two.”

Getting paid on terms is the part that stalls launches

Trade buyers want to be invoiced, and a 2.9% card fee on a $4,000 pallet order is $116 you did not plan to spend — the kind of number worth reading WooCommerce payment gateway fees for US stores before you design your checkout. So you need a gateway that records an order as pending payment and lets the customer pay later, by transfer or cheque.

Three routes, cheapest first. WooCommerce’s built-in Cheque and Direct Bank Transfer gateways already do the minimum: order placed, payment pending, you reconcile manually. B2BKing’s paid version ships proper invoice and purchase-order gateways, which is one of the better reasons to pay for it. And there are standalone invoice gateways — Invoice Payment is a free one, version 1.1.7, that adds a pay-by-invoice option to checkout. Disclosure: I build and maintain that plugin, so judge it by the same criteria as everything else here — and by those criteria its weakness is obvious: 10+ active installs and no reviews is a very small track record, so you are an early adopter rather than the hundredth person to hit any given bug. If you want the option with more stores behind it, GazChap’s WooCommerce Purchase Order Payment Gateway has a longer history, and WooCommerce’s own Cheque gateway is free, already installed and has been in core for over a decade.

Whichever route you take, your buyers will want a document. WooCommerce PDF invoice plugins compared covers that side, including sequential numbering, which accountants care about more than you would like.

Two things that break on nearly every wholesale store

Page caching leaks your trade prices

Role-based pricing and full-page caching have to be configured together: bypass the cache for logged-in users, or vary it by role. Work through WooCommerce caching plugins and what breaks before you turn pricing rules on, and then verify it from outside rather than trusting a settings screen:

# A logged-out request should never return a wholesale price
curl -s https://example.com/product/blue-widget/ \
  | grep -o 'woocommerce-Price-amount[^<]*' | head -5

Resale buyers should not be charged sales tax

A US store selling for resale collects a resale certificate and does not charge tax on that order. In WooCommerce that means a tax-exempt flag on the customer, and it needs to survive whatever automated tax service you run — tax exemption sits behind the paid tier in both Wholesale Suite and B2BKing, which is often the single feature that forces the purchase. WooCommerce sales tax plugins compared for US stores covers which services honour an exemption flag and which need it set on their side too.

Two smaller ones worth planning for: wholesale orders are heavy, so check how your WooCommerce shipping methods handle freight and per-role restrictions; and if you are gating a whole catalogue behind login rather than just prices, a membership plugin may be a better fit than a wholesale one.

Which one should you pick?

  • One trade price list, a handful of accounts you approve by hand: Wholesale Suite free. Spend nothing until you actually need a second tier.
  • One store, real B2B — self-registration, approval, invoicing: B2BKing at $199/yr. It is the only option here where one licence covers all four jobs.
  • Several stores, or an agency: Wholesale Suite’s $299 unlimited bundle is the cheapest per site by a wide margin.
  • Retail store, a few customers with negotiated prices: WISDM Customer Specific Pricing at $79/yr, and skip the B2B machinery entirely.
  • One tier, a developer, and a long memory: the code route — but fix the variation price hash on day one.

Whatever you choose, test it logged out. Every expensive failure in this category looks fine from inside an admin session.

Frequently asked questions

Can I run wholesale and retail on the same WooCommerce store?

Yes, and it is the normal setup — a hybrid B2B and B2C store. The parts to get right are gating, so retail visitors never see trade prices, and caching, so a cached page does not leak them anyway. If your trade and retail catalogues barely overlap, a second store is sometimes simpler than a lot of conditional rules.

Do I need to approve wholesale accounts manually?

Only if you stay on a free tier. Both free plugins expect you to assign the wholesale role yourself in the user editor, which is fine for ten accounts and tedious at fifty. Registration with an approval queue is a paid feature in both — B2BKing includes it in the licence, Wholesale Suite covers it through Wholesale Lead Capture in the bundle.

Will a wholesale plugin set minimum order quantities?

Minimum order amounts and quantity-tiered pricing are premium features in both suites. If a minimum order value is the only thing you need, it is cheaper to add it with a short woocommerce_check_cart_items validation hook than to buy a bundle for it.

Can I import a wholesale price list from a spreadsheet?

Yes. WooCommerce’s own product CSV importer handles custom meta fields, so a wholesale price column can be mapped on import. WISDM and B2BKing both ship their own CSV import for pricing rules, which matters most when prices are per customer rather than per product.

Is the free version of either plugin enough to launch with?

For a soft launch, usually. You can price products for a wholesale role, hide prices from the public, and approve accounts by hand. The three things that reliably force an upgrade are tax exemption, self-service registration, and payment on terms — so if your buyers hold resale certificates, assume you will be paying within the first month.

Sources

Leave a Reply to This Post