Shopify's native B2B features have matured significantly since their 2022 launch. If you're evaluating Shopify Plus for a wholesale or B2B operation, this guide covers the actual architecture — not the marketing copy.
What Shopify B2B actually is
Shopify B2B is a set of Plus-only features that let you create company accounts — entities that sit above individual customer accounts. A company has locations, contacts (Shopify customers), payment terms, and a catalog (a price list plus access rules).
Company accounts: the core data model
The company is the top-level object. Everything else hangs off it. Here's how the hierarchy works:
- →Company — the legal entity (e.g. Acme Corp)
- →Company Location — a specific address/division within the company
- →Company Contact — a Shopify customer who belongs to the company and can place orders
- →Catalog — a price list + product visibility rules assigned to a company or location
Catalogs and price lists
A catalog is how you control pricing and product access for B2B customers. Each catalog has one price list — a set of price adjustments applied to products. You can have fixed prices per product/variant, percentage adjustments, or volume-based pricing.
mutation CreateCatalog {
catalogCreate(input: {
title: "Acme Corp Catalog"
priceList: {
name: "Acme Corp Pricing"
currency: GBP
fixedPricesAndAdjustments: [
{
variantId: "gid://shopify/ProductVariant/12345"
price: { amount: "45.00", currencyCode: GBP }
}
]
}
publication: { channelId: "gid://shopify/Channel/..." }
}) {
catalog { id title }
userErrors { field message }
}
}Payment terms
Payment terms (net 30, net 60, net 90, etc.) are assigned at the company or location level. When a B2B customer checks out, the payment terms are applied automatically — the customer doesn't pay at checkout, an invoice is generated instead.
Payment terms are a Plus-only feature. On standard plans, you'd need to implement this manually using draft orders or a third-party app.
What you can't do with native B2B
Native B2B is powerful but has documented limitations. You can't have multiple price lists per company (one catalog per company). Volume pricing beyond line-item quantity breaks requires Shopify Functions. Purchase order workflows need custom development or an app.
When to use native B2B vs. custom development
- →Native B2B is sufficient for: simple wholesale with fixed trade pricing, payment terms, and basic company account management
- →Custom development is needed for: complex volume pricing rules, ERP-driven pricing sync, multi-tier distributor hierarchies, custom PO workflows
- →Use both: native B2B for the company/contact/payment model, custom Shopify Functions for pricing logic beyond what price lists support
Building something like this on Shopify?
I build exactly what I write about. If you need help implementing this, get in touch — I respond within 24 hours.
Get new Shopify guides by email
Practical, technical articles on Shopify development — no fluff, no sales emails.