Building a private B2B section on Shopify (without going to Plus)

Shopify Plus has full B2B. If you can't justify Plus yet, here's how to build a working B2B / wholesale section on the standard plan.

Shopify Plus has a real B2B suite — Companies, locations, customer-specific catalogues, quote requests, custom payment terms. It also costs $2,300/month minimum.

If you have wholesale or B2B revenue but can’t justify Plus yet, you can build something that works on Shopify standard. It won’t be as good — but it’ll be 80% as good for 5% of the price.

The architecture

You’re going to use:

  • Customer accounts + tags to identify B2B customers
  • Metafields / metaobjects to store wholesale prices
  • Customer-specific pricing via a discount code or app
  • Hidden / gated pages for the B2B catalogue
  • Login-required collections for wholesale-only products

Each piece is straightforward. Together they form a system.

Step 1 — Tag your B2B customers

When a wholesale customer registers (manually approved), tag them b2b in the customer admin. This tag is the key to everything else.

Optional: tier them — b2b-tier1, b2b-tier2 — if pricing varies by relationship size.

Step 2 — A B2B-only collection

Create a collection that only contains wholesale variants or wholesale-only products. Hide it from your sitemap and main navigation.

In your theme, gate it:

{% if customer.tags contains 'b2b' %}
  {% comment %} render the collection normally {% endcomment %}
  {% for product in collection.products %}
    {% comment %} ...PDP cards... {% endcomment %}
  {% endfor %}
{% else %}
  <p>This catalogue is for approved wholesale customers only. <a href="/account/login">Log in</a> or <a href="/pages/wholesale-apply">apply for access</a>.</p>
{% endif %}

Step 3 — Wholesale pricing

Three approaches, in increasing complexity:

Approach A: tiered discount code. Generate codes like B2B-CUSTOMER-NAME that apply 30% off the entire order. Auto-apply on cart for tagged customers via JS. Works on any plan.

Approach B: separate “wholesale” variants per product. A “Tee — Retail $40” and a “Tee — Wholesale $20” variant on each product. Hide the wholesale variant unless customer is tagged b2b. Works on any plan, but adds variant complexity.

Approach C: a wholesale app. Wholesale Pricing Manager, Bold Custom Pricing, etc. Apps charge $40-$200/mo. They handle pricing, hide retail prices, manage minimum quantities. Often worth it for serious B2B.

Step 4 — Minimum order quantities

If your B2B requires “minimum 12 units” or “$500 minimum order”:

  • For 12-unit minimums per product: a small JS validator on the cart that prevents checkout if quantity < 12 for B2B-only SKUs.
  • For total-order minimums: same approach but on cart total.

Or use an app — Shipping Rates Calculator Plus and similar handle this with rules.

Step 5 — Net terms (don’t try to do this)

If you offer Net 30 / Net 60 payment terms, do not try to bolt this onto Shopify standard. Use:

  • Manual invoicing — customer places order, you mark “pending payment,” send invoice via Stripe/Pay.com, fulfil on payment.
  • A third-party tool like Resolve or Slope.
  • Eventually, upgrade to Plus and use real B2B Companies + payment terms.

Trying to fake net terms with custom Shopify hacks creates accounting chaos.

Step 6 — A wholesale application form

Customers shouldn’t auto-register as B2B — you want approval. Use a regular Shopify form (Pages → wholesale apply) or a free form app.

Workflow:

  1. Customer fills the form.
  2. You email them after vetting (Shopify or company info verification).
  3. You manually create their account + tag them b2b + email login instructions.

Step 7 — Hide retail prices for B2B customers

If retail and B2B see the same store, hide pricing for non-logged-in or non-B2B users on the wholesale collection:

{% if customer.tags contains 'b2b' %}
  <span class="price">${{ product.price | money }}</span>
{% else %}
  <a href="/account/login" class="price-locked">Log in to view price</a>
{% endif %}

What this setup CAN’T do (so you know when to upgrade)

  • True multi-buyer companies. One Plus Company can have 10 buyers. Standard Shopify supports one customer per account.
  • Volume pricing breaks within a single order. “$10/unit at 100, $8/unit at 500” — this is hard without an app.
  • B2B-specific checkout. Plus has dedicated B2B checkout with company billing fields, PO numbers, etc. Standard doesn’t.
  • Custom catalogues per customer. Plus lets you build a unique catalogue per Company. Standard you fake this with collections + tags.

When to actually upgrade to Plus

The math:

  • Your B2B revenue exceeds $20–30k/month, and
  • You’re paying for 3+ apps to fake B2B features, and
  • Your team is spending real time on workarounds

Then Plus pays back. Until then, the standard-plan workaround above is fine.

Real-world example

A client we worked with had $15k/mo wholesale. We built the standard-plan approach above in two weeks. Their B2B customers were happy. Their accounting was clean. Six months later they hit $40k/mo wholesale and we migrated them to Plus + Companies in another two weeks.

The standard-plan approach got them there. Plus is for when you’ve earned it.

— Read next

The 6 Shopify apps that earn their subscription, and the 6 to remove tomorrow

— Hit a wall?

We can help building properly?