Shopify B2B & the wholesale channel
WooCommerce handles B2B through user roles: you create a wholesale role, assign approved retailers to it, and plugins then apply trade prices, hide retail prices from logged-out visitors, enforce minimum orders and remove tax where a buyer is exempt. There is no native company or catalog object as on a hosted enterprise platform, so the capability comes from the plugin stack you assemble.
That is the trade in one paragraph. You get almost unlimited control of pricing rules and no per-account platform fee; you take on the assembly, the updates and the responsibility when two plugins disagree. For a brand already running WordPress, it is a perfectly good way to run a wholesale channel, and this is what it takes to do it well.
Roles are the foundation
WordPress users have roles, WooCommerce inherits them, and every B2B plugin in the ecosystem keys off that. Understanding this makes the whole stack legible.
You create a role — wholesale, or several: wholesale, distributor, export. A retailer registers through a form, you approve them, their account is assigned the role. Everything after that is a rule attached to the role rather than to the person, which is why you should keep the number of roles small and meaningful. Three roles you understand beat fifteen that encode individual negotiations.
Approval should be manual, at least at first. A registration form that asks for business name, address, tax or company registration number, website and what they currently stock gives you enough to check in two minutes. Automatic approval invites consumers into trade pricing.
The practical limitation compared with a company-based system is that a role belongs to a login rather than to a business. A mini-chain with three shops and three people ordering is three accounts that happen to share a discount, and grouping them under one billing relationship is something you handle in your own records or with an additional plugin.
The rules you need to build
A working WooCommerce wholesale setup is roughly six capabilities. Some plugins bundle most of them; some brands assemble several.
Role-based pricing. A proportional adjustment off retail for a whole category, plus per-product overrides for items whose margin cannot take a blanket rule. Tiered quantity pricing — a better unit price above a certain quantity — is straightforward here and is one place Woo is genuinely flexible.
Catalogue visibility. Hide prices, or the whole shop, from visitors who are not logged in; show wholesale-only products to trade roles; hide retail-only lines such as bundles from trade buyers.
Order rules. A minimum order value, and quantity step rules so a case of six can only be ordered in sixes. Without the step rule you will be correcting orders by hand.
Tax handling. Remove tax for a role, or per account against a validated registration number, and show prices excluding tax to trade buyers — most retail-facing WordPress themes display prices including tax, which is wrong for a trade view in many markets.
Payment and terms. An offline or invoice payment method available only to trade roles, so an approved account can check out on terms while consumers still pay by card. Then an invoice with a due date, from your accounting system rather than the store.
Quote requests. Replacing the add-to-cart button with a request-a-quote flow for products where price depends on volume. This is common in Woo and genuinely useful if you sell anything configured or variable.
Add one more thing outside the plugin list: separate shipping rates for trade orders, quoted against real pallet or multi-case freight rather than the parcel rates your retail store uses. What those rates do to a unit's margin is the arithmetic in is wholesale profitable for small brands.
What it actually costs to run
The licences are the visible cost and usually the smaller one. The real budget lines are hosting that can handle a logged-in, uncacheable trade area, and the time or retainer to keep the stack working.
Logged-in pages cannot be served from a simple page cache, because prices differ per role. A store that is fast for anonymous shoppers can be slow for the exact people placing large orders, so hosting and caching configuration matter more in a B2B Woo store than in a retail one.
Updates are the other line. WordPress core, WooCommerce, your theme and every plugin update on their own schedules, and pricing rules are precisely the kind of logic that breaks quietly. Two habits make this survivable: a staging copy where updates are applied first, and a short test script you run afterwards — log in as a wholesale user, check a price, check a case-pack step, place a test order on terms, confirm the tax line.
Budget an hour a month for that in calm periods and a day when something breaks. It is not a large cost, but pretending it is zero is how brands end up with a trade area that quietly sells at retail prices for a fortnight.
When WooCommerce is the right answer
Stay on Woo, or choose it deliberately, when one of these is true.
Your pricing logic is unusual — per-customer prices, quantity breaks that vary by category, region-specific rules — and you want to express it exactly rather than approximate it. Woo's rules engines are the most configurable of the common options.
You already run WordPress for content and your organic traffic depends on it. Splitting a site that ranks is a real cost, and a B2B layer is cheaper than a migration.
You have, or are willing to pay for, technical capacity. With a developer on call, the flexibility is an asset. Without one, every plugin conflict becomes your evening.
Your wholesale volume is moderate and your account structure simple. A dozen or two dozen accounts, one or two price levels, no multi-location companies — Woo handles that comfortably.
When to look elsewhere
The honest cases against are structural rather than ideological.
If your accounts are companies with multiple locations, buyers with different permissions and terms that differ per branch, you are rebuilding a data model that hosted B2B platforms provide natively. The comparable native approach is described in Shopify B2B, and the customer-group version of the same idea in BigCommerce B2B.
If nobody on the team wants to own updates, a hosted platform moves that responsibility to the vendor, and that is worth real money.
And if you are choosing a platform from scratch with wholesale as the main channel, weigh the assembly time against a subscription. Building a stack is cheaper monthly and more expensive in hours.
Do not over-build before you have accounts
The most common mistake on WooCommerce is spending a month on the perfect trade portal for four stockists who would happily email an order.
Sequence it. Start with manual invoicing while you win the first accounts. Add role-based pricing and a gated catalogue when buyers start asking to order themselves. Add quotes, tiered pricing and automated tax handling when the volume justifies them. Each step should be a response to a problem you actually have.
The constraint on a young wholesale channel is almost never the store software — it is the list of retailers worth approaching. Pasting a product link into WholesalePilot gives a preview of the retailers and distributors that stock comparable products, which is the part no plugin provides. The routes from that list to a first purchase order are set out in how do brands get into stores.
Questions about running B2B on WooCommerce
Can one WooCommerce store serve retail and wholesale? Yes, and it is the normal setup. Roles change prices, visibility and payment options for approved accounts while the public store stays as it is.
Should trade prices display excluding tax? In most markets, yes, since business buyers think in net prices. Configure this for the trade role specifically rather than changing it site-wide.
How many plugins is too many? Fewer is better. Prefer one well-maintained suite over five single-purpose plugins that each touch the price.
Can a wholesale customer pay on thirty-day terms? Yes, via an invoice payment method restricted to trade roles. The store records the order as awaiting payment and you invoice separately.
Is a separate wholesale site ever worth it on WordPress? Rarely. A subdomain duplicates products, stock and maintenance. Gating a section of the existing store is simpler and keeps one source of inventory truth.