Growthy
AI BookkeepingFor BookkeepersBlogTopicsPricing
Sign InJoin the Alpha
Growthy

© 2026 Growthy. All rights reserved.

  1. Blog
  2. Stripe Bookkeeping

Stripe Reconciliation Guide for Bookkeepers

Bobby Huang

Partner, SDO CPA LLC / CEO, Growthy

April 24, 2026
16 min read
Stripe Bookkeeping
Stripe Reconciliation Guide for Bookkeepers

In this article

Most Stripe reconciliation guides are really just product tours. "Here's where to click in our tool." Useful if you've already chosen that tool. Not useful if you want to understand what you're actually doing.

This guide is different. It covers the method first, then the tooling second. Once you understand the payout-period model, you can apply it manually in QuickBooks, in Xero, or with any automation tool. The method doesn't change. Only the amount of clicking does.

What is Stripe reconciliation for bookkeepers?Stripe reconciliation is the process of matching Stripe payouts to your client's bank deposits, with each payout's gross charges, processing fees, refunds, and net amount recorded as a single summary journal entry. The key insight: you're not reconciling individual transactions to the bank. You're reconciling payouts to the bank. Individual transactions reconcile to the payout. One payout equals one bank deposit equals one journal entry. That click-into-place moment is what makes the whole process manageable.

Key Takeaways

  • Match payouts, not transactions — Stripe groups every charge, fee, and refund into a payout. Your JE matches that grouping, not the individual line items.
  • One JE per payout. Debit clearing for gross charges, credit revenue, debit fees by type, credit contra-revenue for refunds, debit bank for the net. The clearing account zeros when you're done.
  • The clearing account is your error detector. If it doesn't zero after posting, something's wrong. Common causes: a missed refund, a duplicate entry, or a payout that split across two bank deposits.
  • Exceptions are the real work. Refunds applied to future payouts, disputes, and failed payouts all need specific handling. Knowing the patterns in advance saves the debugging time.
  • Manual works, but it doesn't scale. Under 5 payouts per month, 30-45 minutes per payout is manageable. At 20-30 payouts per month across multiple clients, it becomes your whole calendar.

Why Stripe Is the Hardest Payment Processor to Reconcile

Stripe is harder than Square, PayPal, or direct ACH for one reason: the gap between what happened and what shows up in the bank is significant, and it's filled with detail you have to reconstruct.

Bundled Payouts and Multiple Fee Types

Square usually settles one day's sales as one deposit. Stripe bundles multiple days of charges into a single payout, which can include anywhere from 2 to 200+ transactions depending on your client's volume and payout schedule. That payout arrives at the bank as one net number. Gross charges minus processing fees minus refunds minus dispute holds. No breakdown. No detail. Just the number.

The fee types make it worse. Stripe charges a standard processing fee (2.9% + $0.30 per US card transaction), but that's only the beginning. International cards add 1.5%. Instant payouts add 1%. Stripe Connect platforms charge additional fees. Disputes cost $15 each (refunded if you win). Each fee type needs its own GL account. You can't just lump them all into "Bank Charges."

Refunds Deducted from Future Payouts

Here's the one that trips people up the most. When a customer gets a refund, Stripe doesn't issue a separate payout to cover it. The refund amount gets deducted from the next payout that settles. So if your client processes a $120 refund on Tuesday, it shows up as a reduction in the Friday payout, sitting alongside dozens of other transactions from a completely different time period.

That means a refund from one accounting period can reduce a payout that settles in the next period. Your clearing account stays open across the month boundary until that future payout settles. If you don't account for the timing, your month-end clearing balance looks wrong and your revenue is overstated.

How Stripe Compares to Square, PayPal, and Direct ACH

Square deposits daily totals, usually one per business day. The reconciliation is almost trivial. PayPal has more complexity (holds, PayPal balance, instant vs standard transfer) but fewer fee types than Stripe. Direct ACH is one payment, one deposit, done. Stripe, by contrast, was built for volume. It's optimized for high-transaction-count businesses that want consolidated payouts, not for bookkeepers who have to explain every line to a client. That's the tradeoff. And it's why "Stripe reconciliation" has become its own specialty in the bookkeeping world.


The Payout-Period Model (And Why It Beats Transaction-Level)

Transaction-level reconciliation sounds logical. Match every Stripe charge to a line in QuickBooks. The problem: it doesn't match the bank. The bank never sees individual transactions. It sees payouts.

Core Concept: Match Payouts to Bank Deposits

The payout-period model starts from the bank deposit and works backward. One payout settled in the bank on Thursday. That payout contains every charge, fee, refund, and adjustment from the payout period. Your job is to reconstruct that payout into its components and record it as one journal entry. When the JE posts, the net amount matches the bank deposit. The clearing account zeros. Done.

This is fundamentally different from trying to match individual Stripe transactions to bank lines. You can't. The bank doesn't show them. The only unit of settlement is the payout.

Stripe's BalanceTransaction API

Stripe's backend groups every financial event by the payout that settled it. Every charge, fee, refund, and adjustment has a payout field pointing to the payout ID. The reporting_category field tells you what type of event it is: charge, refund, payout_fee, stripe_fee, adjustment, dispute.

You don't need to touch the API directly. The Stripe Dashboard's payout CSV export gives you all of this. But understanding the data model helps you read the export correctly. You're not looking at a list of charges. You're looking at a complete accounting of everything that happened within a payout period, grouped by the payout that settled it.

One JE Per Payout = One Bank Deposit Matched

This is the architecture that makes everything else work. One payout. One journal entry. One bank deposit. The JE debits clearing for the gross, credits revenue, debits each fee type, credits a contra-revenue account for refunds, and debits the bank for the net. When it posts, it clears. No lingering amounts. No unexplained balances. The bank feed shows the deposit. The JE matches it to the penny.


Step 1: Pull the Payout Report

Before you can build a journal entry, you need the data. Stripe gives you two ways to get it.

Stripe Dashboard Export Method

In Stripe Dashboard, go to Reports > Balance (or Payouts depending on your Stripe version). Select the payout you want to reconcile. Download the Balance transaction report for that payout. The export includes a row for every transaction grouped under that payout: charges, refunds, fees, and any adjustments.

The columns you care about most: reporting_category (what type of event), amount (gross amount in cents), fee (Stripe's fee for that event), net (what actually affected your balance), currency, and created (transaction date, not settlement date).

Balance Transactions API Method

If you're reconciling programmatically, query the /v1/balance_transactions endpoint with payout={payout_id}. The response returns every balance transaction associated with that payout. Filter by reporting_category to separate charges, refunds, and fees. Sum each category to get the components for your JE.

Understanding reporting_category Values

The categories you'll see most often: charge (customer payment), refund (money back to customer), payout_fee (fee Stripe charges for the payout itself, mainly for instant payouts), stripe_fee (processing fee), dispute (chargeback deduction), dispute_reversal (if you won the dispute), and adjustment (manual corrections). Each category maps to a specific GL account in your chart of accounts.


Step 2: Build the Summary Journal Entry

This is the core of the method. A real payout, worked through line by line.

Real Payout Example with 30+ Transactions

Take a Stripe payout that settled on April 18, 2026 for $4,893.47. The underlying payout report shows:

Category | Count | Gross Amount

Charges | 34 | $5,187.30

Refunds | 2 | ($148.00)

Processing fees | 34 | ($143.83)

Refund fees retained | 2 | ($2.00)

Net payout | | $4,893.47

The math: $5,187.30 - $148.00 - $143.83 - $2.00 = $4,893.47. That's the number that hits the bank.

Line-by-Line JE Construction

Here's the journal entry for that payout:

Account | Debit | Credit

Stripe Clearing (Other Current Asset) | $5,187.30 |

Revenue | | $5,187.30

Stripe Processing Fees (Expense) | $143.83 |

Sales Refunds (Contra-Revenue) | $148.00 |

Stripe Clearing | | $291.83

Bank (Checking) | $4,893.47 |

Stripe Clearing | | $4,893.47

The clearing account receives $5,187.30 (gross charges in) and gives out $291.83 (fees + refunds out) and $4,893.47 (net to bank). Total out: $5,185.30. Wait, that doesn't zero. Let me work through it correctly:

Clearing debits: $5,187.30 Clearing credits: $291.83 + $4,893.47 = $5,185.30

Difference: $2.00. That's the fee Stripe retains on refunds. The refund reverses $148.00 of revenue but Stripe kept the original $2.00 processing fee. So the $2.00 debit to "Stripe Refund Fees" closes the remaining balance.

Revised final clearing check: $5,187.30 - $148.00 - $143.83 - $2.00 - $4,893.47 = $0.00. Clears to zero.

How Each Line Maps to the GL

Stripe Clearing lives under Other Current Assets. It's a temporary holding account. Money comes in as gross charges, money goes out as fees, refunds, and the net payout. It should zero after each reconciliation. If it doesn't, that's your diagnostic: something got missed or double-counted.

Revenue credit goes to whichever revenue account matches your client's business: Product Revenue, Service Revenue, Subscription Revenue. If they have multiple revenue streams, the Stripe report's metadata or charge descriptions may let you split by type.

Stripe Processing Fees, Dispute Fees, and International Fees should each have their own expense line. Lumping them together makes year-end analysis harder and hides the true cost of disputes.


Step 3: Clear the Clearing Account

After posting the JE, pull up the Stripe Clearing account register. The balance for that payout period should be exactly zero.

Verify Zero Balance After Each Payout

This is your reconciliation checkpoint. Run a clearing account report filtered to the payout's date range. Every debit should have a corresponding credit. The total balance nets to zero. If it does, you're done with that payout. If it doesn't, you have a discrepancy to find before moving on.

Don't move to the next payout until this one clears. Stacking unresolved payout periods on top of each other turns a 10-minute fix into a multi-hour archaeology project.

Common Discrepancy Causes

Four causes cover about 90% of clearing account failures.

Missed refund timing: A refund from a prior period finally settled in this payout but you didn't find the corresponding prior-period clearing entry. The clearing account shows a credit with no matching debit.

Duplicate entry: The same payout was entered twice. Easy to do when a client's bank feed auto-imports and you also enter manually. Check for duplicate JEs on the same date for the same net amount.

Currency conversion rounding: International charges get converted at the daily exchange rate. Stripe's math may produce a $0.01 or $0.02 rounding difference vs your software's conversion. Post a small adjustment entry to a "Foreign Exchange Rounding" expense account.

Split bank deposit: Occasionally Stripe splits a payout across two separate bank transfers (usually when a payout amount exceeds a threshold or a bank routing issue occurs). If your JE credits bank for the full payout but only half arrived yet, the clearing account stays open until the second transfer comes in. Match the JE to the first transfer, leave the clearing entry open, and post a second bank debit when the second transfer settles.


Step 4: Handle the Exceptions

The four-step workflow covers standard payouts. These are the exceptions that come up in real client work.

Refunds Applied to Future Payouts

When a customer refund processes after the current payout has already been calculated, Stripe deducts it from the next payout. In the clearing account, you have an open debit for the original charge (from the earlier payout JE) and no matching credit until the next payout settles.

The correct approach: leave the clearing account open. When the next payout report shows the refund under refund reporting_category, include the Sales Refunds debit and clear the Clearing credit in that payout's JE. The original charge's clearing credit arrives in this later period. This is expected. Document the timing difference in your working notes.

Disputes with Pending Outcomes

When a customer disputes a charge, Stripe immediately withdraws the disputed amount from your balance and holds it. This appears in the payout report as a dispute category entry. The GL treatment: debit a "Disputed Charges Receivable" or "Stripe Dispute Reserve" asset account, credit Stripe Clearing. The revenue stays on the books until the dispute resolves.

If you win the dispute, Stripe returns the funds. Post a debit to clearing and credit the dispute reserve account. If you lose, the customer keeps the money. Reverse the revenue debit: debit Sales Refunds, credit the dispute reserve.

The $15 dispute fee is always charged regardless of outcome. Debit Stripe Dispute Fees (separate from processing fees, which is a useful metric to track separately).

Failed Payouts and Currency Conversion

Failed payouts (usually due to bank account issues) show up as payout_failure in the balance transactions. Stripe requeues the payout automatically once the issue resolves. Don't post the bank debit until the payout actually settles. The clearing account will show an open balance in the meantime, which is correct.

Multi-currency charges get converted to your settlement currency at the daily Stripe exchange rate. The exchange_rate field in the balance transaction tells you what rate was used. If your QBO or Xero applies a different rate, you'll have a small rounding difference. A monthly "FX Rounding" adjustment of $1-5 is normal for international-facing businesses. Larger differences warrant investigation.


The Monthly Reconciliation Checklist

This checklist covers a full month of Stripe activity. Print it, work through it, check the boxes. Every item should be green before you close the period.

  1. All payouts identified: Pull the Stripe Dashboard payout list for the month. Count payouts. Verify you have a JE for each one. No gaps.
  2. All payouts matched to bank deposits: Every payout net amount appears in the bank register as a deposit. No payout is missing from the bank. No bank deposit is unaccounted for.
  3. Clearing account balance is zero: Run the Stripe Clearing account report for the month. Net balance should be $0.00. Any open balance indicates an unreconciled payout or a timing difference that needs documentation.
  4. Processing fees match Stripe fee report: In Stripe Dashboard, pull the monthly fee summary report. Total processing fees in the report should match the total posted to your Stripe Processing Fees GL account. Tolerance: $0.01 (rounding).
  5. Refund timing differences documented: If any refunds were applied to payouts in the following month, note them in your working papers. The clearing account may show a small open balance for these; verify it matches the expected refund amounts exactly.
  6. Dispute reserves updated: Pull open disputes from Stripe Dashboard. Verify the Dispute Reserve asset account balance matches the total held amounts. Update for any disputes resolved during the month.
  7. International fee accounts reconciled: If the client has international transactions, verify the International Card Fees account balance against Stripe's international fee report. Check that exchange rate differences are within tolerance.
  8. Revenue ties to Stripe revenue report: Run Stripe's monthly revenue summary (Dashboard > Reports > Revenue). Compare total gross charges to the sum of all revenue credits posted in your JEs for the month. These should match.
  9. Bank balance confirmed: Reconcile the checking account (including Stripe deposits alongside all other deposits). The Stripe deposits should account for every payout without duplication.
  10. Working papers filed: All payout reports, JE references, and exception notes are saved in the client folder with the month-end date. If someone else picks up this client next month, they can follow what you did without asking.

Manual vs. Automated Reconciliation (Honest Comparison)

Manual reconciliation works. It's genuinely the right method for bookkeepers who are new to Stripe, have low-volume clients, or want to understand exactly what's happening before automating it. Don't let anyone tell you otherwise.

When Manual Works (Under 5 Payouts per Month)

If your client gets paid out weekly or biweekly and has modest transaction volume, manual reconciliation runs 30-45 minutes per payout. For a weekly-payout client, that's 2-3 hours a month. Entirely reasonable. You download the CSV, build the JE, post it, verify the clearing account, move on.

The process also builds your intuition. After manually reconciling 20-30 payouts, you'll spot discrepancies immediately. Currency rounding looks different from a missed refund. A duplicate entry has a particular signature in the clearing account. That pattern recognition pays off when you do transition to automation.

When Automation Pays for Itself

Volume is the inflection point. Once a client has 20+ payouts per month, or once you're managing 5+ Stripe clients simultaneously, the manual method becomes your biggest time consumer. At 30 payouts per month at 45 minutes each, you're spending 22 hours per month on a single client's Stripe reconciliation. That's most of a full work week.

Every serious automation tool in this space uses the payout-period model. A2X built their entire business on it. Synder, Bookkeep, and similar tools all work the same way at the method level. The payout-period approach is validated. It's not a workaround; it's how this is supposed to be done.

What Confidence Scoring Changes

The tools that use payout-period reconciliation generate the journal entries automatically. What separates them is how they handle the exceptions.

With Growthy, you point it at your client's Stripe account. It splits fees by reporting_category and generates clearing account entries for each payout. For the standard payouts, no clicking required. The difference is on the exception side: each JE component gets a confidence score (so you know which ones need your eyes), triage queues surface the 10% of transactions requiring judgment, and every correction you make carries forward to future payouts for that client.

For clients with 3 payouts a month, the manual method is fine. For clients with 30 payouts a month across 6 clients, the math changes quickly.


Growthy is bookkeeping software, not a CPA firm. This content is educational, not professional advice. Full disclaimer.

Get Early Access


Related: Why Stripe Deposits Don't Match, How to Record Stripe in QBO, Stripe Fees GL Mapping

Tags:stripebookkeepingreconciliationquickbooks

See It Work on Your Data

Free during alpha. Read-only access. You review every sync.

✓ No credit card✓ Works with QuickBooks✓ 85% accuracy
Request Early Access

Bobby Huang • Partner, SDO CPA LLC / CEO, Growthy

CPA firm partner who got tired of watching bookkeepers click categorize 500 times a day. Built Growthy to fix it.

View all articles →

Growthy is dedicated to helping businesses of all sizes make informed decisions. We adhere to strict editorial guidelines to ensure that our content meets and maintains our high standards.

Keep reading

Featured image for What Category Is Vehicle & Mileage Expenses? (Chart of Accounts Guide)
Expense Account Categories

What Category Is Vehicle & Mileage Expenses? (Chart of Accounts Guide)

Vehicle expenses split into two methods: standard mileage (a single per-mile rate that covers gas, depreciation, and maintenance) or actual expense (every cost tracked separately). The choice in year one usually locks in the rest.

B
Bobby Huang
11 min
Business traveler at airport
Expense Account Categories

What Category Is Travel Expenses? (Chart of Accounts Guide)

Travel covers airfare, hotels, rental cars, and ground transit while away from your tax home for business. Meals belong in Meals (50% deductible). Mileage belongs in Vehicle Expense. The commute is never deductible at all.

B
Bobby Huang
10 min
Team training meeting in conference room
Expense Account Categories

What Category Is Training & Education? (Chart of Accounts Guide)

Training and education go to Training & Education Expense, but the deductibility test is sharper than most articles admit. Owner career-change tuition isn't deductible; CPE for licensed pros always is; conferences split across three accounts.

B
Bobby Huang
10 min