WooCommerce B2B modernization: pricing rules, subscriptions and integrations without replatforming

WooCommerce B2B modernization: pricing rules, subscriptions and integrations without replatforming

5.00/5 - (17 votes)
7 min read
Guide

Can WooCommerce handle B2B without replatforming?

A lot of WooCommerce stores in the UK and Ireland started as consumer shops and slowly took on a trade operation: accounts with their own prices, orders on 30-day terms, a wholesale discount bolted onto a user role. At some point someone asks whether the business should move to Shopify Plus or Adobe Commerce. Often it does not have to, provided WooCommerce gets the B2B pieces it lacks.

I am Mariusz Szatkowski, a WordPress developer since 2006. I do this work myself: I read the code, set up pricing and integrations and test everything on staging. There is no team and no subcontractor, so the code you receive is code I wrote. If the storefront changes visually, you supply the design and wireframes and I build them.

A checkout broken by a bad rebuild belongs in the WooCommerce rescue sprint. Ongoing uptime and checkout monitoring is the store reliability plan. Selling into several EU countries under OSS is covered in the WooCommerce EU readiness review.

How to set customer-specific B2B pricing in WooCommerce

WooCommerce core has a regular price and a sale price. Group prices, quantity breaks and contract prices all have to be added. Which way to go depends on how many price lists you really have.

ScenarioA plugin is enoughCustom code needed
Up to three customer groups with a fixed discountyesno
Contract prices that differ per accountnoyes
Quantity breaks combined with groups and currenciesrarelyusually
Prices pulled live from the ERPnoyes
A catalogue visible to one account onlypartlyyes

When prices are per account, I keep them in a dedicated table fed from the ERP and indexed by account and product. Thousands of prices stored in wp_postmeta slow down every product query.

Quote requests instead of a cart price

Some trade products have no price until someone works it out: pallet quantities, made-to-order variants, freight. For those I use my own plugin, Quotlet from plogins.com. It adds an add-to-quote button, hides prices, lets guests build a quote list and sends the request to you by email. The free edition is on WordPress.org. For quantity breaks there is a sibling plugin, Tiers.

When prices are hidden, product pages stay open to search engines. Descriptions, specifications and data sheets keep ranking, and only a logged-in account sees the price.

Connecting WooCommerce to Xero, Sage or SAP Business One

UK and Irish trade businesses I meet run Xero, Sage 50 or Sage 200, and the larger ones SAP Business One. Each exposes data differently, so the first step is checking which API your installation offers and what it allows.

What I usually sync:

  • stock levels, live or on a schedule,
  • account data: VAT number, delivery addresses, payment terms, credit limit,
  • orders with document numbers and fulfilment status,
  • invoice numbers assigned by the ERP.

Why ERP calls do not belong in the checkout

If checkout waits for the ERP, an ERP maintenance window stops your sales. I push each order into a queue run by Action Scheduler, the library WooCommerce already uses to deliver webhooks and WooCommerce Subscriptions uses to take renewal payments. When the ERP is down, jobs wait and run later. Every failed job stays in the log with its error, so you know which order needs a look.

The same queue handles the slow work after an order is placed: PDF invoices, notification emails, exports. The customer sees the confirmation page without waiting for any of it.

Recurring B2B orders with WooCommerce Subscriptions

In trade, a subscription is more often a monthly consumables order or an annual licence than premium access. WooCommerce Subscriptions has two renewal modes. With automatic renewals the gateway charges the customer, and a failed payment is retried by rules, by default five attempts over a week. With manual renewals the customer gets a renewal order and pays with any method enabled in the store, bank transfer included.

Invoice customers on 30-day terms fall outside the retry system. For them I set up reminders and statuses so an overdue renewal reaches your accounts team, and the subscription does not lapse on day one of a late payment.

Order approval and credit limits

Neither exists in WooCommerce core. When you need them, I build them:

  • order approval: a buyer fills the cart, the order gets its own status and waits until someone with the right permission approves or rejects it from an email link or the dashboard,
  • credit limits: the account page shows the remaining limit, the store blocks an order that would exceed it, and the figure updates from the ERP once a payment is posted,
  • cost centres: an order can be assigned to a branch or project so purchases land on the right budget.

Checking VAT numbers after Brexit

Great Britain VAT numbers are no longer in the EU’s VIES system. I validate them against the HMRC check a UK VAT number service and EU numbers, including Irish ones, against VIES, at account registration and again at checkout. A missing or invalid number is caught before the order reaches your accounting software.

What does HPOS change for a B2B store?

HPOS (High-Performance Order Storage) moves orders out of wp_posts and wp_postmeta into four dedicated tables: wc_orders, wc_order_addresses, wc_order_operational_data and wc_orders_meta. Since WooCommerce 8.2, released in October 2023, it is the default for new installs. Older stores often still keep orders in the posts table next to products and pages.

Before switching, I check every plugin and every line of custom code. Compatible code loads orders with wc_get_order(), changes metadata through the order object and calls save(), and the plugin declares support with FeaturesUtil::declare_compatibility. Direct wp_postmeta queries get rewritten. Then I turn on compatibility mode, in which WooCommerce keeps the old and new tables in sync, and only make HPOS authoritative once both sides match.

Source: HPOS documentation on developer.woocommerce.com.

Can database work replace replatforming?

Before you pay for a migration, look at the database. In trade stores I usually find:

  • a wp_options table full of autoloaded rows left by plugins removed years ago,
  • order metadata from extensions that no longer exist,
  • plugin and theme queries that run once per product variation,
  • orders still in wp_postmeta because nobody switched to HPOS.

If checkout completion drops without a gateway outage, start with WooCommerce performance optimization. Moving platform makes sense when you need a multi-vendor marketplace, when your ERP vendor offers a certified connector only for another platform, or when a load test on a copy of the store shows WooCommerce cannot cope on sensible hardware. In that case I write down what the data migration costs and what happens to your URLs.

Testing and handover

Every change is tested on staging with a copy of the data stripped of personal information:

  • the purchase path for each customer group, checking each account sees its own price and terms,
  • an order placed exactly at a quantity break,
  • what the store does when the ERP does not respond,
  • payments in the gateway’s test mode, for example Stripe or GoCardless.

The code lives in a private Git repository. Each change comes with a written note on what changed and how to check it. I work by email and in shared documents, so decisions stay on record. Before I get access to a store holding customer data, I sign a data processing agreement under Art. 28 GDPR. I invoice as a Polish business with EU VAT ID PL7393037445, under a contract governed by Polish law.

Describe your store and what needs to change through the contact form. I will reply with scoping questions and then a quote with its assumptions.

Explore other WordPress services and knowledge base

Strengthen your business with professional technical support in key areas of the WordPress ecosystem.

Recommendations from LinkedIn

Recommendations and reviews of working with WPPoland

Selected recommendations from WordPress, WordCamp and e-commerce leaders - with a focus on delivery on time, technical depth, and a business-driven approach to WordPress development.

Karolina Czapla

Karolina Czapla

Marketing Strategist, Performance & Digital Strategy

“Working with Mariusz on WordCamp has shown me how rare it is to combine deep technical skill with genuine leadership. He plans, coordinates and delivers with precision, while giving the team space to grow and contribute....”

Co‑organiser, WordCamp Gdynia 2024 & 2025

Anna Kamińska

Anna Kamińska

Talent Acquisition Specialist / HR People Partner

“Mariusz's portfolio speaks for itself. It reflects his precision, versatility and sense of responsibility. You can trust him to guide a project from idea to delivery, keep stakeholders informed and make sure things are d...”

Worked on the same team

Sarah‑Luisa Kwolek

Sarah‑Luisa Kwolek

IT Project Management & Product Owner, Web/App

“For over two years I could always rely on Mariusz to handle WordPress tasks calmly and professionally, from styling and templating to third‑party integrations. He brings steadiness to the team and keeps the frontend side...”

Mariusz was her client for WordPress work

Argert Boja

Argert Boja

Senior Full‑Stack Developer

“Mariusz is the teammate everyone hopes for: strong full‑stack WordPress skills, clear explanations and a positive attitude even under pressure. He moves easily between custom plugins, performance work and Gutenberg layou...”

Worked alongside Mariusz on WordPress projects

Varun Patil

Varun Patil

Growth & CRM Lead

“Beyond development, Mariusz understands SEO, analytics and growth. He talks directly with stakeholders, asks the right questions and ships solutions that move business metrics, from AMP to tracking to performance.”

Managed Mariusz on growth initiatives

Rafał Osiński

Rafał Osiński

Founder @ EasyTrips.pl, Senior WordPress Dev

“I've known Mariusz through the WordPress community for many years. He's reliable, deeply involved and consistently shows up, at meetups, WordCamps and in projects. If you care about long‑term collaboration and someone wh...”

WordPress community co‑organiser

Daniel Blossfeld

Daniel Blossfeld

Process Optimization & Digitalization Consultant

“I had the pleasure of working with Mariusz for almost three years. During that time, his WordPress development skills proved invaluable across a range of projects, from website builds to online member areas and even Shop...”

Mariusz was his client for WordPress work

Natalie Wiszczor

Natalie Wiszczor

CRM & E-Mail Marketing Manager

“I had the great pleasure of working with Mariusz for over 4 years in the technical field. During this time, he proved to be a competent and reliable colleague. What stood out in particular was his friendly nature and his...”

Worked with Mariusz on different teams

Mark Chalklen

Mark Chalklen

Head of Design & Build at Itineris Limited

“Mariusz is a great member of the team, always happy to get stuck into any task and happy to learn new things. A great communicator and all round nice guy to work with. Hard to beat on our weekly Strava leader board thoug...”

Managed Mariusz directly

Jessica Di Pasquale

Jessica Di Pasquale

Leading SEO initiatives with data-driven growth strategies.

“Mariusz is a very skilled, patient and expert guy. Always ready to help and to fix errors, I really appreciated working with him. He is such a great colleague!”

Managed Mariusz directly

Biki John

Biki John

Content Marketing Aficionado & SEO Enthusiast

“It was great to work with Mariusz. I really appreciated his extensive knowledge of WordPress and how that came in handy whenever I needed support navigating the CMS. I commend Mariusz totally for his patience, good natur...”

Worked with Mariusz on different teams

Rafal Borowiec

Rafal Borowiec

Software Developer, Consultant, Manager and Lecturer

“I had an opportunity to work with Mariusz for 7 months. He excels in technical optimization for search engines (SEO). Mariusz has also strong expertise in AMP development, GTM, and GA. Mariusz feels very comfortable with...”

Managed Mariusz directly

Belinda Koch

Belinda Koch

Web-Tracking Analyst at TUI

“Mariusz is a great person to work with. He is extremely motivated to learn new things and share his knowledge, and is very knowledgeable on a wide range of topics. We worked together on digital analytics and tracking top...”

Worked with Mariusz on digital analytics and tracking topics

Ali Nezamolmaleki

Ali Nezamolmaleki

Growth, SEO, Analytical thinking, AMP

“Mariusz is an extremely talented person in his field of work. He is always capable of giving a new perspective to solve problems and to think out of the box in situations where everything seems to be locked. Working with...”

Worked with Mariusz on the same team

Karol Jakubcewicz

Karol Jakubcewicz

Front-end / JavaScript Developer

“Mariusz is an incredibly experienced WordPress developer and SEO/SEM specialist I've had the pleasure to work with for almost two years. As a pilot of the team responsible for AirHelp's website development, he's been one...”

Worked with Mariusz on the same team

Paweł Lewczuk

Paweł Lewczuk

Front-end developer, WordPress developer

“I collaborated with Mariusz on several projects and our cooperation was always exemplary. I believe there are many more joint projects ahead of us. Highly recommended!”

Mariusz was Paweł's client

Przemek Wroblewski

Przemek Wroblewski

Software Developer with 20+ years of experience

“I found Mariusz as someone with great expertise and profound knowledge of frontend solutions. Powerful, knowledgeable and accountable WordPress developer. Has an easiness to build interpersonal relations with others. He ...”

Worked with Mariusz on different teams

Frequently asked questions

Questions about scope, delivery, pricing, and execution quality.

Is WooCommerce suitable for B2B?#
Yes, once pricing, roles and integrations are set up for trade. WooCommerce core has no per-account price lists, order approval or credit limits, so I add them with plugins or custom code. Where your catalogue hits a performance limit is something a load test on a copy of the store shows.
How do you manage individual prices for each trade account?#
For a few groups with a fixed discount, a volume or wholesale pricing plugin is enough, for example Tiers from plogins.com. When every account has its own contract, I build a pricing layer fed from the ERP and stored in its own table instead of wp_postmeta.
How do subscriptions work for B2B customers?#
WooCommerce Subscriptions supports automatic and manual renewals. A manual renewal can be paid with any payment method enabled in the store, including bank transfer. The failed payment retry system only covers automatic renewals, so for invoice customers I set up reminders and statuses separately.
Do I need to switch platforms if WooCommerce is slow?#
Usually not. The common causes are a bloated wp_options table, leftover order metadata, slow plugin queries and hosting. A database review and the move to HPOS show whether the problem can be fixed in place before anyone pays for a migration.
How is the work scoped and priced?#
Individually, after I have looked at the store. It depends on the number of integrations, pricing rules, catalogue size and subscriptions. You get a written scope with assumptions first, then a quote. Send a description of the store through the contact form.

Need an FAQ tailored to your industry and market? I can build one aligned with your business goals.

Let’s discuss

Related Articles