All articles
E-commerceJuly 17, 2026 7 min read

Shopify B2B on Plus vs a Custom Wholesale Portal: When the Native Stack Runs Out

Shopify's B2B features on Plus have gotten seriously good. But there's still a line where you either fight the platform forever or build a proper wholesale portal. Here's how we decide.

Shopify B2B on Plus vs a Custom Wholesale Portal: When the Native Stack Runs Out

Every year or two we get the same call: a brand doing solid DTC on Shopify is finally taking wholesale seriously, and the sales team wants a portal. Sometimes the answer is "turn on B2B in Plus and be done by Friday." Sometimes it's a six-month build. The gap between those two answers is where most of the money — and most of the mistakes — live.

This is the framework we actually use to pick.

What Shopify B2B on Plus actually gives you in 2026

If you haven't touched Shopify's native B2B in a while, it's worth resetting expectations. Company accounts, catalogs with per-buyer pricing, quantity rules, payment terms (net 30/60/90), draft orders as quotes, and B2B-aware checkout are all first-class now. You can run B2B and DTC on the same store, or split them into separate expansion stores under one Plus org.

The pieces that usually cover 70% of wholesale needs out of the box:

  • Company profiles with multiple locations and buyers, each with their own catalog and price list
  • Volume pricing and quantity increments per variant, per company
  • Payment terms with net terms and vaulted cards for auto-charge
  • Customer-specific catalogs so buyers only see what they're allowed to buy
  • B2B checkout that skips shipping calculation when you've set flat freight rules

This is genuinely enough for a lot of brands. If your wholesale motion is "reps send buyers to a login, buyers reorder from a fixed catalog, invoices go out on net 30," you can ship this in weeks, not quarters.

Where it starts to strain

The cracks show up when your wholesale process stops looking like retail-with-discounts and starts looking like a sales workflow. Some tells:

  • Buyers negotiate line-item pricing per PO, not per catalog
  • Reps place orders on behalf of buyers and need commission tracking
  • Approvals: a buyer submits a cart, a manager approves, then it becomes an order
  • Complex tax logic (resale certificates per state, VAT reverse charge for cross-border EU)
  • Deep ERP integration where inventory, pricing, and credit limits live in NetSuite/SAP/Business Central and Shopify is a thin storefront
  • Product configurators (industrial, print, packaging) where every SKU is essentially bespoke

Any two of those and you're already writing serious custom code on top of Shopify. Any four and you should seriously consider a portal that talks to Shopify rather than lives inside it.

The three architectures we actually ship

We've stopped pretending there are dozens of options. In practice, wholesale projects land in one of three shapes.

1. Native Shopify B2B on Plus

One store (or an expansion store for wholesale), Shopify B2B features on, a handful of apps for reordering, CSV upload, and rep impersonation. Custom work is limited to theme changes and maybe a few Shopify Functions for pricing edge cases.

Good fit when:

  • Under ~500 active buyers
  • Catalog fits Shopify's variant model (fewer than ~100 variants per product, under 2,000 products per catalog)
  • Pricing is rule-based, not negotiated per order
  • ERP sync can be handled by an off-the-shelf connector or a nightly job

2. Shopify Plus + custom app layer

Shopify still owns products, checkout, and payments. But you build a custom app — usually a React frontend with a Node or Rails backend — that handles quotes, approvals, rep tooling, and reorder flows. It reads and writes via the Admin API, Storefront API, and Shopify Functions for anything that touches checkout logic.

This is the sweet spot for most mid-market brands. You get Shopify's checkout, PCI scope, and tax integrations for free, but you're not fighting the admin UI for workflows it was never designed to handle.

3. Custom wholesale portal, Shopify optional

A fully custom portal with its own auth, catalog, pricing engine, and quote-to-cash flow. Shopify may still be the checkout of record, or it may be gone entirely in favor of a headless commerce backend (commercetools, Medusa, or a bespoke stack). ERP is often the source of truth for pricing and inventory.

We reach for this when the sales process is the product — configurators, RFQ-heavy flows, multi-step approvals, or when the DTC store is a completely separate business.

A decision checklist that's saved us from bad calls

Before we quote anything, we walk through these questions with the client. If more than three or four tilt toward "custom," native B2B is going to fight you.

1. How is price determined?
   [native]  Rule-based per company/catalog
   [custom]  Negotiated per PO or per line item

2. Who places the order?
   [native]  The buyer, self-serve
   [custom]  A rep on behalf of the buyer, with commissions

3. Approval flow?
   [native]  None, or a single approver
   [custom]  Multi-step, role-based, with audit trail

4. Where is the source of truth for inventory/pricing?
   [native]  Shopify
   [custom]  ERP (NetSuite, SAP, D365, Acumatica)

5. Catalog complexity?
   [native]  Standard products with variants
   [custom]  Configurable products, kits, made-to-order

6. Payment terms?
   [native]  Net terms + card on file
   [custom]  Credit limits enforced live from ERP, invoice financing

7. Tax and compliance?
   [native]  US sales tax + basic VAT
   [custom]  Resale certs per state, reverse charge, deemed suppliers

We literally paste this into the discovery doc. It short-circuits weeks of "but can Shopify do X" conversations.

The integration reality nobody quotes for

Every wholesale build we've done has been dominated, cost-wise, by two things: ERP integration and the pricing engine. The storefront is the easy part.

ERP is where projects die

If pricing, inventory, and credit limits live in an ERP, you have three choices:

  1. Sync everything into Shopify on a schedule. Simple, but stale. Fine for catalogs that change weekly.
  2. Sync catalog, but call the ERP live for price and stock. Better, but now your PDP has an external dependency. Cache aggressively and design for the ERP being down.
  3. Treat Shopify as a checkout endpoint only. The portal reads from ERP directly and only hands off to Shopify at cart creation. Cleanest, most expensive.

Here's the pattern we use for live pricing when we've gone with option 2, running as a Shopify Function or a middleware call:

// Middleware: resolve price for a company + variant
async function resolvePrice({ companyId, variantId, quantity }) {
  const cacheKey = `price:${companyId}:${variantId}:${quantity}`;
  const cached = await redis.get(cacheKey);
  if (cached) return JSON.parse(cached);

  try {
    const price = await erp.getContractPrice({
      companyId,
      variantId,
      quantity,
      asOf: new Date()
    });
    // Short TTL — contract prices change, but not per second
    await redis.set(cacheKey, JSON.stringify(price), 'EX', 300);
    return price;
  } catch (err) {
    // Fall back to Shopify catalog price rather than block the cart
    logger.warn('ERP price lookup failed, falling back', { err, variantId });
    return await shopify.getVariantPrice(variantId);
  }
}

The fallback matters. If your ERP goes down and your entire wholesale store 500s, you'll hear about it from every rep in the field within an hour.

Rep tooling is a product, not a feature

One thing that consistently gets underestimated: reps don't want the same UI as buyers. They want to impersonate a buyer, see margin on every line, edit prices with approval, save carts as quotes, and reorder from history in three clicks. Bolting that onto a theme is painful. It usually ends up as a separate internal app that talks to the same backend.

When we pick each option in practice

Rough heuristics from projects we've shipped:

  • Under $5M wholesale GMV, simple catalog, self-serve buyers: native B2B on Plus. Don't overbuild.
  • $5M–$50M, mixed rep + self-serve, ERP-backed: Shopify Plus with a custom app layer. Keep checkout on Shopify.
  • $50M+, configurators, or wholesale is 80%+ of revenue: custom portal. Shopify may not even be in the stack.

These aren't hard lines. We've done custom portals at $10M when the sales process was weird enough, and we've kept $80M brands on native B2B because their catalog was genuinely simple.

Where we'd start

If you're staring at this decision right now: don't start with the tech. Sit with two reps and two buyers for a day each. Watch how orders actually get placed today — the spreadsheets, the WhatsApp messages, the phone calls, the "just add it to my usual." That's the workflow you're replacing. Then run it against the checklist above.

Nine times out of ten, the answer is "native B2B plus a thin custom layer for the three things that actually matter to your sales team." The trick is knowing which three. If you want a second set of eyes on that call, our e-commerce team does these audits as a fixed-scope engagement before anyone writes code.

#Shopify#B2B#Headless Commerce#Wholesale#Shopify Plus

Want a team like ours?

72Technologies builds production software for the kind of teams who actually read this blog.

Start a project