QuickBooks Desktop and Stedi integration
QuickBooks Desktop is the accounting system at your premises; Stedi connects you to your trading partners via EDI. Together they let inbound purchase orders and invoices from suppliers flow directly from Stedi into QuickBooks without re-keying. New vendor records and line-item bills post with the correct GL codes and amounts. Outbound shipment notices from QuickBooks can be translated to ASN 856 and sent back through Stedi to your partners.
What moves between them
Inbound EDI purchase orders (850), invoices (810), and ASN (856) flow from Stedi as JSON webhooks. ml-connector maps the Stedi partner ID to the matching QuickBooks vendor, creates or updates the vendor if needed, and writes the bill or purchase order through QBWC. Outbound shipment notices (856) are read from QuickBooks on a schedule, translated to Stedi transaction format, and sent to the partner via SFTP or AS2. Deduplication uses Stedi's eventId and the bill reference number in QuickBooks.
How ml-connector handles it
ml-connector listens for Stedi webhooks (transaction.processed.v2) on a dedicated endpoint and immediately acknowledges within 5 seconds. The webhook payload contains the parsed EDI line items and trading partner ID. ml-connector looks up the partner in a Stedi Partnership mapping, translates it to the QuickBooks vendor ID, and queues the bill for processing. On a background schedule, ml-connector authenticates to QBWC by calling the SOAP authenticate() method with stored credentials, receives a session token, and sends a BillAddRq request for each queued bill. If the bill amount or line items conflict with an existing bill (detected by reference number), the operation is skipped. If QBWC returns an EditSequence conflict, ml-connector re-queries the bill, merges the update, and retries. SOAP timeouts trigger exponential backoff with jitter. Outbound shipments are polled from QuickBooks, formatted to Stedi transaction JSON, and posted to Stedi with an Idempotency-Key. All transactions log to an audit trail keyed by Stedi eventId and QuickBooks txnID.
A real-world example
A mid-market distributor receives purchase orders and invoices from 30+ suppliers via EDI. Before integration, a data-entry clerk downloaded each supplier's transactions from Stedi, extracted vendor and line-item data into a spreadsheet, and manually re-entered them into QuickBooks. Month-end was chaotic because accounts payable could not reconcile the invoice register to Stedi without a manual recount. With Stedi and QuickBooks connected through ml-connector, purchase orders and invoices from suppliers arrive as EDI, are parsed by Stedi, and drop directly into QuickBooks as bills against the correct vendors and GL expense accounts. The AP team now reconciles in minutes, and the data-entry step is gone.
What you can do
- Accept inbound EDI purchase orders (850), invoices (810), and ASN (856) from Stedi as JSON webhooks and create matching bills in QuickBooks.
- Map Stedi trading partner IDs to QuickBooks vendors, creating vendor records when needed.
- Handle QBWC session token authentication and detect EditSequence version conflicts on bill updates.
- Poll outbound shipment notices from QuickBooks and translate them to EDI ASN (856) for routing back through Stedi to suppliers.
- Deduplicate inbound transactions using Stedi eventId and bill reference numbers, with full audit trail for every record.
Questions
- How do EDI orders from Stedi actually get into QuickBooks?
- Stedi parses inbound EDI files and pushes the parsed JSON as webhooks. ml-connector receives the webhook, extracts the vendor and line items, authenticates to your local QBWC agent using the session token handshake, and writes the bill as QBXML. The QBWC agent on your Windows machine processes the request and posts the bill to QuickBooks.
- Does ml-connector handle vendor matching between Stedi and QuickBooks?
- Yes. ml-connector maps Stedi Partnership IDs (which identify trading partners) to QuickBooks vendor IDs. If a vendor does not yet exist in QuickBooks, ml-connector can create it with the partner name and basic contact info. The mapping is configured in the connection settings.
- What happens if a bill is sent to QuickBooks twice?
- ml-connector deduplicates using Stedi's eventId and the bill reference number stored in QuickBooks. If the same EDI invoice is received twice, the second attempt is skipped. If a bill must be corrected, it is handled as a separate transaction with a new reference number.
Related integrations
More QuickBooks Desktop integrations
Other systems that connect to Stedi
Connect QuickBooks Desktop and Stedi
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started