Connect Shopify to QuickBooks
Book Shopify sales in QuickBooks Online without exporting a spreadsheet every week. Each paid order becomes a sales receipt with tax and shipping on their own lines, each Shopify Payments payout is reconciled to the bank deposit with fees split out, and refunds are booked as they happen. Every entry is an ordered run you can trace back to the Shopify order.
Why teams connect Shopify and QuickBooks
Sales run through Shopify. The books are in QuickBooks. Without an integration, someone exports the Shopify finance summary each month, hand-keys a few journal lines, guesses at the Shopify Payments fee, and the QuickBooks bank balance never matches the statement.
- Each paid order is booked as a sales receipt with product, shipping, discount, and tax on separate lines, so the revenue and liability accounts are right
- Shopify Payments payouts are reconciled to a bank deposit whose total matches the bank line, with processing fees on a negative line to a fees account
- Refunds and partial refunds post as refund receipts against the original order, categorized the same way
- Every entry is an ordered run log, so a deposit or receipt that looks wrong traces back to the order and the transactions inside the payout
Worked example
The bookkeeping flow most stores turn on first.
Every paid Shopify order booked in QuickBooks as a sales receipt, payout reconciled
Two flows. One on the order, one on the payout, both idempotent.
- Trigger: Shopify
orders/paidwebhook, carryingid,name(the "#1001" order number),line_items,total_tax,shipping_lines,total_discounts, andcustomer. - Idempotency: query QuickBooks for a sales receipt whose
DocNumberequals the Shopify order name. If one exists, stop. - Customer: upsert a QuickBooks customer matched on
customer.email, so a repeat buyer is not duplicated. - Sales receipt: QuickBooks
Create SalesReceipttoUndeposited Funds, one line perline_itemto a Sales Income account, plus a shipping line, a discount line, and a tax line mapped to the tax agency. - Payout flow: on Shopify
Payoutsettled, list its transactions (charge,refund,fee,adjustment), thenCreate Depositto the bank account clearing the matching receipts, with a negative line for total fees toMerchant Fees. - Exceptions: a payout transaction type the mapping does not cover, or an order whose tax lines do not sum, is posted to
#finance-reviewwith the Shopify link rather than guessed at.
Field mapping
The starting map for the Shopify order to QuickBooks SalesReceipt step.
| Shopify | QuickBooks Online | Notes |
|---|---|---|
order.name | SalesReceipt.DocNumber | Idempotency key. Queried before creating. Not order.id, which is not human-legible on the books. |
order.customer.email | SalesReceipt.CustomerRef | Upsert match key. A guest checkout with no email maps to a single "Shopify Guest" customer. |
line_item.price * quantity | SalesReceipt.Line.Amount | One sales line per item. Shopify prices are decimal strings; parse, do not divide. |
line_item.sku | SalesReceipt.Line.ItemRef | Mapped to a QuickBooks product or service. Unmapped SKUs fall back to a generic "Online Sales" item. |
total_shipping_price_set | SalesReceipt.Line (Shipping Income) | Its own line, not folded into product revenue. |
total_discounts | SalesReceipt.Line (negative, Discounts given) | Negative line so the receipt total matches Shopify's. |
tax_lines[].price | SalesReceipt.TxnTaxDetail | Currency gotcha: Shopify sends tax already computed. Map to the QuickBooks tax code, do not let QuickBooks recompute. |
order.currency | SalesReceipt.CurrencyRef | Override only on a multi-currency company. Must match the deposit bank account currency. |
order.processed_at | SalesReceipt.TxnDate | ISO 8601 in Shopify, date only in QuickBooks. Use the store time zone. |
What syncs, each direction
- Paid orders. Each paid order becomes a sales receipt with product, shipping, discount, and tax on separate lines. (Shopify to QuickBooks)
- Payout deposits. Each Shopify Payments payout is a bank deposit that clears the matching receipts, with fees on a negative line. (Shopify to QuickBooks)
- Refunds. Full and partial refunds become refund receipts against the original customer and accounts. (Shopify to QuickBooks)
- Product cost (optional). A QuickBooks item cost change can update the Shopify variant cost so margin reports line up. Off by default. (QuickBooks to Shopify)
Governance and audit
The same controls apply to this sync as to every other Neblex workload.
- Ordered run log. Every entry is an event log with the Shopify order or payout, the transactions inside it, and the receipt or deposit it created. Replay without re-posting.
- Review queue. Unmapped SKUs, tax lines that do not sum, and unrecognized payout transaction types queue for a person rather than posting a wrong line.
- Scoped access. Shopify uses a custom app token scoped to
read_ordersandread_shopify_payments_payouts. QuickBooks uses an OAuth grant to one company file. - Environments. Build against a Shopify development store and a QuickBooks sandbox company, then promote the same flow to production.
Frequently asked questions
Do I get every order, or a daily summary?
Your choice. The default is a sales receipt per order for a full sub-ledger. A summary mode books one journal entry per day from the Shopify payout instead, if that is all your accountant wants.
Will the QuickBooks bank balance match my statement?
Yes. The deposit total equals the Shopify Payments payout that actually arrived, with fees and refunds as negative lines, so it reconciles to the bank line one to one.
How is sales tax handled?
Shopify computes tax at checkout and sends it on the order. The flow maps those amounts to your QuickBooks tax codes and agency without letting QuickBooks recompute, so the two always agree.
What about a redelivered Shopify webhook?
The flow queries QuickBooks for a receipt with the order number before creating one, so a redelivered orders/paid is a no-op.
Is this different from the QuickBooks Connector by Intuit or A2X?
A2X is strong for summarized ecommerce accounting and many teams are happy on it. Neblex fits when you want the per-order detail, the same run log and governance as your other integrations, and the freedom to branch the flow, for example holding high-risk orders for review before they post.
Can it sync inventory or fulfillment?
That is a separate flow and usually belongs between Shopify and an ERP or a 3PL, not the accounting system. See the Shopify to NetSuite page for that pattern.
Connectors on this page
Shopify
Finance & Commerce
- Operations
- 367
- Typed outputs
- 100%
- Change triggers
- Poll or inbound webhook
- Authentication
- None
QuickBooks
Accounting
- Operations
- 50
- Typed outputs
- 100%
- Change triggers
- Poll or inbound webhook
- Authentication
- OAuth2
Bring one real integration
We will build it with you against your own systems, with the run log open.