Shopify B2B, on one store.
Company accounts, catalog pricing, NET-30 terms, quote-to-order flows, retail and wholesale sharing the same catalog. Native Shopify Plus B2B engineering for brands selling to businesses.
A B2B buyer is not one account. It is a tree.
Retail commerce models a buyer as one account. B2B models a buyer as a Company with Locations, each with multiple Company Contacts, each with defined permissions, each seeing a Catalog with a Price List applied. Every design decision in a B2B build traces back to that tree. Below is the topology that every Shopify Plus B2B implementation must express.
| Concept | What it is | Example |
|---|---|---|
| Company | The root buyer business. | Northwood Apparel Supply LLC |
| Location | A physical or logical unit under the Company. | Northwood - Seattle Warehouse |
| Company Contact | A human buyer with permissions. | Sarah Chen (Order + Pay) |
| Catalog | The product list assigned to the Company. | Wholesale Apparel Catalog |
| Price List | Pricing rule applied to the Catalog. | 45% off retail, tiered above 100 units |
| Payment Term | NET-X assigned per Company. | NET-30, invoice emailed on checkout |
| Draft Order | Quote-style order a rep builds for the buyer. | Custom-priced pre-order for Q4 |
Every B2B feature buyers ask for (approval chains, credit limits, MOQs, tiered discounts, custom pricing, NET terms) maps to a combination of these seven concepts. A well-designed B2B implementation keeps the mapping tight; a messy one forces fragile apps to paper over gaps.
Many humans. One company. Defined permissions.
A Company is the buyer entity; a Company Contact is a human inside that Company with specific permissions. The four permissions Shopify ships natively match how B2B buyers actually work. Most implementations use three of the four; a careful mapping on Day 1 prevents a rewrite at month three.
Place orders
Browse catalog, add to cart, submit order for fulfillment. Requires Pay permission to complete card payment.
Pay (on terms)
Complete checkout on NET terms (no card). Also applies to card-paid orders where Pay is required.
Manage users
Invite or remove other Company Contacts. Typical for a senior buyer or procurement manager.
Approve orders
Review and approve orders submitted by other Contacts before fulfillment. Used for multi-stage procurement approval.
One Company. Three Contacts. Distinct catalog.
Three pricing strategies. Layered cleanly.
Fixed SKU price
Every SKU gets a B2B price independent of retail. Most flexible, most data to maintain. Used when B2B pricing is fundamentally different from retail.
Example: Retail $120 / B2B $48 per unit.
Percent off retail
A flat or tiered discount against the retail price. Easiest to maintain, updates automatically when retail changes.
Example: 45% off retail across the whole catalog.
Volume tiers
Quantity breaks within a single SKU. Shopify Functions extend this with cart-level rules for multi-SKU thresholds.
Example: 1-9 @ $12 / 10-49 @ $9 / 50+ @ $7.
NET-30. NET-60. NET-90.
Terms sit on the Company. A buyer with terms assigned checks out without a card; an invoice generates with a due date. On the due date your team or your ERP reconciles. The mechanics below are what we configure on every B2B build.
| Step | What happens |
|---|---|
| 01 | Buyer on a NET-30 Company checks out. No card entered. |
| 02 | Shopify creates an unpaid order. Invoice email fires to the buyer. |
| 03 | Order-created webhook pushes the invoice to your accounting system (Xero, NetSuite, QuickBooks). |
| 04 | Fulfillment proceeds immediately or on a Hold rule per Company. |
| 05 | Due date approaches. Reminder email fires at day 25 if unpaid. |
| 06 | Payment received via ACH, wire, or check. Reconciled in accounting, marked paid in Shopify via webhook. |
| 07 | Credit limit decrements on order creation, increments on payment. New orders over limit route for manual approval. |
Sales rep builds. Buyer approves. Order ships.
Most large B2B orders are built collaboratively. A rep negotiates custom pricing, adds a volume concession, tweaks freight. The engine for this in Shopify is the Draft Order. We extend it with a named quote lifecycle and webhook automation.
Rep creates Draft Order
Rep adds SKUs, applies custom pricing lines, negotiates freight, adds notes. Draft saved against the Company.
Quote link to buyer
Draft Order converted to a quote link with expiry, sent via email. Buyer opens in authenticated session.
Buyer reviews and accepts
Buyer sees the quote, accepts, and converts it to an order. Payment method applied per Company terms.
Order to warehouse
Order flows into standard fulfillment pipeline. ERP sync fires, inventory decrements, shipment triggers per your fulfillment rules.
One store. Two customer types.
Running retail and wholesale on separate Shopify stores is a maintenance burden: duplicate catalog, split inventory, sync drift. Plus B2B lets both types share one catalog with a single inventory pool, while each sees a customized experience.
| Surface | Retail sees | Wholesale (logged-in) sees |
|---|---|---|
| Navigation | Retail nav (Shop, About) | B2B nav (Wholesale, MOQ, Reorder) |
| PDP | Retail price, retail copy | Wholesale price, MOQ, case quantity |
| Cart | Card checkout | NET-terms checkout, bulk add-to-cart |
| Account | Order history, saved addresses | Reorder from history, approval queue, team |
| Inventory | Shared pool, retail decrements | Shared pool, wholesale decrements |
ERP. CRM. Tax. EDI where needed.
NetSuite / Brightpearl
Order sync bi-directional, inventory pool, customer master records.
SPS Commerce / Orderful
X12, EDIFACT translation for retail partners (Walmart, Target, Costco).
Resolve / Credit Key
Third-party NET-terms financing so you get paid on day 1 while buyer pays NET-60.
ShipStation / ShipHero
LTL freight quoting, pallet configuration, multi-warehouse routing.
What the sales team sees, every Monday.
- Top 10 Companies by 30-day revenue with MoM and YoY delta.
- Open invoices aging report segmented by NET-30, NET-60, NET-90 overdue.
- Catalog utilization: which SKUs are ordered, which are dormant, per Company.
- Reorder velocity: days between orders per Company, flagged below historical average.
- Credit exposure: open orders vs credit limit, Companies approaching limit.
- Rep leaderboard: Draft Orders created, Draft Orders converted, conversion rate, revenue.
All six reports ship as a Looker Studio dashboard pulling from Shopify's BigQuery export, or as a Mondayphysical email if the org is not on Google Cloud.
From Handshake. From TradeGecko. Into native B2B.
| Source | Typical duration | Complexity driver |
|---|---|---|
| Handshake (Shopify's old B2B) | 10-12 wk | Well-mapped; official Shopify migration path. |
| TradeGecko / QuickBooks Commerce | 12-14 wk | Data export + catalog remapping + pricing recompute. |
| Brightpearl (keeping ERP) | 14-16 wk | B2B layer migrates; Brightpearl stays as ERP. |
| Bespoke portal (custom database) | 16-20 wk | Schema translation + custom script per table. |
| B2B app on non-Plus Shopify (BSS, Sparklayer) | 8-10 wk | Already on Shopify; upgrading to Plus and native B2B. |
A wholesale brand. 84 buyer companies. One store.
A Big Game Sports-archetype athletic brand with a growing wholesale channel came to us on Shopify Advanced with a BSS Commerce B2B app glued onto the retail storefront. The ask: migrate to Plus B2B, unify retail and wholesale on one store, ship NET-30 terms for 84 buyer companies, and integrate with the existing NetSuite ERP.
What shipped: 84 Companies with 217 Contacts, 3 Catalogs (Tier 1, Tier 2, Dropship), NET-30 default plus 8 Companies on NET-60, NetSuite sync via middleware (orders both directions, inventory back), Salesforce CRM for rep pipeline, Avalara for multi-state tax, quote-to-order flow with 12-day average quote-to-close. Zero retail checkout regressions during the wholesale build.
Who native B2B fits, and who it does not.
- Already on Shopify Plus or ready to upgrade for the B2B scope.
- Between 10 and 500 active buyer companies, mixed NET terms.
- Multi-buyer-per-company workflow with permission differences.
- $1M to $50M wholesale revenue per year with growth horizon.
- Existing ERP (NetSuite, Brightpearl, Dynamics) that must integrate cleanly.
- Under 10 wholesale accounts. A B2B app on Advanced is cheaper than Plus.
- Over 5,000 active accounts with deep EDI. Consider an enterprise B2B platform.
- Bespoke approval chains with 4+ approval stages. Possible but out of B2B native scope; budget extra.
- Consignment inventory model as the majority of volume.
Four shapes.
Discovery audit
Buyer journey, catalog segmentation, integration map, migration exposure.
B2B-only build
Dedicated Plus B2B storefront. Companies, catalogs, terms, quote flow.
Retail + wholesale
Unified store serving both. Shared catalog, distinct checkouts.
Migration
Handshake, TradeGecko, Brightpearl, or bespoke portal to native B2B.
B2B tax is not retail tax.
Resale certificates, exemption by state, VAT reverse-charge for cross-border EU B2B, 1099 reporting for certain buyer types. We configure the native Shopify Tax + Avalara bridge so your accounting team receives clean data, every transaction.
US resale certificates: managed in Avalara CertCapture, per Company, per state. Automatic exemption applied at checkout when valid certificate on file.
EU VAT reverse-charge: B2B cross-border triggers reverse-charge. Buyer's VAT ID validated against VIES, applied to checkout, disclosed on invoice.
UK post-Brexit: distinct VAT treatment for EU imports, customs declarations, commodity codes on invoice line items.
Audit trail: every tax decision logged per order for 7-year retention. Pulled into Xero or NetSuite automatically for annual filing.
Seven questions B2B teams ask.
What does native Shopify B2B actually cover?
Shopify's native B2B (on Plus) covers the full buyer stack: company accounts with multiple contacts per company, per-company catalogs, per-catalog price lists (fixed, percent off, tiered), customer-specific payment terms (NET-30/60/90), draft orders for quote flows, MOQ and volume-tier rules via Functions, and a separate checkout that does not require credit card payment when terms are assigned. What it does not natively cover: EDI, deep ERP integration, multi-party approval chains, and consignment inventory. Those still need app integrations or bespoke engineering.
Can we run retail and wholesale on the same Shopify store?
Yes. One Shopify Plus store serves both. Retail customers browse the standard storefront, add to cart, and check out with a card. B2B buyers log in to a Company Contact account, see their assigned catalog with their price list applied, add to cart, and check out either on terms or via card. Same products, same inventory, same Shopify admin. The configuration work is in the catalog segmentation and theme customization to show different navigation and copy to B2B-logged-in users.
How does catalog pricing work for B2B buyers?
A Catalog defines what products a Company sees. A Price List applied to that Catalog defines the pricing shown. Three pricing strategies exist: fixed prices per SKU (most common), percent off retail (simpler to maintain), and volume tiers (buy 10-49 at $X, buy 50+ at $Y). Multiple catalogs can exist for a single store; a Company can be assigned exactly one catalog. Shopify Functions extend this with rules like 'apply additional 5% off when cart total exceeds $5,000' or 'unlock a bundled SKU when 3+ units in cart.'
How do NET-30 payment terms work at checkout?
A Company with assigned payment terms checks out without entering a card. Shopify creates an unpaid order with a named due date. An invoice is generated automatically and can be emailed or pushed to your accounting system via webhook. On the due date, your team or your ERP marks the invoice paid against the received payment. Shopify supports NET-30, NET-60, NET-90, and custom term lengths. For buyers without terms assigned, a card is still required.
Can we migrate from Handshake (Shopify's old B2B product) to the new native B2B?
Yes. Shopify sunset Handshake and the migration path to native B2B on Plus is well-defined. Buyer companies, contacts, addresses, catalogs, and price lists migrate. Order history imports as historical reference. Subscriptions if any require a secondary migration path (typically ReCharge or Shopify Subscriptions). Credit balances carry forward via metafields until reconciled. Full Handshake-to-Plus-B2B migrations take 12 to 16 weeks in our builds, with a staged cutover so buyers keep placing orders while the new surface comes online.
Does Shopify B2B integrate with our ERP or accounting software?
Out of the box, yes, for the major ERPs: NetSuite, Brightpearl, Dynamics 365, SAP Business One, and Xero. Orders sync to the ERP via webhook or a Shopify Connector app; inventory syncs back; customer and catalog data can live in either system as the source of truth. For bespoke or legacy ERPs we build a middleware integration using the Shopify Admin API and your ERP's REST or SOAP endpoints. EDI (X12, EDIFACT) is handled by third-party bridges such as SPS Commerce or Orderful.
How is this different from installing a B2B app like BSS Commerce or Sparklayer?
Apps like BSS Commerce B2B, Sparklayer, or Wholesale Club pre-date Shopify's native B2B and layer a B2B experience on top of a standard Shopify store. They are useful on non-Plus stores where native B2B is unavailable, or where you need features Shopify has not yet shipped natively. On Plus, native B2B is usually the right answer because it is supported, versioned, PCI-scoped by Shopify, and will keep getting features. Apps remain relevant for specific gaps: multi-party approval chains, EDI bridges, deep consignment inventory. The audit names which path fits your scope.
A two-week audit. A scoped B2B plan.
Every B2B build starts with two weeks of inventory: companies, catalogs, payment terms, integrations. The audit produces a written plan plus a scoped quote.
Book my 30-minute B2B audit call