Skip to content
SystemSyncer
Menu

Guide · Orders

Shopify B2B and ERP Integration: Companies, Price Lists, and Payment Terms

How to connect Shopify B2B to your ERP — companies and locations, customer-specific catalogs and pricing, net terms, tax exemptions, PO numbers, and credit.

Last reviewed:
Reading time
5 min read
Intermediate

Part 1 of 3: Beyond the D2C store

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.

Data flow Shopify B2B with an ERP as the master
  1. ERP Accounts
  2. Sync service Map via externalId
  3. Shopify B2B Companies
  4. 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:

  1. 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.
  2. 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.
  3. 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.
  4. Listen for changes made in Shopify: company, location, and contact webhooks exist (for example companies/update and company_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. [1] Start building for B2B on Shopify — Shopify
  2. [2] Manage client company locations — Shopify
  3. [3] CompanyLocation (GraphQL Admin API) — Shopify
  4. [4] Company (GraphQL Admin API) — Shopify
  5. [5] PaymentTermsType (GraphQL Admin API) — Shopify
  6. [6] Order (GraphQL Admin API) — Shopify
  7. [7] B2B plan features — Shopify Help Center