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
Trading partner sends EDI
The trading partner sends an X12 or EDIFACT document via SFTP, AS2, or a direct API call into your environment.
NeutronEDI translates
Your service POSTs the raw EDI to /api/v1/read/x12 (or /read/edifact). NeutronEDI returns clean JSON in milliseconds.
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
Shopify produces data
A shipment confirmation, invoice, or PO acknowledgment occurs inside Shopify. Your service picks it up via webhook, polling, or scheduled query.
NeutronEDI generates EDI
POST a JSON payload describing the document to /api/v1/write/x12 (or /write/edifact). NeutronEDI returns standards-compliant EDI.
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.
| Code | Name | Description |
|---|---|---|
| 850 | Purchase Order | Retailer sends purchase order to supplier |
| 856 | Advance Ship Notice | Supplier notifies retailer of shipment details |
| 810 | Invoice | Supplier sends invoice for delivered goods |
| 997 | Functional Acknowledgment | Technical 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.
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
{
"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
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
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
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
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.
Keep exploring
API reference
Endpoints, parameters, JSON schemas
Getting started guide
First API call in 5 minutes
Pricing
Free Developer tier, usage-based after that
Solutions by industry
Retail, logistics, manufacturing, e-commerce
vs Orderful
How NeutronEDI compares
All integrations
See every supported platform
Other integrations
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.