Short answer: how does WooCommerce B2B pricing work?
WooCommerce B2B pricing means showing each trade customer the prices they negotiated: their own price list, group discounts, quantity tiers and net prices without VAT, plus checkout options such as VAT number validation and payment on invoice. WooCommerce core does none of this; it has one regular price and one sale price per product.
You add it with a B2B or wholesale plugin, with custom code, or by loading price lists from your ERP. A plugin is enough for a few customer groups. Once prices are negotiated per customer in an ERP such as Business Central, the store should read them from there rather than keep its own copy.
Why do B2B buyers need different pricing?
Trade customers do not shop like consumers. They expect the price they agreed with your sales rep, they compare it with the last invoice, and they notice when the website shows something else. A wrong price is not a lost sale; it is a phone call, a credit note and a damaged relationship.
They also expect other things a consumer store does not provide:
- prices shown excluding VAT, with VAT removed for valid cross-border EU business buyers;
- quick reorder from previous orders or a CSV upload of SKUs and quantities;
- payment on invoice with terms (net 14, net 30) instead of card payment;
- several users per company account, sometimes with approval limits;
- quotes for large or project orders instead of instant checkout.
If your B2B customers still email orders because the website shows retail prices, the problem is not the website traffic. It is the pricing model.
Which B2B pricing models can you use?
| Model | How it works | Good for | Watch out for |
|---|---|---|---|
| Customer group / role pricing | Wholesale, dealer, trade roles with a percentage or fixed price | Simple trade discounts | Becomes unmanageable beyond 5–10 groups |
| Customer-specific price list | Each account has its own prices on some or all SKUs | Negotiated contracts | Needs a reliable source, usually the ERP |
| Quantity tiers | Price breaks at 10, 50, 100 units | Consumables, spare parts | Must also apply in the cart, not only on the product page |
| Discount on list price | Line or category discount per customer | Distributors with stable lists | Rounding differences against ERP invoices |
| Request a quote | Customer builds a basket, sales confirms the price | Projects, large orders | Needs a quote-to-order flow, not just an email |
Most real B2B stores combine two or three: a customer price list where one exists, a group discount as a fallback, and quantity tiers on top.
Plugin, custom code or ERP-driven pricing?
| Approach | When it is enough | Limits |
|---|---|---|
| B2B or wholesale plugin (for example B2BKing or Wholesale Suite) | A few customer groups, prices managed in WooCommerce | Another set of prices to maintain; performance on large catalogues; check plugin compatibility on every update |
| Custom pricing layer in WooCommerce | Specific rules plugins do not cover | You maintain the code |
| Prices synced from the ERP | Negotiated per-customer prices, finance owns pricing | Requires an ERP integration and a clear sync schedule |
Be honest about which one you need. For a shop with three trade tiers and a few hundred products, a well-reviewed plugin is the cheapest route. For hundreds of customer contracts in Business Central, a plugin means retyping those contracts, which is exactly what you were trying to avoid. Our guide to WooCommerce Business Central integration explains how price lists move from the ERP to the store.
VAT numbers and VIES: getting B2B VAT right
For cross-border B2B sales of goods inside the EU, a valid VAT number of the buyer in another member state is what allows you to treat the supply as an intra-Community supply, invoiced without VAT. Domestic B2B sales still carry VAT. Your accountant should confirm the rules for your case, but the store has to collect and check the number either way.
VAT numbers are checked against VIES, the European Commission's VAT Information Exchange System. VIES queries each member state's database, so it is only as available as the slowest national system. Things to build in:
- Prefixes. Greece uses
EL, notGR. Northern Ireland usesXIfor goods. Great Britain numbers are not in VIES; check them with HMRC. - Errors. The VIES web service definition lists fault codes such as
INVALID_INPUT(invalid country code or empty VAT number),MS_UNAVAILABLE(the national system is not responding),MS_MAX_CONCURRENT_REQ(too many requests to that country) andTIMEOUT. The last three are temporary; retry rather than reject the customer. - Evidence. Store the date of the check and, if you query with your own VAT number, the consultation number VIES returns. It is your proof that the number was valid at the time of sale.
- Re-checks. A valid number today can be deregistered next month. Re-check stored numbers periodically, not only on account creation.
If you use the official EU VAT Number extension, the relevant settings are under WooCommerce → Settings → Tax: Remove VAT for Businesses in Your Base Country, Failed Validation Handling (reject the order, accept with VAT, or accept and remove VAT) and Enable B2B Transactions, which makes the VAT number field mandatory. The extension also offers an EC Sales List report.
Also decide how prices are displayed. WooCommerce → Settings → Tax → Display prices in the shop is a single store-wide setting; showing net prices to business accounts and gross prices to consumers needs a plugin or custom code.
Step by step: setting up B2B pricing
1. Define the account types
Decide who is a business customer and how they get approved: self-registration with a VAT number and manual approval is the common choice. Approved accounts get a role or customer group; unapproved ones see retail prices.
2. Choose the source of each price
Write down, for every price type, where it lives: list price, group discount, customer price list, quantity tier, campaign price. One source per type.
3. Apply prices everywhere
The B2B price must appear consistently on category pages, product pages, the mini-cart, the cart, checkout, order emails and the order sent to the ERP. Search results and product feeds should keep showing retail prices to the public.
4. Set up payment terms
Add an invoice or bank-transfer payment method visible only to approved accounts. If your ERP holds credit limits, check the customer's limit and overdue balance before accepting an order on terms. See our overview of payment and checkout options on the ecommerce page.
5. Handle quotes
For project orders, let customers submit a basket as a quote request. Sales adjusts prices and sends back a link that turns the quote into an order at the agreed price.
What syncs, which direction, how often
| Data | Direction | Frequency |
|---|---|---|
| Customer accounts and groups | ERP → store | Nightly and on change |
| Customer price lists and discounts | ERP → store | Nightly and on change |
| Quantity tiers | ERP or store → store | With price lists |
| Credit limit and overdue balance | ERP → store | Hourly or at checkout |
| VAT number status | VIES → store | At registration, checkout and periodic re-check |
| Orders with actual unit prices | Store → ERP | Within a minute |
| Invoices and due dates | ERP → store | Every 15–60 minutes |
Pre-launch checklist
- Business account approval process defined
- One source for every price type documented
- B2B prices identical on listing, product page, cart, checkout and emails
- Public product feeds still show retail prices
- Net or gross display decided per customer type
- VAT numbers validated through VIES, GB numbers through HMRC
- VIES outage behaviour decided (retry, accept with VAT, or reject)
- Check date and consultation number stored on the customer or order
- Invoice payment visible only to approved accounts
- Credit limit checked before orders on terms
- Orders reach the ERP with the actual unit price and discount
- Quantity tiers tested in the cart, not only on the product page
- Page speed checked with a logged-in B2B account on a large category
What does B2B pricing in WooCommerce cost?
| Scope | Estimated cost |
|---|---|
| B2B or wholesale plugin licence | Roughly €100–€400 per year, depending on the plugin and site count |
| Plugin setup, roles, VAT validation, invoice payment | €800–€2,500 one-off |
| Customer price lists synced from the ERP, credit limits, quotes | €5,000–€15,000, usually scoped as part of an ERP integration |
These are estimates based on typical projects; check current plugin prices with the vendor. At Raao, B2B pricing and accounts is an add-on module for an existing store, and the Enterprise package includes B2B, multi-language and ERP sync. All prices on our pricing page are in EUR without VAT, with a fixed quote after a free 30-minute discovery call.
How we did it for the Miele partner store
The Miele partner store runs consumer and professional sales on one platform:
- A Miele Professional B2B shop alongside the consumer store, in a multi-store setup.
- Quote requests for professional equipment, plus digital commissioning reports with e-signature.
- Orders, invoices and loyalty discounts run through Business Central, not through a separate pricing tool in the store.
- Two-way Business Central integration for products, stock per location, orders, invoices and shipments.
One platform for online, in-store and B2B sales means trade customers, showroom staff and consumers all work from the same catalogue and stock, each with the prices that apply to them.