Connect Stripe to QuickBooks
Why teams connect Stripe and QuickBooks
Money comes in through Stripe. The books are in QuickBooks. Without an integration, someone downloads the Stripe payout report each week and hand-enters a deposit, then guesses at the fee split, and the QuickBooks bank balance never quite matches the statement.
- Each Stripe payout is recorded as a bank deposit whose total equals the amount that actually hit the bank, so reconciliation is a one-click match
- Processing fees are posted to a Merchant Fees expense account automatically, not estimated at month-end
- Individual sales and refunds are booked as sales receipts and refund receipts, categorized by product where the metadata allows
- Every entry is a run you can inspect, so a deposit that looks wrong can be traced to the exact payout and the balance transactions inside it
Worked example
The reconciliation flow most small teams turn on first.
Every Stripe payout recorded in QuickBooks as a bank deposit, fees split out
Started when Stripe settles a payout, safe to repeat on the payout ID.
- Trigger: a Webhook trigger with Auto Register With Stripe for
payout.paid, carrying the payout ID,amount, andarrival_date. - Expand: list the balance transactions in the payout, each with
gross,fee,net, and atypeof charge, refund, or adjustment. - Idempotency: query QuickBooks for a deposit whose
PrivateNoteholds the payout ID. If one exists, stop. - Deposit: QuickBooks
Create Entitywith the Deposit type to theStripe Clearingbank account, with a line per charge to a Sales Income account, and one negative line for total fees to Merchant Fees. - Note and date: set
PrivateNoteto the payout ID andTxnDatetoarrival_date. - Exceptions: any balance transaction of a type the mapping does not cover goes to a person as a Wait for form task with the payout link, rather than being guessed at.
- Sales detail (optional): a second flow on Stripe's
charge.succeededwebhook books each charge as a QuickBooks sales receipt to Undeposited Funds, which the deposit then clears.
Field mapping
The starting map for the payout to QuickBooks Deposit step.
| Stripe | QuickBooks Online | Notes |
|---|---|---|
payout.id | Deposit.PrivateNote | Idempotency key. The flow queries for it before creating. |
payout.arrival_date | Deposit.TxnDate | Unix timestamp in Stripe. Date only in QuickBooks. |
| (fixed) | Deposit.DepositToAccountRef | The Stripe Clearing bank account, chosen once in setup. |
balance_txn.gross / 100 | Deposit.Line.Amount (positive) | One line per charge. Stripe amounts are integer cents; divide by 100. |
| (fixed) | Deposit.Line.AccountRef | Sales Income for charge lines, mapped by charge.metadata.product where present. |
sum(balance_txn.fee) / 100 | Deposit.Line.Amount (negative) | Single line to Merchant Fees. QuickBooks deposits allow negative lines for fees. |
balance_txn.type = "refund" | Deposit.Line.Amount (negative) | Refund lines net the deposit down so the total matches the bank. |
payout.currency | Deposit.CurrencyRef | Only set on a multi-currency company. Must match the bank account currency. |
What syncs, each direction
- Payout deposits. Each payout becomes a bank deposit whose total matches the bank line, with fees on a negative line. (Stripe to QuickBooks)
- Sales and refunds. Charges become sales receipts to Undeposited Funds. Refunds become refund receipts. Both are cleared by the deposit. (Stripe to QuickBooks)
- Customers. A first-time Stripe customer creates a QuickBooks customer, matched on email so a repeat buyer is not duplicated. (Stripe to QuickBooks)
- Disputes and adjustments. A dispute posts a journal entry to a disputes account, reversed on resolution. Balance adjustments post to a clearing account for review. (Stripe to QuickBooks)
Governance and audit
The same controls apply to this sync as to every other Neblex workload.
- Run history. Every entry is a run with the payout, its balance transactions, and the deposit or receipt it created. A failed run can be replayed from the step that failed, and the existence check stops a second posting.
- Review tasks. Unrecognized balance-transaction types, currency mismatches, and unmapped products go to a person as a task rather than posting a wrong line.
- Scoped access. Stripe uses a restricted API key with read on payouts, charges, and balance transactions, plus write on webhook endpoints for the auto-registered webhook. QuickBooks uses an OAuth connection to one company file.
- Environments. Build against Stripe test mode and a QuickBooks sandbox company, then promote the same flow to live and production.
Frequently asked questions
Will the QuickBooks bank balance match my statement?
Yes. The deposit total is the payout amount that actually arrived, with fees and refunds as negative lines, so it matches the bank line one to one.
Do I get every transaction, or just a summary?
Your choice. The default is a per-charge line inside each deposit. Turn on the sales-receipt flow for a full sub-ledger of individual sales and refunds.
How are fees handled?
A single negative line to a Merchant Fees expense account inside the deposit, so the fee expense is booked in the same period as the revenue.
What about a redelivered Stripe event?
The flow queries QuickBooks for a deposit tagged with the payout ID before creating one, so a redelivered payout.paid does not post twice.
Is this different from QuickBooks' built-in Stripe app?
The built-in app is fine for a very simple store. Teams move to this for the fee split, multi-product categorization, dispute handling, a readable run history, and the same governance as their other integrations.
Connectors used
Stripe
Finance, Billing & Payments
- Operations
- 589
- Operations with typed output
- 99.7%
- Change triggers
- 10 (webhook)
- Signs in with
- API token
QuickBooks
Finance, Billing & Payments
- Operations
- 50
- Operations with typed output
- 100%
- Change triggers
- Poll or inbound webhook
- Signs in with
- OAuth 2.0 sign-in
Bring one real integration
We will build it with you against your own systems, with the run log open.