ml-connector
QuickBooks OnlineAdobe Commerce

QuickBooks Online and Adobe Commerce integration

QuickBooks Online manages accounting and financial records for small-to-mid-market businesses. Adobe Commerce powers e-commerce order and customer data. When the two are connected, customer records and sales orders flow from Adobe Commerce into QuickBooks Online, ensuring your accounting system reflects your storefront's customer base and revenue. ml-connector bridges the different authentication and data-transport models so no manual re-entry is needed.

How QuickBooks Online works

QuickBooks Online exposes Customers, Vendors, Employees, Accounts, Items, Classes, Bills, Invoices, Payments, PurchaseOrders, JournalEntries, and other accounting entities through the QuickBooks Online Accounting API (v3) over REST with a SQL-like query language at https://quickbooks.api.intuit.com/v3/company/{realmId}. Authentication uses OAuth 2.0 Authorization Code flow with 1-hour access tokens and rotating refresh tokens. QuickBooks offers both webhooks (push on Create/Update/Delete for 25+ entity types) and CDC polling (30-day history) so ml-connector can consume changes by either method.

How Adobe Commerce works

Adobe Commerce (available as PaaS or managed SaaS) exposes Orders, Invoices, Customers, Products, Shipments, Creditmemos, and B2B entities (Companies, PurchaseOrders, NegotiableQuotes) through REST and GraphQL APIs. PaaS deployments authenticate with OAuth 1.0a integration credentials or bearer token; SaaS deployments use IMS OAuth 2.0 client credentials with 24-hour token expiry. Adobe Commerce publishes synchronous webhooks (available since 2.4.4) via HMAC SHA256 signature, or can push events through Adobe I/O Events for async handling.

What moves between them

Orders, invoices, and customer records flow from Adobe Commerce into QuickBooks Online. When a customer places an order in Adobe Commerce, ml-connector creates or updates a matching Customer record in QuickBooks with billing and shipping details, then creates an Invoice for the order total allocated to a QB Class or Department for revenue reporting. Invoice amounts are read from Commerce invoices. Commerce Creditmemos (refunds) trigger QB CreditMemo creation for return handling. Data flows one way (Adobe to QB) so QuickBooks remains the system of record for accounting adjustments.

How ml-connector handles it

ml-connector stores both OAuth credential sets encrypted and refreshes each on a 50-minute schedule before expiry, avoiding token timeout failures. On the Adobe side it subscribes to synchronous webhooks (order.place, invoice.create, creditmemo.create) or polls the REST API if webhooks are unavailable; on the QB side it writes Customers and Invoices via the v3 REST API, including SyncToken in updates for concurrency control. Customer mapping uses email as the natural key (unique per store) and deduplicates on name for B2C storefronts; Orders create Invoices mapped to QB Account and Class per your configuration. Adobe's GL account abstraction means ml-connector applies your own GL mapping (e.g., 'Adobe Order' -> '4100 Sales - Web') at the QB side. Webhook payloads from Adobe contain only order ID and invoice ID, so ml-connector fetches the full object before writing, and it retries transient failures with exponential backoff. QB's refresh token rotation every 24-26 hours forces a re-auth if the old token is revoked, so ml-connector tracks rotation and re-requests consent if needed.

A real-world example

A mid-market retail company runs Adobe Commerce PaaS for a B2C storefront and QuickBooks Online for accounting and tax reporting. Before integration, the finance team downloaded order reports from Commerce daily and manually entered customers and invoice amounts into QB, a process that took 2-3 hours and introduced data-entry errors during reconciliation. With Adobe Commerce and QuickBooks Online connected, each order automatically creates a customer record and invoice in QB within minutes, allocated to the correct revenue class for multi-channel reporting. The accounting team now focuses on true adjustments and reconciliation rather than data re-entry, and QB's customer list matches the storefront exactly.

What you can do

  • Sync customer records from Adobe Commerce into QuickBooks Online, creating or updating QB Customer entities with address and contact details.
  • Create QB Invoices from Adobe Commerce orders, mapped to QB Account and Class for revenue tracking and GL posting.
  • Bridge OAuth 2.0 authorization-code flow (QuickBooks) with OAuth 1.0a or OAuth 2.0 credentials (Adobe Commerce depending on deployment model).
  • Handle Adobe webhooks or REST polling, refresh both token types before expiry, and retry on transient failures without data loss.
  • Maintain a complete audit trail of every customer and order sync, with replay capability if a downstream QB write fails.

Questions

Does data flow both directions between Adobe Commerce and QuickBooks Online?
No. Customers and orders flow from Adobe Commerce into QuickBooks Online only. QuickBooks remains the system of record for accounting adjustments, refunds, and GL entries. ml-connector does not write Commerce data back to Adobe, so the storefront is never modified by accounting changes.
How does ml-connector handle the different OAuth schemes (Adobe 1.0a vs OAuth 2.0 and QuickBooks 2.0)?
ml-connector accepts both OAuth 1.0a credentials (PaaS: consumer_key, consumer_secret, access tokens) and OAuth 2.0 client credentials (SaaS: client_id, client_secret) for Adobe Commerce, and stores all secrets encrypted. It refreshes QuickBooks access tokens on a 50-minute schedule before 1-hour expiry, and tracks QB's rotating refresh tokens to detect re-auth if the old token is revoked.
Does Adobe Commerce expose GL accounts, and how does revenue get posted to the correct QB account?
Adobe Commerce does not expose GL accounts as an API resource. ml-connector applies your own GL mapping rules at the QB side--for example, mapping Commerce order total to your '4100 Sales - Web' account and allocating by Class per region or channel. This keeps accounting logic in QB and avoids duplication.

Related integrations

Connect QuickBooks Online and Adobe Commerce

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started