Free guide · JWillum products
How to reconcile Stripe payouts into a bookkeeping journal (QuickBooks-ready)
Reconcile Stripe payouts in QuickBooks with a clearing account and a journal entry built from a Stripe export. Step-by-step guide.
Published · Updated
Stripe deposits one lump sum into your bank, but that payout is really many charges, minus fees, minus refunds, sometimes minus a dispute. If you book the deposit as "sales", your income is understated, your fees disappear, and refunds get tangled in. Most bookkeepers fix this with a clearing account and a journal entry. This guide shows how to do it by hand from a Stripe export.
Why a clearing account works
Picture a holding account, usually called Stripe Clearing, that stands for "money Stripe is holding for me":
- When a customer pays, gross sales go into clearing (debit clearing, credit sales).
- Stripe's fee comes out of clearing (debit fees expense, credit clearing).
- A refund comes out of clearing (debit refunds, credit clearing).
- A payout moves money from clearing to your bank (debit bank, credit clearing).
If everything is recorded, clearing goes back toward zero each time a payout lands. Anything left over tells you what still needs a closer look.
Step 1: Set up five accounts once
In QuickBooks Online (or your ledger), create these accounts or map to ones you already have:
- Stripe Clearing: Other Current Asset (or a clearing/bank-type account)
- Stripe Sales: Income
- Stripe Fees: Expense
- Stripe Refunds: contra-income or expense (pick one policy and stick to it)
- Bank Account: the real account that receives Stripe payouts
Write the names down exactly as they appear. Journal CSV imports usually fail on spelling or capitalization mismatches.
Step 2: Export the right Stripe file
In the Stripe Dashboard, go to Balances, open the transactions view and Export. Choose the itemized balance transactions export, not the payments list. You want columns like created, amount, fee, net, type or reporting_category, description and payout (or automatic_payout_id).
Export the date range for the month you're closing. Check whether amounts are in major units (100.00) or cents (10000). Mixing the two is the classic "everything is 100× too big" mistake.
Step 3: Categorize each row
Sort or filter by reporting_category (or type if that column is missing) and group rows:
| Category | Journal lines |
|---|---|
| charge / payment | Dr Clearing (gross), Cr Sales (gross); then Dr Fees, Cr Clearing (fee) |
| refund | Dr Refunds, Cr Clearing |
| stripe fee | Dr Fees, Cr Clearing |
| payout | Dr Bank, Cr Clearing |
| payout reversal | the reverse of a payout |
| dispute | treat like a refund, and note it as a dispute |
Rows such as internal transfers or adjustments don't fit these buckets. Set them aside and decide on each one with your bookkeeper rather than forcing them in.
Step 4: Build one journal per day
Use a pivot table or SUMIFS to total each category per calendar day. Then write a journal entry for each day with the columns most CSV importers expect:
Journal No., Journal Date, Account Name, Description, Debits, Credits
A readable numbering scheme like SC-2026-03-15 makes entries easy to find later. Check that total debits equal total credits for every journal before you import. One unbalanced day blocks the whole import.
Step 5: Tie out the clearing account
After import, look at the Stripe Clearing balance for the period. If it isn't zero (or equal to charges that haven't been paid out yet), the usual suspects are:
- date-range cutoffs (charges at month-end paid out next month)
- rows you set aside (transfers, adjustments)
- mixed currencies
- a cents vs. major units mix-up
Compare your category totals to the Stripe Dashboard for the same range and you'll usually find the gap within minutes.
Doing it faster: StripeClear Journal
Doing this by hand every month takes a while and it's easy to make mistakes. StripeClear Journal is a single offline HTML file that does Steps 3 and 4 for you and shows the Step 5 tie-out. Drop in your Stripe balance transactions CSV, rename the five accounts to match your chart of accounts, and it builds one balanced journal per day (SC-YYYY-MM-DD). A tie-out panel shows charges, fees, refunds, payouts and the clearing residual.
You download three files: a QBO Journal CSV, a Payout Summary (one row per payout) and a Detail Audit listing every source row and whether it was journaled. Unrecognized types are left out of the journal and flagged in the audit rather than guessed. Amount units auto-detect, with a manual override, and European comma decimals are supported. There's no Stripe API, no login and no upload: the file never leaves your computer.
It's a reconciliation helper, not accounting advice. Check totals against Stripe and your bank before importing.
Related tools
- Handing a QuickBooks Online or Xero export to your accountant? BooksExport Clean strips report titles, totals and payee noise into one clean CSV, offline.
- Billing hours from Toggl, Clockify or Harvest? Tracker Invoice Lines turns detailed time exports into invoice-line CSVs for Xero or Wave.
Official documentation
The tool for this job
StripeClear Journal
Stripe Balance Transactions CSV to QuickBooks Journal — Offline
Turn a Stripe Balance Transactions CSV into a balanced QuickBooks Online journal CSV, plus a payout summary and an audit file.
This guide is also published on Gumroad.