QuickBooks + NeutronEDI
Add EDI translation and validation to your QuickBooks workflows with a simple REST API.
QuickBooks (Online or Desktop) is the most common accounting system that gets pulled into EDI workflows when a small supplier lands a major retail account. NeutronEDI lets a Python or Node middleware turn 850s into QuickBooks Sales Receipts and turn QuickBooks invoices back into 810s — without buying a heavyweight EDI VAN.
How QuickBooks + NeutronEDI works
Inbound: trading-partner EDI flows into QuickBooks. Outbound: QuickBooks data flows back out as compliant EDI.
Inbound — partner → QuickBooks
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 QuickBooks
The JSON lands in QuickBooks — mapped to native objects, imported via middleware, or consumed directly by your code (QuickBooks Online (REST API) or Desktop (web connector)).
Outbound — QuickBooks → partner
QuickBooks produces data
A shipment confirmation, invoice, or PO acknowledgment occurs inside QuickBooks. 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 QuickBooks
These are the transaction sets you'll see most often in QuickBooks 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 |
| 810 | Invoice | Supplier sends invoice for delivered goods |
| 997 | Functional Acknowledgment | Technical receipt confirmation for any EDI document |
How QuickBooks teams use NeutronEDI
Convert incoming 850 purchase orders to QuickBooks sales receipts
A scheduled job picks up 850s from your inbox or SFTP drop, calls /api/v1/read/x12, and uses the QuickBooks REST API (or QBXML for Desktop) to create matching Sales Receipts or Estimates.
Generate 810 invoices from QuickBooks invoice records
Tag invoices with a custom EdiPending field, run a daily export against /api/v1/write/x12, and ship the X12 through whichever channel each partner uses (SFTP, AS2, or VAN).
Bridge the gap between QuickBooks and enterprise trading partners
Big-box retailers that demand EDI typically don't care which back-office system you run — they care that the documents are valid X12. NeutronEDI makes that possible without leaving QuickBooks.
Example integration
A Python service exports new QuickBooks invoices, calls the NeutronEDI Write API to generate an X12 810, and drops the result on the partner's SFTP server.
import os
import requests
from intuitlib.client import AuthClient
from quickbooks import QuickBooks
from quickbooks.objects.invoice import Invoice
NEUTRON_API_KEY = os.environ["NEUTRON_API_KEY"]
def fetch_pending_invoices(qb: QuickBooks) -> list[Invoice]:
return Invoice.where("CustomField.EdiPending = true", qb=qb)
def to_810_payload(inv: Invoice) -> dict:
return {
"type": "810",
"invoiceNumber": inv.DocNumber,
"invoiceDate": inv.TxnDate,
"purchaseOrderNumber": inv.PONumber or "",
"buyerId": inv.CustomerRef.value,
"items": [
{
"sku": line.SalesItemLineDetail.ItemRef.name,
"qty": int(line.SalesItemLineDetail.Qty or 0),
"unitPrice": str(line.SalesItemLineDetail.UnitPrice or 0),
"amount": str(line.Amount),
}
for line in inv.Line
if getattr(line, "SalesItemLineDetail", None)
],
"total": str(inv.TotalAmt),
}
def generate_x12(payload: dict) -> str:
res = requests.post(
"https://api.neutronedi.com/api/v1/write/x12",
headers={
"X-API-Key": NEUTRON_API_KEY,
"Content-Type": "application/json",
},
json={
"interchange": {"sender": "ACMECORP", "receiver": "BIGRETAILER"},
"transactions": [payload],
},
timeout=15,
)
res.raise_for_status()
return res.text
def push_to_sftp(invoice_number: str, raw_x12: str) -> None:
# Implementation specific to your SFTP library — paramiko, pysftp, etc.
...
def run(qb: QuickBooks) -> None:
for inv in fetch_pending_invoices(qb):
x12 = generate_x12(to_810_payload(inv))
push_to_sftp(inv.DocNumber, x12)What the API returns
ISA*00* *00* *ZZ*ACMECORP *ZZ*BIGRETAILER *260418*1342*U*00401*000000789*0*P*>~
GS*IN*ACMECORP*BIGRETAILER*20260418*1342*1*X*004010~
ST*810*0001~
BIG*20260418*INV-10342****00~
N1*BY**92*BR-9988~
IT1*1*36*EA*9.25**VC*TEE-NAVY-M~
IT1*2*24*EA*9.25**VC*TEE-NAVY-L~
TDS*55500~
CTT*2~
SE*7*0001~
GE*1*1~
IEA*1*000000789~All code examples assume an API key issued from the Customer Portal. The free Developer tier includes 500 calls per month.
Getting started with QuickBooks 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 QuickBooks expects on the receiving side.
Read the docs - 4
Map the JSON response to your QuickBooks data model
Use the language and runtime that already integrates with QuickBooks (QuickBooks Online (REST API) or Desktop (web connector)). Map fields from the NeutronEDI JSON to QuickBooks entities and persist them through the platform's standard create / update API.
Keep exploring
Start Your QuickBooks 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.