E-CommerceLow setup

Shopify + NeutronEDI

Add EDI translation and validation to your Shopify workflows with a simple REST API.

Shopify stores hit the EDI requirement the moment a major retailer asks them to drop-ship or fulfill on their behalf. NeutronEDI sits between your EDI middleware and Shopify: incoming 850s become Shopify orders via the Admin API, and Shopify fulfillment events become outbound 856 ASNs and 810 invoices.

How Shopify + NeutronEDI works

Inbound: trading-partner EDI flows into Shopify. Outbound: Shopify data flows back out as compliant EDI.

Inbound — partner → Shopify

1

Trading partner sends EDI

The trading partner sends an X12 or EDIFACT document via SFTP, AS2, or a direct API call into your environment.

2

NeutronEDI translates

Your service POSTs the raw EDI to /api/v1/read/x12 (or /read/edifact). NeutronEDI returns clean JSON in milliseconds.

3

JSON flows into Shopify

The JSON lands in Shopify — mapped to native objects, imported via middleware, or consumed directly by your code (Shopify (Admin REST API, GraphQL Admin API, Apps)).

Outbound — Shopify → partner

1

Shopify produces data

A shipment confirmation, invoice, or PO acknowledgment occurs inside Shopify. Your service picks it up via webhook, polling, or scheduled query.

2

NeutronEDI generates EDI

POST a JSON payload describing the document to /api/v1/write/x12 (or /write/edifact). NeutronEDI returns standards-compliant EDI.

3

Send to partner

Drop the resulting EDI document onto the partner's SFTP, AS2, or VAN — the same channel that delivered the inbound document.

Common EDI transactions for Shopify

These are the transaction sets you'll see most often in Shopify integrations. The Read API parses every set NeutronEDI supports — this is just where teams typically start.

CodeNameDescription
850Purchase OrderRetailer sends purchase order to supplier
856Advance Ship NoticeSupplier notifies retailer of shipment details
810InvoiceSupplier sends invoice for delivered goods
997Functional AcknowledgmentTechnical receipt confirmation for any EDI document

How Shopify teams use NeutronEDI

Receive and process retailer purchase orders as Shopify orders

An EDI middleware drop turns into a Shopify draft order or order via the Admin API. Map SKUs once and the same flow handles every trading partner that sends 850s.

Generate compliant ASN (856) documents from Shopify fulfillments

Subscribe to the fulfillments/create webhook, pull the shipment payload, and POST it to /api/v1/write/x12 with type 856. Send the resulting X12 back through the same SFTP / AS2 channel the 850 came in on.

Automate invoice generation when Shopify orders ship

Trigger on orders/fulfilled, build the 810 JSON from the order line items, and POST to the Write API. Walmart, Target, and similar retailers expect the 810 within hours of the ASN.

Pre-flight outbound EDI against the X12 spec to catch malformed documents before sending

Run every outbound document through /api/v1/validate/x12 before transmission. The Validate endpoint checks the document against the standard X12 spec — envelope structure, required segments, transaction-set composition — so structurally broken documents never reach the partner. (Partner-specific implementation guides are out of scope for the Validate API today; that work is handled by the Neutron Development services team.)

Example integration

A Node.js webhook handler receives an inbound 850 from your EDI middleware, calls the NeutronEDI Read API, and creates a Shopify draft order through the Admin REST API.

shopify_inbound_po.js
import express from "express";

const app = express();
app.use(express.text({ type: "application/edi-x12" }));

const NEUTRON_KEY = process.env.NEUTRON_API_KEY;
const SHOP = process.env.SHOPIFY_STORE;          // e.g. acme-co.myshopify.com
const SHOPIFY_TOKEN = process.env.SHOPIFY_TOKEN; // Admin API access token

async function translate(rawEdi) {
  const res = await fetch("https://api.neutronedi.com/api/v1/read/x12", {
    method: "POST",
    headers: {
      "X-API-Key": NEUTRON_KEY,
      "Content-Type": "application/edi-x12",
    },
    body: rawEdi,
  });
  if (!res.ok) throw new Error(`Read API ${res.status}: ${await res.text()}`);
  return res.json();
}

async function createShopifyDraftOrder(po) {
  const res = await fetch(
    `https://${SHOP}/admin/api/2025-01/draft_orders.json`,
    {
      method: "POST",
      headers: {
        "X-Shopify-Access-Token": SHOPIFY_TOKEN,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        draft_order: {
          note: `EDI 850 ${po.poNumber}`,
          tags: "edi,inbound-850",
          line_items: po.items.map((item) => ({
            sku: item.sku,
            quantity: item.qty,
            price: item.unitPrice,
          })),
        },
      }),
    },
  );
  if (!res.ok) throw new Error(`Shopify ${res.status}`);
}

app.post("/edi/inbound", async (req, res) => {
  const parsed = await translate(req.body);
  for (const txn of parsed.transactions) {
    if (txn.type === "850") await createShopifyDraftOrder(txn);
  }
  res.sendStatus(202);
});

app.listen(3000);

What the API returns

Read API response
{
  "interchange": { "sender": "BIGRETAILER", "receiver": "ACMESHOP", "control": "000000789" },
  "transactions": [
    {
      "type": "850",
      "name": "Purchase Order",
      "poNumber": "BR-58291",
      "date": "2026-04-18",
      "shipTo": { "name": "BigRetailer DC #4", "city": "Reno", "state": "NV", "zip": "89506" },
      "items": [
        { "sku": "TEE-NAVY-M", "qty": 36, "unitPrice": "9.25" },
        { "sku": "TEE-NAVY-L", "qty": 24, "unitPrice": "9.25" }
      ],
      "total": "555.00"
    }
  ]
}

All code examples assume an API key issued from the Customer Portal. The free Developer tier includes 500 calls per month.

Getting started with Shopify EDI

  1. 1

    Sign up for a free NeutronEDI Developer account

    Create an account in the NeutronEDI Customer Portal. The Developer tier includes 500 API calls per month at no cost.

    Open the portal
  2. 2

    Create an API key in the Customer Portal

    Generate an API key from the dashboard. The plaintext key is shown once at creation; copy it into your secret store.

    Read the docs
  3. 3

    Send your first EDI document to the Read endpoint

    POST a sample X12 or EDIFACT document to https://api.neutronedi.com/api/v1/read/x12 with the X-API-Key header. Confirm the JSON response shape matches what Shopify expects on the receiving side.

    Read the docs
  4. 4

    Map the JSON response to your Shopify data model

    Use the language and runtime that already integrates with Shopify (Shopify (Admin REST API, GraphQL Admin API, Apps)). Map fields from the NeutronEDI JSON to Shopify entities and persist them through the platform's standard create / update API.

Start Your Shopify EDI Integration

500 API calls per month on the Developer plan. No credit card. No sales call. Read, write, and validate X12 and EDIFACT in minutes.