Shopify B2B has grown up. For most wholesale operations, the native Plus features cover the basics. For VAT exemption logic, ERP-synced pricing, multi-buyer accounts, and credit terms, the line between native and custom is where most stores get stuck. Here is how to draw it.

A few years ago, building a B2B wholesale portal on Shopify Plus meant either using the legacy Wholesale Channel (limited and clunky) or building most of the experience yourself in custom code. That changed. Shopify's B2B features have matured into a genuinely capable native offering: company accounts, multi-buyer permissions, catalog-level price lists, payment terms, draft orders, and B2B-specific checkout. For most mid-market wholesale operations, the native features cover the basics, and the "do we even need custom dev?" question has a different answer than it did in 2023.
What has not changed is where the native features stop. VAT exemption logic with VIES validation, ERP-synced pricing that updates in near-real-time, complex sales-rep workflows, credit limits and terms, multi-buyer approval chains, and the various ways European B2B operations diverge from American models. These still need work beyond what the native features provide. The question for any mid-market wholesale store is not whether to use Shopify Plus B2B, it is where exactly the native features cover the case and where custom development picks up.
This post draws that line. It is written for the brand or wholesaler that has a B2B operation, currently runs it on something that is failing them (a manual sales process, a custom legacy portal, a separate B2B-only ecommerce platform), and is evaluating whether Shopify Plus can host it.
Worth getting clear about what is in the box before debating what to build on top.
Company accounts. A B2B buyer is a person, but they buy on behalf of a company. Shopify's company-accounts model represents this directly: a company has locations, locations have buyers, and buyers have permission levels. A buyer at one location cannot see orders from another location unless explicitly granted. This was the single biggest gap in the legacy Wholesale Channel and it is now native.
Catalogs and price lists. You can attach a catalog (which is essentially a price list plus product visibility rules) to a company or to a location. Different companies can see different prices on the same products, with different products available, with quantity-break pricing. The whole shape of B2B pricing fits into Shopify's data model natively.
Payment terms. Net 30, net 60, due on receipt, deposit required. Shopify Plus supports payment terms at the company and order level, with overdue tracking and reminders.
Draft orders and quotes. Sales reps can build quotes for buyers and convert them to orders. The quoting workflow is rudimentary compared to dedicated CPQ tools but adequate for most mid-market wholesale operations.
B2B-specific storefront and checkout. A Plus store can serve a logged-in B2B buyer a different experience than a B2C visitor: hidden prices for non-logged-in users, B2B-specific theme blocks, different checkout flow with the right payment terms attached automatically.
Native ERP and accounting hooks. The Admin GraphQL API exposes everything: companies, locations, buyers, catalogs, draft orders, payment terms. Building the integration is custom work, but the data model is sound.
That set of native features is now the floor of any serious B2B build on Shopify Plus. If your wholesale operation needs less than that, Plus is more platform than you require. If it needs more, the next sections cover where the gaps are.
This is the part most "Shopify B2B is amazing" articles skip. The native features are good, and they have specific limits. Naming them upfront is the difference between a project that ships on time and a project that discovers the surprises in week six.
In the EU, B2B sales to a verified business buyer in another member state are typically zero-rated for VAT. The buyer provides their intra-community VAT number, the seller validates it against the VIES (VAT Information Exchange System) database, and the order is invoiced without VAT.
Shopify's native B2B features handle tax-exemption flags on a company, but they do not validate VAT numbers against VIES in real time, do not automatically refresh validation when numbers expire, and do not produce the specific invoice format that a French, German, or Spanish accountant expects for intra-community sales.
The custom work that fills this gap, typically a Shopify app or a custom service that integrates with VIES, lives on the company-account model. Validate the VAT number when added, store the validation result and timestamp, refresh periodically, expose the exemption state to the checkout, and feed it into the invoice generator. This is not a one-day task and it is not optional for any EU B2B operation.
The native catalog-and-price-list model is configuration-driven. You set up the catalog, attach products with prices, attach the catalog to a company. That works when your wholesale prices are stable and managed in Shopify.
It does not work when your wholesale prices live in an ERP, change frequently, and need to reflect customer-specific negotiated rates that themselves change. The mismatch is a real architecture problem: the source of truth is the ERP, not Shopify, and the Shopify catalog needs to track the ERP state without lag.
Two patterns work in practice. The first is scheduled sync: a workflow pulls ERP prices at a regular interval and updates Shopify catalogs. Acceptable when prices change rarely and a few minutes of lag is tolerable. The second is real-time or near-real-time integration: an ERP webhook or polling workflow triggers immediate Shopify catalog updates when prices change, with a backup reconciliation pass for safety.
We covered the integration architecture in our Shopify and NetSuite inventory sync and Shopify and NetSuite integration posts; pricing sync follows the same principles. The work is real, it is not part of native Shopify B2B, and it should be scoped from day one if your pricing lives in an ERP.
A mid-sized business buyer often has internal procurement rules: orders above a threshold need manager approval, certain product categories need finance sign-off, the assistant places orders but only the buyer can confirm them. Shopify's native company-account permissions are a flat ordering-versus-management split, not a multi-step approval workflow.
For most mid-market B2B operations this is acceptable, your buyers handle internal approvals on their side and only place the final order through Shopify. For larger enterprise buyers, the absence of in-platform approval workflows is a friction point that may need a custom solution: a draft order that requires approval before the buyer can submit, an approval routing engine that pings the right internal stakeholders, status tracking on pending orders.
The custom solution is buildable on top of Shopify's API, but it is genuinely custom development, typically a small custom app embedded in the customer account section.
Shopify Plus supports payment terms, including net 30 and net 60. It does not natively support credit-limit enforcement: blocking a buyer from placing a new order when their outstanding balance exceeds a threshold, releasing the hold automatically when payment clears, and flagging the credit-management workflow to the sales team.
If your B2B operation runs on credit, this is the gap that hurts most. The fix is a custom integration: pull the customer's outstanding balance from your accounting system (often the ERP), check it against the credit limit stored on the company record, and gate checkout if the limit is exceeded. The logic is straightforward; it just is not in the box.
For wholesale operations with a sales team, the rep workflow is often the part that drives the platform decision. The native draft-order and quote features cover the basics: a rep can build a quote, send it, convert to an order. They do not natively cover commission tracking, rep-specific dashboards showing only their accounts, territory routing, or rep-customer assignment with permissions.
These extensions can be built. They are typically the largest single line item in a B2B-portal project because the workflows are specific to each business: how reps work, how they are paid, what they need to see. Scoping the rep workflow is a separate exercise from scoping the customer-facing portal.
The rough rule we use: if your B2B operation needs more than payment terms, catalog pricing, and company accounts, you are in the "Shopify Plus B2B as the foundation with custom development on top" zone. That is not a worse outcome than building everything custom. It just means scoping the custom work explicitly rather than pretending the native features cover what they do not.
The shape of a real B2B portal built on Shopify Plus in 2026, looks roughly like this.
Shopify Plus as the storefront and order management layer. Company accounts, catalogs and price lists, native checkout with payment terms, draft orders for quoted business. The B2B-specific theme blocks show different content to logged-in B2B buyers versus anonymous traffic.
The ERP as the source of truth for pricing, inventory, and credit. Pricing flows from the ERP into Shopify catalogs through a sync pipeline. Inventory flows the same direction. Outstanding-balance and credit-limit data flows from the ERP for credit-hold enforcement.
A custom integration layer that handles the gaps. VIES VAT validation when a company is added or updated. ERP pricing sync. Credit-limit checking at checkout. The invoice generation that produces format-compliant PDFs and archives them. Sales-rep dashboard and commission tracking if needed.
n8n or a small custom service as the workflow engine. The actual integration logic, when an order is placed do these five things, when a customer is added run VIES validation, when a price changes in ERP update the catalog. We have written extensively about self-hosted n8n on AWS and replacing app bloat with n8n workflows; B2B portals are exactly the kind of workflow-heavy build where this approach pays off.
Optional: a headless storefront on Hydrogen for the B2B experience. Most B2B portals do fine with a customized Plus theme. Stores with very specific B2B-buyer UX requirements (heavy quick-order interfaces, complex configuration tools, deep account dashboards) sometimes justify a headless front-end. We covered the tradeoff in Hydrogen vs Next.js.
A B2B portal on Shopify Plus, with the gaps above filled by custom development, is a real project. Honest ranges based on the engagements we run.
A basic B2B portal, native features plus VAT validation plus ERP pricing sync, runs eight to twelve weeks. That covers the audit, the catalog and company-account setup, the integration build, the theme customization for B2B-specific UX, and the validation pass.
A full-featured B2B portal with credit-limit enforcement, sales-rep workflows, approval chains, and custom dashboards adds another four to eight weeks on top, depending on workflow complexity.
The cost shape is the project itself plus Shopify Plus subscription. The custom development is the larger line item for most engagements; the Plus subscription is a known cost. The trap to avoid: budgeting for Plus and assuming the rest is configuration. The custom integration work is where the real cost lives, and the projects that fail are the ones that did not scope it honestly upfront.
For meaningful B2B operations, you need Plus. The native company accounts, catalogs and price lists, payment terms, and B2B-specific checkout are Plus-only features. Standard Shopify and Advanced support customer tagging and apps that approximate some B2B behaviors but lack the native data model. Mid-market wholesale should plan on Plus.
Shopify Plus B2B supports a hybrid storefront where logged-out visitors see B2C and logged-in B2B buyers see different prices, products, and checkout. The theme work to handle this cleanly is real, but the platform supports it. Many mid-market brands run hybrid stores successfully.
Yes. The migration patterns are similar to the WooCommerce to Shopify migration, with B2B-specific additions: company accounts and price lists need to be migrated as well as products and customers, and the existing pricing logic needs to be mapped to Shopify's catalog model. This is typically a longer migration than a pure B2C one.
For straightforward quoting, yes, draft orders cover the case. For complex CPQ (configure, price, quote) needs with product configurators, complex pricing rules, and multi-stage approvals, you are extending beyond native features into custom development or third-party integrations.
Shopify Plus B2B supports PO numbers on orders natively. The buyer enters their PO number at checkout, it flows through to the order, and it appears on invoices and exports. Custom workflows around PO approval and matching are extensions on top of this.
Through Shopify Markets. Catalogs can be priced in different currencies for different markets, and the company account can be associated with the appropriate market. Currency handling for B2B is the same as for B2C from a Markets perspective.
For mid-market wholesale and the lower end of enterprise, yes. The cost is significantly lower, the time to launch is faster, and the native features now cover most use cases. For very large enterprise B2B with deeply customized workflows, complex multi-org structures, and existing investment in the Salesforce or Adobe stack, the calculation is more nuanced. The B2B-on-Shopify-Plus story has shifted enough in 2026 to deserve a fresh look rather than relying on impressions from 2022.
If you have a wholesale operation that is currently underserved by its platform, the audit is the right starting point. A half-day scoping session tells you which gaps between native Plus features and your requirements need custom work, what the realistic timeline and budget look like, and whether Plus is the right host for your specific operation.
If you want us to run the scoping and build the portal, get in touch. We start with the gap analysis, define the architecture between Plus, your ERP, and the custom integration layer, and build the portal with the engineering rigor that wholesale operations need. You can read more about our Shopify app and Functions development, our API and system integration work, and headless Shopify if your B2B UX requires it.
For related reading: Shopify and NetSuite integration for the ERP integration architecture, self-hosting n8n on AWS for the workflow engine, and metaobjects and metafields for the data architecture that backs the company and pricing models.

June 30, 2026 is a hard wall. Scripts editing is already locked. If your checkout discounts, shipping rules, or payment logic still run on Scripts, here is the migration playbook, the failure modes, and what it costs.

A senior engineer's guide to building a B2B wholesale portal on Shopify Plus. Company accounts, custom catalogs, net terms, the limits of native features, and the decision framework for when to extend with custom development.

Metafields attach data to existing resources. Metaobjects are standalone records you can reference anywhere. Here is when to use which, how to model them, and the API patterns that scale across thousands of products.