WooCommerce runs serious B2B operations, but nothing you need arrives switched on. Customer groups, tiered pricing, minimum order quantities, quote-to-order, price gating and account terms all require deliberate configuration.
Default WooCommerce shows every visitor the same price, the same catalogue and the same checkout. A trade or wholesale operation needs almost the opposite: different prices for different accounts, volume breaks, minimum order quantities, prices hidden from the public entirely, a quote step before an order exists, and payment on account rather than a card at checkout. None of that is in WooCommerce out of the box. All of it is achievable, and the difference between a B2B portal that reduces admin work and one that creates it is decided in the configuration, not the plugin choice.
This is written for South African distributors, wholesalers, manufacturers and trade suppliers who are currently taking orders by email, WhatsApp and phone, and who suspect there is a better way but have been told by someone that WooCommerce is a retail platform. It is not. It is a retail platform by default, which is a different statement.
Why This Matters Now
South African ecommerce coverage is almost entirely consumer-facing. Takealot, Checkers Sixty60, Shein and Temu dominate the reporting, and the working assumption in most business owners’ heads is that ecommerce means selling to the public.
The commercially interesting movement is elsewhere. B2B procurement is forecast to grow faster than the consumer channels in the South African ecommerce market, as wholesalers digitise catalogues and offer real-time stock visibility to their trade customers. The buyers driving that are not consumers discovering online shopping. They are procurement staff and business owners who order the same things repeatedly and are tired of waiting for someone to email back a price.
That shift is generational as much as technological. The buyer placing your trade orders in 2026 has spent a decade buying everything else online. Asking them to email a list and wait until Tuesday for confirmation is a friction they now notice, and your competitor who has put a portal up does not have that problem.
The Real Business Case Is Not Sales, It Is Admin
Most B2B portal projects get justified on the wrong number. The pitch is usually about new revenue, and new revenue is the least reliable part of the case.
The reliable part is internal cost. Work out what your business currently spends handling a repeat order. Someone reads the email, checks the price list for that customer’s tier, confirms stock, types the order into the accounting system, emails a proforma, waits, then processes it. Call that twenty minutes of a salaried person’s time per order, and be honest about how many of those orders are identical to the last one that customer placed.
A portal removes most of that on repeat orders specifically. The customer sees their own pricing, orders from their own history, and the order arrives structured. Nobody retyped anything. The sales team stops being an order capture function and goes back to selling, which is the actual return.
The second and less obvious return is pricing discipline. Businesses running trade pricing off spreadsheets almost always have drift: customers on rates nobody can justify, discounts granted years ago by someone who has left, and no reliable view of margin per account. Putting pricing into a system forces the question of what each account should actually pay, and that conversation is frequently worth more than the portal.
The Six Things You Actually Need
Strip away the feature lists and a functioning B2B operation on WooCommerce needs six capabilities. Every one of them requires deliberate configuration and most require a plugin.
1. Customer groups and role-based pricing
This is the foundation and everything else depends on getting it right. You need customer groups (wholesaler, distributor, reseller, key account, staff) with a price applied per group, and the ability to override at the level of an individual account where a negotiated rate exists.
The decision that causes the most trouble later is how granular to be at the start. Businesses either build too few groups, which means constant individual overrides that recreate the spreadsheet problem inside WordPress, or too many, which becomes unmaintainable the moment the base price list changes. The workable middle is a small number of genuine tiers, with individual overrides treated as exceptions that require a reason.
Note also that pricing exclusive of VAT is standard in South African trade and is a configuration decision, not a display preference. Trade buyers think in ex-VAT figures, compare quotes in ex-VAT figures, and get irritated by portals that show them consumer pricing.
2. Tiered and volume pricing
Quantity breaks are the mechanism that raises average order value without a conversation. Ten units at one rate, fifty at another, a hundred at another. Applied per product, per category, or across the catalogue.
The implementation detail that matters is precedence. When a customer belongs to a group with a tier price, and a quantity break applies, and a promotional rate is running, which one wins? Get that hierarchy defined in writing before configuration starts. The alternative is discovering it in production when a customer is charged the wrong amount and you are trying to work out why from the order record.
Show the breaks on the product page rather than only applying them at cart. A buyer who can see that fifty units drops the unit rate will frequently order fifty. A buyer who only discovers it after adding ten to the cart usually does not go back.
3. Minimum order quantities
WooCommerce has no minimum order quantity concept at all. There is no field on a product and no rule in the cart. Enforcing a case quantity, a pack size or a minimum order value requires a plugin, and it needs to work at three levels: minimum quantity per product, quantity increments (units sold in sixes must be ordered in sixes), and a minimum order value before checkout is available.
This one is regularly skipped and then bolted on after the first order arrives for three units of something that ships in a carton of twenty-four.
4. Quote requests and the quote-to-order flow
For a large part of South African trade, the transaction does not start with a price. It starts with a request, and the price is the response. Project supply, engineered products, anything carrying freight to a delivery address, and anything where the customer expects to negotiate.
The pattern here replaces the add-to-cart button with a quote request, lets the buyer assemble a list, and submits it as an enquiry rather than an order. Your side prices it, returns a formal quotation, and on acceptance that quote converts to an order without anybody rekeying it. That last step is the one that carries the value, and it is the step most implementations skip.
A quote-based flow suits South African trade for a reason that is not about negotiation at all. It preserves the relationship. A distributor who has spent fifteen years selling on personal relationships is understandably nervous about a portal that removes the human from the transaction. Quote-to-order keeps the salesperson in the loop while removing the retyping, which is why it is usually the right first phase for businesses making this transition.
5. Catalogue visibility and price gating
Most trade suppliers do not want their pricing publicly visible, for reasons ranging from competitors to retail customers to their own channel agreements.
The options run from hiding prices for logged-out visitors while keeping products visible, through hiding entire product ranges from anyone not in the relevant group, to gating the whole catalogue behind a login. The right answer is usually the first, because products visible without prices are still indexable and still bring trade buyers in from search, which is the marketing function of the website. Hiding everything behind a login turns your catalogue into a filing cabinet nobody can find.
Registration should be gated by approval. A form that captures company name, VAT number, company registration number and trading address, submitted for review, approved manually, then assigned to a pricing group. This is the control that keeps consumers and competitors out of trade pricing, and it also produces the data your accounting system needs.
6. Payment terms and purchase order checkout
Trade customers on 30-day terms are not going to enter a card at checkout, and asking them to is the fastest way to have the portal ignored.
You need a payment method restricted to approved accounts that records the order against their account rather than taking payment, and the ability for a buyer to enter their own purchase order number at checkout. That PO number then has to appear on the order, the confirmation email and the invoice, because in a procurement environment an invoice without a matching PO number does not get paid.
Credit limit handling is the advanced version of this and is where the portal starts touching your accounting system. Whether the website enforces limits or simply reports orders and lets the finance system enforce them is a genuine architectural decision. For most businesses starting out, the second is safer, because a website that incorrectly blocks a good customer’s order costs more than one that lets a borderline order through for a human to catch.
Choosing the Plugin Route
There are three broad paths and the right one depends on how much of the above you actually need.
A single comprehensive B2B plugin. Tools like B2BKing and the various B2B and wholesale suites aim to cover the whole surface: group pricing, tiers, quotes, registration approval, invoice and purchase order checkout, company accounts with multiple buyers, and reporting that separates trade from retail. For an operation that needs most of the six capabilities, one integrated plugin is almost always the correct choice, because the interactions between these features are where the bugs live.
A lighter wholesale pricing plugin. If all you need today is a wholesale tier and prices hidden from the public, a focused pricing plugin does that with far less overhead. This is the right answer for a retailer adding a small trade channel rather than a distributor building a portal.
Stacking single-purpose plugins. One for pricing, one for quotes, one for minimum quantities, one for registration. This looks cheaper and is the most common route into trouble. Each plugin filters the price or the cart independently, and the conflicts surface as pricing that is wrong under specific conditions nobody tests for. Untangling that later costs more than the integrated plugin would have.
The advice we give clients is straightforward: write down which of the six capabilities you need in the first year, then choose the smallest number of plugins that covers all of them. Not the cheapest combination. The smallest number.
Hybrid Selling, Which Is Where Most Businesses Actually Are
The majority of South African businesses considering this are not pure wholesale. They sell to the public and to trade from the same catalogue, and the portal has to serve both without either seeing the other’s pricing.
Hybrid is entirely workable and it raises questions that pure B2B does not.
Does a trade customer see retail pricing anywhere? They should not, including in search results, related products and email receipts, all of which are easy to miss during testing.
Does trade stock deplete retail availability? Usually yes, and usually that is correct, but a single large trade order emptying the retail catalogue is a scenario to think about before it happens.
Which VAT display does each audience get? Retail must show inclusive. Trade expects exclusive. Both from the same product record, switched on the customer group.
Do trade orders route differently? Different shipping methods, different fulfilment queue, different confirmation email, frequently a different person handling them.
Answering those four before the build starts is the difference between a hybrid store that works and one that quietly shows the wrong price to the wrong person for three months.
The Integration Question
A B2B portal that does not talk to your accounting or stock system solves half a problem and creates a new one, because someone now has to keep two systems agreeing.
The realistic scope for most South African operations covers products and pricing flowing from the accounting or ERP system to the website, stock levels flowing the same direction, orders flowing back as invoices or sales orders, and customer accounts staying matched between the two.
The pragmatic sequencing advice is to launch with a manual reconciliation step and automate once the order volume justifies it. Businesses that insist on full bidirectional integration before launch frequently never launch, because the integration becomes the project and the portal becomes a phase two that does not arrive. A portal that works with a daily manual export beats a perfect integration that is still in specification eight months later.
What Goes Wrong
Four failure patterns account for most of the B2B portals we are asked to rescue.
Nobody defined the pricing hierarchy. Group price, tier price, individual override and promotion all exist and no one wrote down which wins. This produces intermittent wrong pricing that is very hard to diagnose after the fact.
The portal was built and never announced. Trade customers have ordered by email for years and will keep doing so until someone deliberately moves them. Onboarding is a sales activity, not a technical one, and it needs to be planned as part of the project rather than assumed.
The catalogue was migrated dirty. Trade catalogues carry decades of discontinued lines, duplicate codes and inconsistent units. Importing that produces a portal your customers do not trust, and a trade buyer who finds one wrong price stops using the portal permanently.
Mobile was an afterthought. A large share of trade ordering in South Africa happens from a phone, on a customer’s premises or in a vehicle, frequently on mobile data. A bulk order form designed for a desktop spreadsheet layout is unusable there, and that is where your buyers are.
The Strategic Point
The reason to build a trade portal is not that ordering online is modern. It is that the ordering process is currently the part of your business where your accumulated commercial knowledge (who gets what price, what ships in what quantity, which accounts have terms) lives in people’s heads and in spreadsheets, and is applied manually every time an order arrives.
A portal is that knowledge written down and made executable. That is why it reduces cost, why it reduces error, and why it is genuinely difficult to build well: you are not building a shop, you are encoding how your business trades. Which is also why the businesses that do it properly tend to find the exercise valuable well beyond the website itself.
Frequently Asked Questions
Can WooCommerce handle B2B and wholesale properly?
Yes, but not by default. WooCommerce shows every visitor the same price, has no minimum order quantity concept, no customer groups, and no quote request flow. All of those are added through configuration and plugins. Once configured, WooCommerce runs serious B2B operations, including hybrid stores selling to trade and the public from one catalogue.
How do I show different prices to different customers in WooCommerce?
Through customer groups with role-based pricing, applied by a B2B or wholesale plugin. You define groups such as wholesaler, distributor and reseller, set pricing per group, and override at individual account level where a negotiated rate exists. Keep the number of genuine tiers small and treat individual overrides as exceptions, or you have rebuilt your spreadsheet inside WordPress.
Can I hide prices from the public and only show them to trade customers?
Yes. The usual approach hides prices from logged-out visitors while keeping products visible, so the catalogue still appears in search and still attracts trade buyers. Hiding the entire catalogue behind a login is possible but removes the marketing value of having the products online at all.
How does a quote request system work on WooCommerce?
The add-to-cart button is replaced with a quote request for the relevant products or customer groups. The buyer assembles a list and submits it as an enquiry, you price it and return a formal quotation, and on acceptance that quote converts directly into a WooCommerce order without rekeying. The conversion step is where most of the admin saving sits.
Can trade customers order on account instead of paying by card?
Yes. A payment method restricted to approved accounts records the order against the account rather than taking payment, which is how 30-day terms are handled. Buyers should also be able to enter their own purchase order number at checkout, and that number must carry through to the order confirmation and invoice or it will not clear their procurement process.
Should the portal integrate with my accounting system?
Eventually, yes, otherwise someone has to keep two systems agreeing manually. The practical sequencing is to launch with a manual reconciliation step and automate once order volume justifies the integration cost. Insisting on full bidirectional integration before launch is the most common reason these projects never go live.
Build a Trade Portal That Reduces Admin
If you run a wholesale, distribution or trade operation in Johannesburg or anywhere in South Africa and you are still taking repeat orders by email, our team builds and configures WooCommerce B2B portals, including the pricing structures and integrations behind them.
Take a look at our ecommerce web design services, or contact the team if you would rather talk it through first.







