Skip to content
SyncMyShop

BigCommerce and EDI

BigCommerce EDI integration

BigCommerce has no X12 or EDIFACT in it. A retailer's 850 becomes a BigCommerce order through the V2 Orders API in one request, the PO number goes to B2B Edition or to the external order ID, and the 855, 856, 810 and 846 are built from orders, shipments, invoices and inventory per location. We build that layer per trading partner, host it and run it.

What BigCommerce does natively

BigCommerce has no X12 or EDIFACT translator. Its developer documentation index lists 3,991 pages, none on EDI, X12 or EDIFACT, checked on 3 October 2026. What BigCommerce ships is the store side, split over two APIs when B2B Edition is on.

EDI need BigCommerce Detail
An order from outside the checkout POST /v2/orders All lines in one request; no order email
The retailer's PO number external_order_id on the order, or poNumber in B2B Edition B2B Edition is a separate API
A shipment with tracking POST /v2/orders/{id}/shipments Per order address; triggers shipment emails
An invoice with its own number B2B Edition invoices, invoiceNumber Not in core BigCommerce
Stock for the 846 Inventory per location, available_to_sell 4 locations on Standard, 5 on Plus, 8 on Pro, 100 on Enterprise

A supplier that trades with a US retailer still needs the 850, 855, 856 and 810 in X12, with the retailer's version, qualifiers and pack hierarchy. That part runs outside BigCommerce. This page is the BigCommerce side of our EDI integration; the platform itself is covered under BigCommerce integrations.

How an 850 becomes a BigCommerce order

The diagram follows PO 4500018236, the example used on our document pages.

One X12 purchase order through BigCommerce and B2B Edition The retailer sends 850 PO 4500018236 and gets a 997. The integration creates order 2187 with the V2 Orders API, then writes the PO number to the B2B Edition order record and sends the 855. After packing it creates a shipment with the tracking number and sends the 856, then creates a B2B Edition invoice and sends the 810. The two APIs have separate rate limits. Retailer X12 004010 Integration queue and maps BigCommerce V2 Orders API B2B Edition REST API 850 4500018236 997 AK9 A POST /v2/orders 201, order 2187 PUT io/orders/2187 poNumber 855: 24 and 12 picked and packed POST .../shipments 856 with tracking POST io/ip/orders/.../invoices 810 for 415.40 Core API: 150 requests per 30 seconds on Standard and Plus, shared by every app on the store. B2B Edition API: 150 requests per minute.
One purchase order across two BigCommerce APIs, each with its own rate limit.

The order request, after the lookups:

{
  "customer_id": 318,
  "status_id": 11,
  "external_source": "EDI",
  "external_order_id": "4500018236",
  "staff_notes": "Harbor Retail DC 07, ship-to 0007",
  "billing_address": { "company": "HARBOR RETAIL", "street_1": "...", "country_iso2": "US" },
  "shipping_addresses": [ { "company": "HARBOR RETAIL DC 07", "street_1": "1200 DOCK STREET",
    "city": "COLUMBUS", "state": "Ohio", "zip": "43215", "country_iso2": "US" } ],
  "products": [
    { "product_id": 482, "quantity": 24, "price_ex_tax": 12.50, "price_inc_tax": 12.50 },
    { "product_id": 499, "quantity": 12, "price_ex_tax": 8.75, "price_inc_tax": 8.75 }
  ]
}

Four values in it are decisions.

Field What BigCommerce does What the mapping has to do
status_id Defaults to 1, Pending Set 11, Awaiting Fulfillment, so the order enters the pick flow
products[].product_id A line without product_id and with a name is a custom product, outside the catalog Never send an unmatched line by name: it creates an order line with no stock behind it
price_ex_tax, price_inc_tax Without them, prices come from price lists and customer group discounts Send both or neither; compare with PO104 before the 855
external_order_id Holds the order ID from another system Holds the retailer's PO, the key for duplicates and for the 856 and 810

Line 2 carries 12 of the 16 ordered units of item 10499, because 12 were available, and the 855 confirms 24 and 12. 24 times 12.50 is 300.00 and 12 times 8.75 is 105.00, so the order subtotal is 405.00. The 810 adds freight of 18.50 and a 2% trade discount of 8.10, which makes 415.40.

The technical reality of this pair

A shared quota. The core API allows 150 requests per 30 seconds on Standard and Plus and 450 on Pro, and every app installed on the store draws from the same quota. A 429 carries X-Rate-Limit-Time-Reset-Ms with the wait in milliseconds. One EDI order takes 1 request to create, 1 to read its order products for the shipment, 1 shipment and, with B2B Edition, 2 more for the PO number and the invoice. On a Standard store a morning file of 120 purchase orders is 120 creates. When the store's other apps use half the quota, 75 requests remain per window: 75 orders go in the first 30 seconds and the other 45 in the second window. The integration reads the remaining-quota headers and paces itself, so the store's other apps keep working.

B2B Edition has its own limit. Its REST API allows 150 requests per minute and is a separate service at api-b2b.bigcommerce.com. A B2B order record is created automatically for every BigCommerce order; to set poNumber at creation, the B2B order has to be posted within 10 seconds of the BigCommerce order, otherwise it is updated afterwards with a PUT.

Webhooks are hints. BigCommerce webhooks carry a light payload, retry 11 times from 60 seconds to 24 hours and are deactivated after 48 hours of failures. The integration reads orders by min_date_modified as a backstop, so a cancelled order still reaches the retailer as a change.

Stock for the 846. Inventory is kept per location and available_to_sell is the location quantity minus its safety stock. An inventory adjustment holds up to 2,000 items per request and has to run sequentially, never in parallel with bulk catalog or order work. Which locations count for which retailer is set per partner; see which stock counts.

What BigCommerce and X12 store differently

  • Item identity. The 850 sends a UPC in PO107. A catalog line on a BigCommerce order needs product_id and, for a product with variants, variant_id or its options. The integration keeps the lookup from UPC or case GTIN to product and variant.
  • Units. An order line has a quantity and no unit of measure. 2 CA with 12 per case is 24 units, and the 855, 856 and 810 convert back to 2 cases. See units of measure.
  • Addresses. BigCommerce shows state as a name, Ohio, and offers country_iso2. N4 carries the two-letter state code, OH, and the integration converts in both directions. The distribution center code 0007 has no field and is kept with the order for the 856.
  • Shipments. A shipment holds a tracking number, a provider, the order address and the order products with quantities. Cartons, their contents and an SSCC per carton for the HL loop of the 856 come from packing.

When it goes wrong

What happens What the integration does
A UPC in the 850 has no product The order is held with the PO1 line shown; it is never sent as a custom product
The same PO arrives twice external_order_id exists for this customer: held, no second order
BigCommerce returns 429 The request waits for the time in X-Rate-Limit-Time-Reset-Ms and is sent again
The B2B Edition call fails after the order exists The order is kept, and the PO number is written by PUT on the next attempt
The partner rejects an 856 with a 997 AK3 and AK4 are shown with segment and element; the corrected notice goes out under a new control number

Every document has a status in the dashboard, with the raw file and the BigCommerce order it became or came from.

We build the integration to your BigCommerce store and your trading partners, host it and run it, for a fixed build price and a monthly fee. A new partner starts as a dry run that creates no orders and sends nothing, and you approve the first documents. The same model on other platforms is under Shopify EDI integration and Magento EDI integration; with an ERP behind the store, see BigCommerce NetSuite integration. Tell us which retailer asked you for EDI.

Frequently asked questions

Does BigCommerce have native EDI?

No. BigCommerce's developer documentation, an index of 3,991 pages, has no page on EDI, X12 or EDIFACT. It has what an EDI flow writes to and reads from: orders created from outside the checkout, an external order ID, shipments with tracking, inventory per location, and in B2B Edition a PO number field and invoices. The translation, the envelope and the acknowledgments run outside BigCommerce.

Do I need B2B Edition for EDI?

No. Without it, the retailer's PO number goes into external_order_id on the order and the invoice number for the 810 comes from your accounting system or the integration. B2B Edition adds a poNumber on its order record, company accounts and invoices with their own number, which the 810 can use.

Will the retailer get BigCommerce order emails?

Not for the order: BigCommerce documents that the V2 Orders API does not trigger the order email. Creating a shipment does trigger shipment notifications, so the integration switches those off for the retailer's customer account or leaves its email out, and the retailer gets the 856 instead.

Can EDI orders use the retailer's price list?

Yes. When the order request gives no price, BigCommerce prices each line from the catalog with price lists and customer group discounts applied. The integration compares that price with PO104 on the 850. When it writes the price from the 850, it sends both price_ex_tax and price_inc_tax, because BigCommerce documents that overriding only one leaves the totals wrong.

Which stock figure goes into the 846?

BigCommerce keeps inventory per location, and available_to_sell is the quantity at that location minus its safety stock. An 846 reports one location, or the sum of the locations that ship to that retailer, as you set per partner. The Inventory API is not channel aware, so a separate figure per channel is the integration's work.

Tell us what you need

Tell us which systems you use and what needs to work better. We reply personally within one working day. We help you define the work, then agree the price and timing before you commit.

  • You know the price and the timeline before you commit to anything
  • We work out the connection that takes the work off your hands
  • We handle the build, hosting, monitoring and maintenance
  • Your team has less information to retype and fewer discrepancies to chase

Suppliers, products, orders per day, a rough estimate is fine.

Or email directly: carsten@syncmyshop.com