SAP + NeutronEDI
Add EDI translation and validation to your SAP workflows with a simple REST API.
SAP installations rarely speak EDI directly. Most teams put a thin middleware layer in front of SAP — a Python or Node service, an iFlow on Cloud Integration, or a custom ABAP wrapper — that calls NeutronEDI to translate documents and then posts the resulting JSON into SAP via IDoc, BAPI, or OData.
How SAP + NeutronEDI works
Inbound: trading-partner EDI flows into SAP. Outbound: SAP data flows back out as compliant EDI.
Inbound — partner → SAP
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 SAP
The JSON lands in SAP — mapped to native objects, imported via middleware, or consumed directly by your code (SAP (IDoc, BAPI, OData, or Cloud Integration)).
Outbound — SAP → partner
SAP produces data
A shipment confirmation, invoice, or PO acknowledgment occurs inside SAP. 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 SAP
These are the transaction sets you'll see most often in SAP 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 |
| ORDERS | EDIFACT Purchase Order | International purchase order (EDIFACT equivalent of 850) |
| INVOIC | EDIFACT Invoice | International invoice (EDIFACT equivalent of 810) |
| DESADV | EDIFACT Despatch Advice | International shipment notice (EDIFACT equivalent of 856) |
How SAP teams use NeutronEDI
Automate purchase order ingestion from trading partners into SAP
Receive 850s on an SFTP drop, route them through a Python or Node listener, and translate to JSON via the Read API before invoking SALES_ORDER_CREATE_FROM_DAT2 or an OData SalesOrderSet POST.
Generate ASN (856) documents from SAP shipment data
Trigger on a delivery PGI in SAP, build the ASN payload from VBFA / LIPS, and POST to /api/v1/write/x12 with type 856. Drop the resulting X12 onto the partner's SFTP or AS2 endpoint.
Validate inbound EDI before posting to SAP
Call /api/v1/validate/x12 first to surface structural errors against the X12 standard — bad envelope, missing required segments, malformed transaction sets. Only documents that parse cleanly get queued for SAP posting; the rest go to a review queue with a structured error report.
Bridge EDIFACT partners with SAP installations in international operations
European partners on ORDERS / DESADV / INVOIC translate cleanly through /api/v1/read/edifact, returning the same JSON shape your X12 pipeline already understands. One SAP integration handles both standards.
Example integration
A Python middleware service receives a raw X12 850 from a trading partner over SFTP, posts it to the Read API, and hands the JSON to SAP via an OData service for ORDERS_CREATE.
import os
import requests
NEUTRON_API_KEY = os.environ["NEUTRON_API_KEY"]
SAP_ODATA_URL = os.environ["SAP_ODATA_URL"] # /sap/opu/odata/sap/SALES_ORDER_SRV
SAP_AUTH = (os.environ["SAP_USER"], os.environ["SAP_PASS"])
def translate_edi(raw_edi: str) -> dict:
response = requests.post(
"https://api.neutronedi.com/api/v1/read/x12",
headers={
"X-API-Key": NEUTRON_API_KEY,
"Content-Type": "application/edi-x12",
},
data=raw_edi,
timeout=15,
)
response.raise_for_status()
return response.json()
def post_to_sap(po: dict) -> None:
requests.post(
f"{SAP_ODATA_URL}/SalesOrderSet",
json={
"PurchaseOrderByCustomer": po["poNumber"],
"CustomerPurchaseOrderDate": po["date"],
"Items": [
{"Material": item["sku"], "RequestedQuantity": item["qty"]}
for item in po["items"]
],
},
auth=SAP_AUTH,
timeout=20,
).raise_for_status()
def handle_inbound_850(raw_edi: str) -> None:
parsed = translate_edi(raw_edi)
for txn in parsed["transactions"]:
if txn["type"] == "850":
post_to_sap(txn)What the API returns
{
"interchange": { "sender": "WALMART", "receiver": "ACMECORP", "control": "000000123" },
"transactions": [
{
"type": "850",
"name": "Purchase Order",
"poNumber": "4500291837",
"date": "2026-04-12",
"buyerDuns": "0078903456",
"items": [
{ "sku": "WIDGET-BLUE", "qty": 240, "unitPrice": "12.50" },
{ "sku": "WIDGET-RED", "qty": 120, "unitPrice": "12.50" }
],
"total": "4500.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 SAP 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 SAP expects on the receiving side.
Read the docs - 4
Map the JSON response to your SAP data model
Use the language and runtime that already integrates with SAP (SAP (IDoc, BAPI, OData, or Cloud Integration)). Map fields from the NeutronEDI JSON to SAP 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 SAP 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.