ERPMedium setup

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

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 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

1

NetSuite produces data

A shipment confirmation, invoice, or PO acknowledgment occurs inside NetSuite. 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 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.

CodeNameDescription
850Purchase OrderRetailer sends purchase order to supplier
855Purchase Order AcknowledgmentSupplier confirms receipt and acceptance of PO
856Advance Ship NoticeSupplier notifies retailer of shipment details
810InvoiceSupplier sends invoice for delivered goods
997Functional AcknowledgmentTechnical 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.

edi_inbound_po.js (SuiteScript 2.1 RESTlet)
/**
 * @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

Read API response
{
  "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. 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 NetSuite expects on the receiving side.

    Read the docs
  4. 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.

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.