NetSuite + NeutronEDI
Add EDI translation and validation to your NetSuite workflows with a simple REST API.
NetSuite is a natural fit for the NeutronEDI API because everything in NetSuite is reachable from SuiteScript. A 2.1 RESTlet or User Event script can call the Read endpoint, take the JSON response, and create Sales Orders, Item Fulfillments, or Vendor Bills using the standard N/record module.
How NetSuite + NeutronEDI works
Inbound: trading-partner EDI flows into NetSuite. Outbound: NetSuite data flows back out as compliant EDI.
Inbound — partner → NetSuite
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 NetSuite
The JSON lands in NetSuite — mapped to native objects, imported via middleware, or consumed directly by your code (NetSuite (SuiteScript 2.1, RESTlets, SuiteCloud)).
Outbound — NetSuite → partner
NetSuite produces data
A shipment confirmation, invoice, or PO acknowledgment occurs inside NetSuite. 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 NetSuite
These are the transaction sets you'll see most often in NetSuite 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 |
| 855 | Purchase Order Acknowledgment | Supplier confirms receipt and acceptance of PO |
| 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 NetSuite teams use NeutronEDI
Parse incoming 850 purchase orders into NetSuite sales orders
A SuiteScript RESTlet receives raw X12 from your EDI VAN or middleware, calls the Read API, and creates Sales Orders via N/record. Customer and item lookups stay inside NetSuite where you already maintain them.
Generate 810 invoices from NetSuite billing records
A scheduled Map/Reduce script picks up Invoice records flagged for EDI, builds the JSON payload using N/search, and POSTs to /api/v1/write/x12 with type 810. The resulting X12 goes back out via your EDI delivery channel.
Validate trading partner EDI before importing to avoid data errors
Hit /api/v1/validate/x12 from a User Event script before creating records. Validation errors surface as a structured response you can log to a custom record for the EDI Operations team to review.
Build custom SuiteScript integrations with NeutronEDI REST API
All endpoints are plain HTTPS calls — N/https handles them with no extra plugins, no NetSuite SuiteApp install, and no per-partner connector fees.
Example integration
A SuiteScript 2.1 RESTlet receives a raw X12 850 over HTTPS, calls the NeutronEDI Read API, and creates a NetSuite Sales Order from the JSON.
/**
* @NApiVersion 2.1
* @NScriptType Restlet
*/
define(["N/https", "N/record", "N/runtime"], (https, record, runtime) => {
const NEUTRON_KEY = runtime.getCurrentScript().getParameter({
name: "custscript_neutron_api_key",
});
function translate(rawEdi) {
const res = https.post({
url: "https://api.neutronedi.com/api/v1/read/x12",
headers: {
"X-API-Key": NEUTRON_KEY,
"Content-Type": "application/edi-x12",
},
body: rawEdi,
});
if (res.code !== 200) throw new Error("Read API failed: " + res.body);
return JSON.parse(res.body);
}
function createSalesOrder(po) {
const so = record.create({ type: record.Type.SALES_ORDER });
so.setValue({ fieldId: "entity", value: lookupCustomer(po.buyerDuns) });
so.setValue({ fieldId: "otherrefnum", value: po.poNumber });
so.setValue({ fieldId: "trandate", value: new Date(po.date) });
po.items.forEach((line, i) => {
so.selectNewLine({ sublistId: "item" });
so.setCurrentSublistValue({ sublistId: "item", fieldId: "item", value: lookupItem(line.sku) });
so.setCurrentSublistValue({ sublistId: "item", fieldId: "quantity", value: line.qty });
so.setCurrentSublistValue({ sublistId: "item", fieldId: "rate", value: line.unitPrice });
so.commitLine({ sublistId: "item" });
});
return so.save();
}
return {
post: (body) => {
const parsed = translate(body.rawEdi);
const ids = parsed.transactions
.filter((t) => t.type === "850")
.map(createSalesOrder);
return { created: ids };
},
};
});What the API returns
{
"interchange": { "sender": "TARGET", "receiver": "ACMECORP", "control": "000000456" },
"transactions": [
{
"type": "850",
"name": "Purchase Order",
"poNumber": "TGT-PO-99214",
"date": "2026-04-15",
"buyerDuns": "0061234567",
"items": [
{ "sku": "ACME-1001", "qty": 60, "unitPrice": "8.99" },
{ "sku": "ACME-1042", "qty": 24, "unitPrice": "14.50" }
],
"total": "887.40"
}
]
}All code examples assume an API key issued from the Customer Portal. The free Developer tier includes 500 calls per month.
Getting started with NetSuite 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 NetSuite expects on the receiving side.
Read the docs - 4
Map the JSON response to your NetSuite data model
Use the language and runtime that already integrates with NetSuite (NetSuite (SuiteScript 2.1, RESTlets, SuiteCloud)). Map fields from the NeutronEDI JSON to NetSuite 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 NetSuite 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.