Short answer
In Shopify B2B, the buyer is a company location, not just a customer — each location has its own addresses, catalogs, payment terms, tax settings, and checkout rules. Make the ERP the master for accounts, pricing, terms, and credit, and sync it into Shopify companies and company locations using their externalId fields as the link. Push customer-specific prices as catalogs and price lists, send orders back with the company location, PO number, and payment terms intact, and let the ERP own invoicing and collections. Check which B2B features your Shopify plan includes before designing around them.
- ERP Accounts
- Sync service Map via externalId
- Shopify B2B Companies
- ERP Orders
B2B on Shopify changes the integration in one fundamental way: the buyer is no longer just a customer with an email address, but a company with locations, contracts, credit, and terms — all things the ERP has managed for years. The integration’s job is to project the ERP’s commercial rules into Shopify so buyers can order themselves, and to bring orders back without losing any of that context. As on every page, documented marks statements from Shopify documentation, and recommendation marks our guidance.
The B2B data model in Shopify
Documented: Shopify B2B models buyers as companies with one or more company locations (branches) and company contacts (people who can order). A company location has its own billing and shipping addresses, tax settings, catalogs, and checkout configuration, and it determines the catalogs, pricing, tax exemptions, and checkout settings that apply to its orders. Both companies and company locations have an externalId field.
| ERP concept | Shopify B2B object | Link |
|---|---|---|
| Customer account / parent account | Company | Company.externalId = ERP account number |
| Ship-to / bill-to site | Company location | CompanyLocation.externalId = ERP site or ship-to ID |
| Buyer contacts | Company contacts | Email + role |
| Price agreement / price group | Catalog + price list | Assigned to company locations |
| Payment terms | Payment terms template on the location | Mapped from ERP terms codes |
| Tax exemption | Company location tax settings | Mapped from ERP certificate records |
Recommendation: make the ERP the master for every row in that table, and treat externalId as the primary key of the mapping. Names and addresses change; account numbers don’t.
Plan features: check before you design
Documented (Shopify Help Center, at time of review): Shopify lists B2B on several plans, with differences that matter for integration design — for example, catalog limits on some plans, direct catalog assignment to specific companies and locations on Shopify Plus, and deposit and partial-payment features on Shopify Plus.
Recommendation: confirm your plan’s current B2B features before you design customer-specific pricing. If you can’t assign catalogs to individual companies on your plan, design pricing around a small number of price groups instead of per-customer price lists.
Syncing accounts: ERP → Shopify
Recommendation:
- Create or update companies and locations from the ERP on change (or on a schedule), keyed by
externalId. Never create B2B accounts in Shopify that don’t exist in the ERP unless your process explicitly allows self-registration with approval. - Contacts: sync the people authorized to order for each location, with roles. When someone leaves a customer, removing their access is part of the sync.
- Inactive or on-hold accounts: reflect the ERP status in Shopify — for example by removing catalog access or requiring review — so blocked customers can’t keep ordering online.
- Listen for changes made in Shopify: company, location, and contact webhooks exist (for example
companies/updateandcompany_locations/update). If staff edit accounts in Shopify, decide whether those changes flow back to the ERP or are overwritten by the next sync — and document which.
Pricing: catalogs and price lists
Documented: catalogs control which products and prices apply to the company locations assigned to them, through their price lists.
Recommendation:
- Map each ERP price agreement or price group to one catalog with a price list. Assign company locations to catalogs according to the ERP.
- Push fixed prices for the SKUs in each agreement; for percentage-based agreements, decide whether to compute fixed prices in the integration (predictable) or use percentage adjustments (fewer updates).
- Keep volume breaks and quantity rules consistent with the ERP, so a price shown online is the price that’s invoiced.
- Reprice on ERP changes and run a nightly comparison of a sample of prices per catalog to catch drift.
Payment terms, credit, and review
Documented: Shopify payment terms types include net (due a number of days after issue), fixed (due on a specified date), receipt (due on receipt), and fulfillment (due on fulfillment). Payment terms are assigned to company locations through their buyer experience configuration, which can also send checkouts to draft orders for merchant review.
Recommendation:
- Map ERP terms codes (Net 30, Net 60, due on receipt) to Shopify terms templates per location.
- Keep credit limits and credit holds in the ERP. For accounts near or over their limit, route checkouts to review and have the integration show the ERP’s open balance to whoever approves.
- The ERP issues the invoice and manages collections. Shopify’s payment terms make the order “pay later”; they don’t replace accounts receivable.
Orders: Shopify → ERP
Documented: B2B orders carry the purchasing entity (the company location and contact), payment terms, and an optional PO number.
Recommendation: when creating the ERP sales order:
- Resolve the ERP customer and ship-to from
CompanyLocation.externalId— not from the email or the address text. - Copy the PO number into the ERP’s customer PO field; B2B customers reconcile your invoices against it.
- Carry the payment terms, and verify they match the ERP account’s terms; flag mismatches rather than silently overriding.
- Validate prices against the ERP agreement and route differences to review instead of posting them.
- Use the Shopify order ID as the idempotency key (preventing duplicate orders).
Tax exemptions
Documented: company locations have tax settings, including tax exemptions.
Recommendation: the ERP (or your tax engine) holds exemption certificates with jurisdiction and expiry. Sync the exemption status to the matching company location, remove it when a certificate expires, and reference the certificate on every exempt order in the ERP. See sales tax in ERP integrations.
Blended stores and EDI customers
Recommendation: many merchants run D2C and B2B in one store, and some large B2B customers still order by EDI. Keep one order model in the ERP for all three sources — D2C, B2B self-service, and EDI 850s — so allocation, fulfillment, and invoicing work the same way. See EDI for ecommerce.
Common pitfalls
- Matching B2B customers by email instead of
externalId, creating duplicate accounts. - Prices online that differ from the invoice, because volume breaks weren’t synced.
- Credit holds that don’t reach Shopify, so blocked accounts keep ordering.
- PO numbers lost between Shopify and the ERP invoice.
- Designing per-customer pricing on a plan that doesn’t support direct catalog assignment.
- Edits made in Shopify silently overwritten by the next ERP sync.
Frequently asked questions
Which Shopify plans include B2B?
Shopify's Help Center lists B2B on several plans, with differences in catalog limits and some payment features — for example, at the time of review, direct catalog assignment to specific companies and deposit or partial-payment features were listed for Shopify Plus. Plans and features change, so confirm your plan's current B2B features in the Help Center before designing customer-specific pricing around them.
Should the ERP or Shopify be the master for B2B customers?
Usually the ERP. It already holds account numbers, credit limits, payment terms, tax exemption certificates, and contract pricing. Sync those into Shopify companies and company locations, and store the ERP account number in the externalId field so both systems stay linked even if names change.
How do customer-specific prices get into Shopify?
Through catalogs with price lists assigned to the buyers who should see them. The integration maintains one catalog per price agreement (or per price group) from ERP data and assigns company locations to it. Keep the number of distinct price lists manageable by grouping customers who share pricing in the ERP.
How do net terms work with the ERP?
Shopify supports payment terms types such as net (due a number of days after issue), fixed date, due on receipt, and due on fulfillment. Assign the terms that match the ERP's terms to each company location. The order then reaches the ERP with its payment terms, and the ERP invoices and collects. Keep credit decisions in the ERP.
Can B2B orders be reviewed before they're accepted?
Yes. A company location's buyer experience configuration can send checkouts to draft orders for merchant review. That's useful for credit checks or quotes — the integration can check the ERP's credit status before a staff member approves the order.
Sources and further reading
Platform-specific statements on this page were checked against these sources on . Vendor APIs change; confirm details in the current documentation before you build.
- [1] Start building for B2B on Shopify — Shopify
- [2] Manage client company locations — Shopify
- [3] CompanyLocation (GraphQL Admin API) — Shopify
- [4] Company (GraphQL Admin API) — Shopify
- [5] PaymentTermsType (GraphQL Admin API) — Shopify
- [6] Order (GraphQL Admin API) — Shopify
- [7] B2B plan features — Shopify Help Center
Related reading
- Guides How to Synchronize Shopify Orders with an ERP How to export Shopify orders to an ERP reliably — choosing the trigger, mapping lines, taxes, discounts and payments, handling edits, and avoiding duplicates.
- Guides Sales Tax in Ecommerce ERP Integrations: Nexus, Tax Engines, and Data Flow How US sales tax should flow between Shopify, a tax engine, and your ERP — nexus after Wayfair, marketplace orders, exemptions, refunds, and reconciliation.
- Guides EDI for Ecommerce: Connecting 3PLs and Retail Partners to Your ERP How ecommerce brands use EDI with 3PLs and retailers: the X12 documents that matter (940, 945, 846, 850, 856, 810), AS2 and VANs, SSCC labels, and ERP design.
- Concepts What Is Data Mapping in Integrations? What data mapping means in ecommerce-ERP integrations — field, value, and structural mapping — with examples, common pitfalls, and how to document and test mappings.
- ERP integrations Shopify NetSuite Integration: Architecture, APIs, and Pitfalls How to integrate Shopify with Oracle NetSuite — REST web services, OAuth 2.0, external-ID upserts, concurrency limits, order and inventory flows, and connector options.
- ERP integrations Shopify Business Central Integration: Connector, APIs, and Limits How Shopify integrates with Dynamics 365 Business Central — the built-in Shopify Connector, API v2.0, Entra ID auth, expiring webhooks, and per-user API limits.