Growthy
AI BookkeepingFor BookkeepersFor AccountantsBlogTopicsPricing
Sign InJoin the Alpha
Growthy

© 2026 Growthy. All rights reserved.

  1. Blog
  2. Payment Reconciliation

Payment Reconciliation: The Complete Guide for Bookkeepers

Bobby Huang

Partner, SDO CPA LLC / CEO, Growthy

May 9, 2026
12 min read
Payment Reconciliation
Payment Reconciliation: The Complete Guide for Bookkeepers

In this article

Payment reconciliation trips up more bookkeepers than almost any other task. Not because it's complicated in theory. Because every processor does it differently, batches transactions in ways that don't match your sales records, and buries fees, refunds, and disputes inside a single deposit number.

This guide covers what payment reconciliation is and how it works across the major processors. It walks through the manual process step by step. And it covers when the math stops being manageable by hand.

What is payment reconciliation?

Payment reconciliation is the process of decomposing processor payouts into their component transactions — charges, fees, refunds, and disputes. You verify that those components tie back to your sales records and general ledger. It's not the same as bank reconciliation (matching your bank statement to your GL). It's the step before that: turning one batch deposit into the individual transactions that make it up, then booking them to the right accounts.

Key Takeaways

  • Payment reconciliation and bank reconciliation are different tasks. Reconciliation starts at the processor level, before the bank statement ever enters the picture.
  • Every major processor batches transactions into a single deposit. Stripe, PayPal, Square, and Shopify all do this, and each formats the payout report differently.
  • Five components live inside every payout: gross charges, processing fees, refunds, disputes/chargebacks, and platform holds. Each needs its own GL account.
  • The manual process has six steps: download payout report, match to bank deposit, split components, create journal entries, post to clearing account, reconcile clearing to zero.
  • Volume breaks the manual process. At roughly 200+ transactions per month per client, matching by hand stops being reliable.
  • Three warning signs tell you when to automate: clearing account never zeros, close takes two extra days per processor client, you're matching by amount and hoping for the best.

What Payment Reconciliation Actually Means (And What It Doesn't)

"Bank reconciliation" and "payment reconciliation" get used interchangeably. They're not the same thing.

Bank reconciliation matches your bank statement to your general ledger. You're confirming that the deposits and withdrawals your bank recorded match what's in your books. That's step two.

Payment reconciliation is step one. It's the process of taking one deposit (say, $3,847.92 from Stripe) and figuring out exactly what's inside it. Forty-one customer charges. Two refunds from last week. $94.17 in processing fees. A $25.00 dispute you lost in November that finally settled.

Once you know what's inside the deposit, you can book each component correctly. Gross revenue goes to your revenue account. Fees go to a contra-revenue or expense account. Refunds reduce gross revenue. Chargebacks get their own bucket.

Then you can reconcile the bank statement. But not before.

Most reconciliation problems aren't bank reconciliation problems. They're payment reconciliation problems. The clearing account won't zero because the components weren't split correctly. The GL doesn't match because fees were lumped into revenue. The month doesn't close because one payout contained a mid-cycle refund nobody caught.

Get the decomposition right, and the rest flows.

Why Every Payment Processor Creates a Reconciliation Problem

Stripe, PayPal, Square, and Shopify Payments all work the same way at a high level: they collect individual customer payments throughout a period, then batch them into a single payout to your bank account. The bank sees one number. Your sales system sees 47.

That gap is where errors hide.

Each processor makes the problem slightly different:

Stripe pays out on a rolling two-business-day delay by default. A Monday charge arrives in your bank account Wednesday. A refund issued Tuesday might hit the same Wednesday payout, or it might hit Thursday's. Stripe's payout reports are detailed. Charges, fees, refunds, and disputes are all itemized. But you still need to match each report to the exact bank deposit by amount and date.

PayPal batches less predictably. Instant transfers, scheduled transfers, and holds can all create separate deposits. PayPal activity reports are available. But they require export configuration to get the level of detail you need for GL posting.

Square is cleaner on daily payouts, but complicates things across Square POS, Square Online, and gift card redemptions. Each can carry different revenue recognition and fee treatment.

Shopify Payments (and its underlying Stripe infrastructure) generates payouts that include sales, refunds, and fees from multiple Shopify channels. If the merchant also uses Shopify Capital or gift cards, those transactions flow through the same payout deposit.

None of them do anything wrong. They're just optimizing for their own systems, not yours. The reconciliation work is yours.

The Manual Process: Step by Step

Here's what reconciling a single Stripe payout looks like from start to finish. Same logic applies to other processors.

Step 1: Download the payout report. In Stripe Dashboard, go to Payments → Reports → Balance. Filter to the payout date range. Export as CSV. This gives you every transaction included in the payout: charge IDs, amounts, fees, net amounts, refunds, and disputes.

Step 2: Confirm the payout total matches your bank deposit. Add up the net column on the CSV. It should match the deposit in your bank feed. If it doesn't, you have a timing issue: a transaction from this payout period landed in the next, or a deposit you thought was separate is actually combined.

Step 3: Split the components. From the payout CSV, calculate:

  • Total gross charges
  • Total processing fees (Stripe calls these "stripe_fee")
  • Total refunds (net)
  • Total dispute adjustments
  • Any holds or reserve releases

Step 4: Create the journal entry.

1DR Stripe Clearing Account $3,847.92
2 CR Revenue / Sales $3,942.09
3 CR Refunds ($75.00)
4 DR Processing Fees Expense $94.17
5 DR Dispute Loss (if any) $0.00

The clearing account is the bridge. It holds the payout amount until the bank deposit hits and reconciles it out.

Step 5: Post the journal entry. Enter it in your GL dated to match the deposit. If you're on cash basis, date it to the deposit date. If you're on accrual, the revenue entries may need to be dated to the charge date, not the payout date. Know which method applies before you post.

Step 6: Zero out the clearing account. When the bank deposit hits, match it to the clearing account entry. The clearing account should net to zero after every reconciled payout.

A real $3,847.92 deposit from last Tuesday contained: 39 charges totaling $3,942.09, 2 refunds totaling $75.00, and $19.17 in Stripe fees. The journal entry above is exactly that math. Every number comes from the payout report.

The Five Reconciliation Components Every Payout Contains

Regardless of processor, every payout has the same five components. Each needs different GL treatment.

1. Gross charges The total revenue collected before any deductions. This is what you record as gross sales or revenue. Don't let the processor net this number out before you see it. You want gross, not net.

2. Processing fees The processor's cut. Stripe's standard rate is 2.9% + $0.30 per transaction. These are operating expenses, not a reduction of revenue. They get their own expense account, usually "Payment Processing Fees" or "Merchant Fees." Some bookkeepers book these as a contra-revenue account instead. Either is defensible as long as you're consistent. See how to classify payment processor fees for the tradeoffs.

3. Refunds Revenue you collected and gave back. Book these as a reduction of gross revenue, not as an expense. If the processor also returns the processing fee on a refund, note that. Some do, some don't. Stripe returns the $0.30 but not the 2.9%.

4. Chargebacks and disputes A chargeback is a forced refund initiated by the customer's bank, not by you. It carries an additional dispute fee (Stripe charges $15 per dispute). If you win the dispute, the $15 is returned. If you lose, it's not. These need their own GL account, separate from ordinary refunds, because the nature of the loss is different.

5. Platform holds and reserves Some processors hold a percentage of payouts as a rolling reserve, especially for newer accounts or higher-risk categories. This isn't lost money. It'll release eventually. But it needs to be tracked as an asset on the balance sheet, not as revenue. Missing this is how payment processor float creates balance sheet errors.

A table of how these components map across processors:

Component

Stripe

PayPal

Square

Shopify Payments

Gross charges

stripe_fee CSV col

Gross Amount

Gross Sales

Gross Sales

Processing fees

"stripe_fee"

Fee

Fees

Fees

Refunds

"refund" type rows

Refund

Refunds

Refunds

Disputes

"dispute" type rows

Dispute

Disputes

Disputes

Holds/Reserves

Rolling payout balance

Reserve

Reserve

Reserve

When the Manual Process Breaks Down

The manual process works. At low volume, with one processor, on a straightforward cash-basis client, it's fine.

It breaks when any of these hit:

Multiple processors. A client who uses Stripe for online sales, Square for in-person, and PayPal for international has three separate payout cycles, three different CSV formats, and three sets of timing differences. Each needs its own clearing account and its own reconciliation pass. Three times the work, three times the failure points.

High transaction volume. At 200+ transactions per month per processor, matching by hand stops being reliable. A $3,942.09 gross total from 39 transactions is easy to verify. A $48,203.17 gross total from 412 transactions is not. You're no longer catching errors. You're hoping none exist.

Mid-payout refunds. A refund issued one day before payout cutoff might land in this payout or the next, depending on timing. If you don't track which payout absorbed the refund, your clearing account carries a phantom balance forever.

Currency conversion. International processors convert foreign charges to USD before paying out, at their exchange rate, on their schedule. The USD deposit amount doesn't directly tie to the sum of transaction amounts in foreign currency. You need the processor's conversion detail, not the bank statement.

Delayed captures. Some businesses authorize a card at order placement but capture payment at shipment. If shipment is days later, the charge date and capture date differ, which matters for accrual-basis revenue recognition.

For a deeper look at the deposit-matching problem specifically, reconciling lump-sum deposits from payment processors covers the tactics in detail.

Three Signs It's Time to Automate Payment Reconciliation

You don't need to automate from day one. But three patterns tell you the manual process has reached its limit.

Sign 1: Your clearing account never zeros. A payment reconciliation clearing account should net to zero after every matched payout. If yours carries a persistent balance (even a small one), you have unmatched transactions. Either a payout was posted incorrectly, a refund wasn't captured, or a dispute landed in the wrong period. Finding the cause by hand gets harder as volume grows.

Sign 2: Month-end close takes two or more extra days per processor client. One processor client who runs 50 transactions per month adds maybe 30 minutes to close. A client running 400 transactions across three processors adds two full days. That's not a workflow problem. That's a capacity ceiling.

Sign 3: You're matching by amount and hoping. When you start reconciling by matching deposit totals instead of component-by-component, you've switched from verifying to assuming. Gross-in equals gross-out isn't reconciliation. It's an optimistic guess. The fees might be wrong. The refund timing might be off. A chargeback might be sitting unbooked.

If two of these three are true, the manual process is costing you more than whatever automation costs. The comparison between approaches is worth reading before you decide: automated vs. manual payment reconciliation.

What Automated Payment Reconciliation Looks Like

The mechanics vary by tool, but the correct approach does four things:

Payout-period grouping. Transactions are grouped by the payout they belong to, not by transaction date. The sum of transactions in each group ties exactly to the bank deposit. That's what makes the match reliable.

Automatic component separation. Gross charges, fees, refunds, and disputes are split into separate lines before any posting happens. You don't calculate this. It's read from the payout report directly.

Summary journal entries. Instead of one entry per transaction (which becomes unmanageable fast), one journal entry summarizes each payout period. Gross revenue. Total fees. Net refunds. The deposit amount posts to clear the clearing account. Done.

Exception flagging. When a transaction can't be matched (unusual fee, mid-cycle dispute, currency hold), it gets flagged with a reason, not silently absorbed. You review the exceptions. The routine work runs without you.

The outcome: a $3,847.92 Stripe deposit that used to take 45 minutes to reconcile takes a few minutes. Not because it's less work in theory, but because the repetitive matching is handled and you only see what needs judgment.

Some tools describe what they can do. This one shows you. The journal entry either matches the deposit or it doesn't. You check the exceptions. You move on.

For Stripe clients specifically, the Stripe deposits reconciliation guide goes deeper on Stripe-specific edge cases.

Getting Started

If you've been doing this manually and want to build a more reliable process, start here:

Pick your highest-volume processor client. That's where the manual process hurts most and where better habits pay back fastest.

Map your fee accounts. Decide now whether processing fees are a contra-revenue account or an operating expense. Write it down. Apply it consistently. You can't reconcile correctly if the account destination changes month to month.

Set up a dedicated clearing account per processor. "Stripe Clearing," "PayPal Clearing," and so on. These accounts should net to zero after every reconciliation cycle. If they don't, you have an error to find.

Download one payout report and work through it manually. Before you automate anything, do the steps above by hand once. Know what's in the CSV. Know how the components map to your GL. Automation built on misunderstanding produces the same errors faster.

The first month is the hardest. Not because the process is complicated, but because you're building the habit and catching the setup errors. Month two is faster. Month three, it's routine.

If you're managing payment reconciliation across multiple clients, get started with Growthy. Payout-period grouping and component separation run automatically. Worth seeing what it looks like before you decide whether to build the manual process out further.


Filed under: Payment Reconciliation · Bookkeeping Automation

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.