AccountingLow setup

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

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

1

QuickBooks produces data

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

CodeNameDescription
850Purchase OrderRetailer sends purchase order to supplier
810InvoiceSupplier sends invoice for delivered goods
997Functional AcknowledgmentTechnical 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.

qb_outbound_invoice.py
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

Write API response (raw X12 810)
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. 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 QuickBooks expects on the receiving side.

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

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.