QuickBooks Online and Shopify integration
Shopify processes orders, customers, and payments. QuickBooks Online records invoices, revenue, and accounts receivable. When the two are connected, every Shopify order flows into QuickBooks as an invoice, customers sync automatically, and payments reconcile without manual re-entry. ml-connector bridges the authentication gap on both sides and handles the data shaping that turns an e-commerce order into an accounting record.
What moves between them
The main flow is Shopify to QuickBooks Online. After an order is placed in Shopify, ml-connector reads the order via webhook and creates or updates an invoice in QuickBooks Online with line items matching products, quantities, and prices. Customers are synced bidirectionally: new Shopify customers become QuickBooks customers, and QuickBooks customer changes (credit limit, billing address) can flow back to Shopify Company entities if enabled. Payments received in Shopify trigger payment records in QuickBooks to match the invoice, closing out accounts receivable. The sync runs on webhook receipt (push) and falls back to polling if webhooks are delayed or missed.
How ml-connector handles it
ml-connector stores both OAuth credential sets encrypted and refreshes them independently on each platform. For QuickBooks, it uses the realmId from the OAuth callback to build the correct tenant URL. For Shopify, it requests offline tokens at setup so tokens do not expire mid-sync. On each Shopify order webhook, ml-connector deduplicates via the X-Shopify-Webhook-Id and fetches the full order via GraphQL. It then maps Shopify products to QuickBooks items by SKU or creates new items if no match exists. Customer names and email are mapped to QuickBooks Customer objects; shipping and billing addresses populate location and contact fields. Line items become invoice lines with units, prices, and sales tax applied per Shopify's tax calculation. When a Shopify order transitions to paid, ml-connector records a Payment in QuickBooks against the matching invoice. Because Shopify has no general ledger, ml-connector never writes journal entries directly from Shopify data; all accounting happens via the invoice and payment flow. Exchange rate handling respects QuickBooks multi-currency capability if both systems are configured with the same currencies, though most small merchants operate in a single currency.
A real-world example
A small-to-mid-market e-commerce business sells physical goods through Shopify and runs QuickBooks Online for accounting and tax reporting. Before the integration, the accounting team exported daily sales reports from Shopify and manually entered each order as an invoice in QuickBooks, a daily task that took 30 minutes and was error-prone when products moved between SKUs or customers were misspelled. With Shopify and QuickBooks Online connected, each order becomes an invoice automatically, customers are created on first purchase, and payments flow through to QuickBooks within minutes of order fulfillment. Tax reporting is now accurate because every transaction is in the ledger, and the team reclaims the time spent on manual entry.
What you can do
- Create or update QuickBooks Online invoices from Shopify orders in real time via webhook.
- Sync Shopify customers to QuickBooks Online customer records with billing and shipping addresses.
- Map Shopify products to QuickBooks items by SKU and auto-create items that do not yet exist.
- Reconcile Shopify payments with QuickBooks Online invoices to close accounts receivable automatically.
- Handle OAuth 2.0 token refresh on both sides and deduplicate orders via Shopify's webhook ID header.
Questions
- Which direction does data move between Shopify and QuickBooks Online?
- The main flow is Shopify to QuickBooks Online. Orders, customers, and payments move from Shopify into QuickBooks as invoices, customer records, and payment records. Customer metadata can flow back from QuickBooks to Shopify if bidirectional sync is enabled, but orders and invoices are read-only in Shopify because Shopify has no purchase order or invoice object.
- How does the integration handle Shopify's lack of a purchase order or general ledger?
- ml-connector uses Shopify orders as the source of truth for customer transactions. Every order becomes an invoice in QuickBooks, and line items are mapped to QuickBooks items by SKU. Because Shopify has no accounting ledger, all accounting logic happens in QuickBooks; ml-connector never creates journal entries from Shopify data.
- What happens if an order changes after it is synced to QuickBooks Online?
- ml-connector deduplicates via Shopify's X-Shopify-Webhook-Id header, so if an order is updated (quantity, price, customer), the webhook fires again with the same ID and ml-connector updates the matching invoice in QuickBooks. If a customer is added or an address changes, the customer record in QuickBooks is updated to match.
Related integrations
More QuickBooks Online integrations
Other systems that connect to Shopify
Connect QuickBooks Online and Shopify
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started