← All posts Insights 3 min read

Shopify B2B and NetSuite: Integration Architecture for Wholesale in 2026

Quick Summary Shopify B2B and NetSuite — Integration Architecture for Wholesale in 2026 Shopify B2B (launched 2022, significantly expanded in 2023–2026) provides company accounts, customer-specific price lists, net payment terms, and draft orders — all requiring distinct NetSuite integration handling. Company accounts in Shopify B2B map to NetSuite Customer records with subsidiary, class, and payment…

Quick Summary

Shopify B2B and NetSuite — Integration Architecture for Wholesale in 2026

  • Shopify B2B (launched 2022, significantly expanded in 2023–2026) provides company accounts, customer-specific price lists, net payment terms, and draft orders — all requiring distinct NetSuite integration handling.
  • Company accounts in Shopify B2B map to NetSuite Customer records with subsidiary, class, and payment terms correctly set — not the same as a standard retail Customer record.
  • Customer-specific price lists in Shopify B2B must sync bidirectionally: NetSuite price levels drive the Shopify B2B price list, not the other way.
  • Net 30/60/90 terms in Shopify B2B create Invoice records in NetSuite, not Cash Sales — a fundamental difference from retail order sync.
B2B API
Shopify’s dedicated B2B API — separate from retail, requires distinct integration handling
Price Level
NetSuite’s B2B pricing mechanism — must drive Shopify B2B price lists, not the other way
Invoice
The NetSuite record created for net-terms B2B orders — not the Cash Sale used for retail
Company
Shopify B2B’s account unit — maps to NetSuite Customer with specific class and term fields

Shopify B2B is now a credible wholesale channel, used by brands to run self-service portals for wholesale buyers alongside their retail DTC storefront. Integrating it with NetSuite is more complex than retail Shopify integration because B2B introduces concepts — company accounts, tiered pricing, payment terms, draft orders — that require different NetSuite record types and sync logic. Here is the architecture.

Company Account Sync: Shopify B2B Company → NetSuite Customer

1
Create the NetSuite Customer record on company creation

When a Shopify B2B company is created (or when an existing Shopify customer is upgraded to a company), trigger a NetSuite Customer record creation. Map: Company name → Customer name, Contact person → Contact record (linked), Billing address → Billing address, Payment terms → Terms field (Net 30 → custrecord_terms = “Net 30”).

2
Assign the correct NetSuite price level

NetSuite Customer records have a priceLevel field. Set this based on the Shopify B2B price list assigned to the company. If a company has the “Wholesale” price list in Shopify, the corresponding NetSuite Customer should have priceLevel = “Wholesale”. This ensures that manually created NetSuite orders for the same customer use the correct pricing.

3
Store the Shopify company ID in a custom NetSuite field

Add a custom field custentity_shopify_company_id to the NetSuite Customer record. Store the Shopify Company ID there. This is the primary key for your integration lookup — when a B2B order arrives, use this field to match it to the correct NetSuite Customer without ambiguity.

B2B Order Sync: Draft Orders and Net Terms

Shopify B2B scenario NetSuite record to create Key differences from retail
Immediate payment order (credit card) Sales Order → Invoice → Payment Same as retail — Cash Sale or SO+payment
Net 30/60/90 order Sales Order → Invoice (open) No payment at order time — Invoice left open until paid
Draft order (pending approval) Sales Order in “Pending Approval” status Do not create invoice until Shopify draft is approved
Partial payment order Invoice with Deposit applied Record the deposit against the invoice, leave balance open
Net terms in NetSuiteDo not create Cash Sales for B2B orders with payment terms:

A Cash Sale in NetSuite assumes immediate payment and posts directly to the revenue account. A B2B order with Net 30 terms should be: Sales Order (on Shopify B2B placement) → converted to Invoice on fulfilment → Payment applied when the customer pays. Creating a Cash Sale for a Net 30 order will incorrectly recognise revenue before payment and misrepresent your AR balance.

Sources & Further Reading

References

  1. Shopify B2B Company APIShopify GraphQL Admin API — Company object reference including price lists, contacts, and payment terms.
  2. NetSuite Customer Record ReferenceOracle NetSuite Help — Customer record fields including price level, terms, and subsidiary fields relevant to B2B setup.
  3. Shopify B2B DocumentationShopify Help — company management, price lists, and payment terms in Shopify B2B.
Discussion

Leave a Reply

Your email address will not be published. Required fields are marked *


Ship it

Need this in your stack?

We build, integrate, and ship — no calls, just delivery.

Start a project →