Why the bank statement never lists each Stripe charge
Reconciling each Stripe charge directly to the bank is the wrong level of detail. Card transactions settle into the Stripe balance first. Stripe then creates a payout from available balance activity and sends a net amount to a bank account. The statement usually records only that deposit. The payout identifier and payout amount are the bridge from Stripe activity to cash.
Your reconciliation therefore has two related checks. First, confirm that the transactions assigned to a payout explain its net amount. Second, match that payout to the bank line. If your Stripe export already provides a reliable payout-level net, begin with the second check and retain the detailed balance activity as support. The same payout-to-bank order is described on the processor-agnostic payout reconciliation workflow; this page is the Stripe-specific export and fee path.
Control point: reconcile each Stripe account, connected account arrangement, settlement currency, and destination bank account separately.
Which Stripe export to use
From Stripe, export a payout report with payout identifier, created or arrival date, status, currency, and amount. When you need to explain composition, also export balance transactions or payout reconciliation detail. Confirm whether the account uses automatic or manual payouts and whether instant payouts occur, since those settings change expected timing and fees.
Include several business days on both sides of month end. Stripe can create a payout in one accounting period and the bank can post it in the next. Weekends, bank holidays, payout schedules, manual payouts, and account review can extend the ordinary delay. An overlap prevents a normal timing difference from appearing as missing.
Confirm that the Stripe payout destination matches the bank account under review. Businesses with multiple legal entities, currencies, or bank accounts can accidentally compare a valid payout with the wrong statement.
Which bank statement CSV to use
From the bank, export statement lines with posting date, description, debit, credit, and currency. Use the statement for the destination account that receives Stripe payouts. Keep the original export unchanged. If you need a working copy, preserve the source filename and record the export time.
Normalize the sign convention before matching. A positive Stripe payout should normally correspond to a bank credit, even if the bank CSV expresses credits as negative values in a signed amount column. Verify the bank export convention with a known deposit. Handle reversals as separate records rather than deleting both sides. Keep currencies separate. A USD payout and an EUR deposit are not an amount match, even if their numeric values happen to agree.
Payout ID vs charge ID
A charge ID identifies one card payment. A payout ID identifies the net transfer Stripe sent to your bank. Reconciliation to cash uses the payout ID and payout amount. Charge and balance-transaction detail explain the composition of that payout; they are not the bank match key.
Match exact currency and amount within the documented posting window. Use the bank description and Stripe payout identifier when either source exposes a useful reference. Remove confirmed pairs from the open list. Review repeated amounts carefully so date proximity does not create a false match.
Fee-netted vs gross
In the common setup, Stripe fees are already reflected in balance activity before the payout amount is created. The payout net should equal the bank deposit without subtracting those fees again. If the bank amount differs from the payout report, investigate instant payout fees, bank fees, currency conversion, a split deposit, or the wrong source column before treating the gap as a processing fee.
When Stripe performs conversion or sends a settlement currency different from the transaction currency, use the payout settlement amount and document the conversion evidence. Foreign exchange gains, losses, and fees require accounting treatment outside a simple amount match.
Preview free in the browser. $39 once to export.
Timing window, in-transit payouts, and reserves
Stripe dates may represent creation, expected arrival, or paid status, while the bank supplies a posting date. Choose the date that best represents payout initiation, retain the other dates as reference, and compare within a documented business-day window. Do not rewrite dates to make records match. Weekends, bank holidays, payout schedules, manual payouts, account review, and instant payouts can extend the ordinary delay.
A paid or pending payout near cutoff that has not reached the bank is a timing item, not an automatic error. Record payout ID, amount, initiation date, expected arrival, and destination, then carry it forward and confirm the bank posting next period. If status later becomes failed or canceled, reclassify instead of leaving the item labeled in transit.
Refunds and disputes can reduce the Stripe balance before a payout. A negative balance can delay a payout or cause later activity to fund prior obligations. Reserves and balance adjustments can also change the amount available. Use Stripe balance-transaction detail to support these movements. Do not assume every amount difference is a processing fee.
Unmatched Stripe rows
Common causes include normal settlement delay, refunds or disputes reducing balance before payout, reserves or adjustments, multiple payouts on one day versus a combined bank line, failed or returned payouts, wrong destination account, wrong currency, or an incomplete export range. Leave true unknowns open with evidence rather than plugging the difference. A CSV workflow cannot invent facts missing from the exports.
Manual or instant payout behavior can produce several deposits on one day. Conversely, bank feeds can combine or summarize postings. Preserve the individual Stripe payouts, list every bank component, and document any one-to-many relationship. The sum should agree by currency, and the grouping should be supported by dates and references rather than amount alone.
A failed payout should not be matched to an unrelated bank deposit. Trace the original payout status, any reversal, and the replacement payout. If the bank posted and returned the funds, retain both bank lines. This preserves the cash trail and avoids hiding a failed settlement inside a later successful batch.
Limit: a CSV workflow cannot confirm facts missing from the exports. When status, destination, or payout composition is unclear, return to Stripe and the bank for source evidence.
A completed file should show the Stripe payout identifier, settlement currency, payout amount, relevant Stripe date, bank posting date, bank description, match status, and exception explanation. Attach or retain the original reports. For open items, include an owner and next action. Compare the total of matched and open Stripe payouts with the source report, then compare matched and unexplained bank deposits with the statement. The goal is a supported zero difference after timing and other documented items, not a spreadsheet made to balance through plugs.
How to export the journal lines
After the Stripe and bank files are matched, the same $39 unlock that already includes the full ledger, print, and exceptions export also includes one generic journal-entry CSV. Each booked payout is a 5 to 7 line placeholder entry: bank posting date, a memo from the payout identifier and bank description, and placeholder accounts such as Stripe Clearing, Revenue, Processing Fees, and Operating Bank. The file is a pasteable CSV only. It is not a QuickBooks IIF or Xero template, and it does not connect to any bookkeeping system.
Debits equal credits for a payout when the source numbers support it. If they do not, ReconcileCSV does not add a plug. That payout is omitted from the booked set. Unmatched and in-transit rows are listed in a separate do-not-book section so they are not pasted as cleared entries. The file is a proposal, not a posting, and not accounting advice. Map the placeholder names to your chart of accounts before you enter anything.
For the close-packet checklist after this comparison, use the month-end close journal-entry CSV how-to.
When to use ReconcileCSV
Use ReconcileCSV when you repeatedly compare Stripe payout CSVs to bank statement CSVs, need deterministic match proposals, and want unmatched and ambiguous rows surfaced without building the match logic again. Spreadsheet-only is fine for a one-off with few rows and clear references. The preview is free. Full ledger, print, exception, and journal-entry exports are $39 once. CSV processing and matching run in the browser. There is no Stripe API. ReconcileCSV does not connect to Stripe, retrieve live payout status, or upload your files to a matching server.
ReconcileCSV does not post to your books, choose fee or reserve accounts, or repair incomplete exports. A preparer must review ambiguous matches and support every accounting conclusion with the original source data. If the job is only remapping column headers for an import template, that is column mapping (for example MapMyCSV), not payout matching.
FAQ
Why match Stripe payouts to the bank instead of matching each charge?
Stripe settles charges, refunds, fees, disputes, and adjustments into the Stripe balance first. A payout then sends a net amount to the bank. Matching each charge to a bank line is the wrong level of detail. Use the payout identifier and payout amount as the bridge, then keep balance-transaction detail as support for what made up the net.
How wide should the timing window be between Stripe payout date and bank posting date?
Include several business days on both sides of month end. Stripe can create a payout in one period while the bank posts it in the next. Weekends, bank holidays, payout schedules, manual payouts, account review, and instant payouts can extend the ordinary delay. Choose one date that represents payout initiation, keep the other dates as reference, and compare inside a documented business-day window. Do not rewrite dates to force a match.
Should the bank deposit equal the Stripe payout gross or the fee-netted amount?
In the common setup, Stripe fees are already reflected in balance activity before the payout amount is created. The payout net should equal the bank deposit without subtracting those fees again. If the bank amount differs from the payout report, investigate instant payout fees, bank fees, currency conversion, a split deposit, or the wrong source column before treating the gap as a processing fee.
What is the difference between a Stripe payout ID and a charge ID for reconciliation?
A charge ID identifies one card payment. A payout ID identifies the net transfer Stripe sent to your bank. Reconciliation to cash uses the payout ID and payout amount. Charge and balance-transaction detail explain the composition of that payout; they are not the bank match key.
What do I do with reserves, pending, or in-transit Stripe payouts?
A paid or pending payout near cutoff that has not reached the bank is a timing item, not an automatic error. Record payout ID, amount, initiation date, expected arrival, and destination, then carry it forward and confirm the bank posting next period. Reserves and balance adjustments can change available balance; support those with Stripe balance-transaction detail. If status later becomes failed or canceled, reclassify instead of leaving the item labeled in transit.
Which Stripe and bank CSV exports should I use?
From Stripe, export a payout report with payout identifier, created or arrival date, status, currency, and amount. When you need to explain composition, also export balance transactions or payout reconciliation detail. From the bank, export statement lines with posting date, description, debit, credit, and currency. Confirm the Stripe payout destination matches the bank account under review, and keep each Stripe account, currency, and destination bank separate.
Why do some Stripe payout rows stay unmatched after comparison?
Common causes include normal settlement delay, refunds or disputes reducing balance before payout, reserves or adjustments, multiple payouts on one day versus a combined bank line, failed or returned payouts, wrong destination account, wrong currency, or an incomplete export range. Leave true unknowns open with evidence rather than plugging the difference. A CSV workflow cannot invent facts missing from the exports.
Do my Stripe and bank files leave the browser in ReconcileCSV?
No. CSV parsing and matching run in the browser. ReconcileCSV does not connect to Stripe, pull live payout status, or upload your files to a matching server. The free preview shows proposed matches. A one-time $39 unlock adds full ledger, print, exception, and journal-entry CSV exports. You still review ambiguous rows and support accounting conclusions from the original source reports.
When should I use ReconcileCSV instead of spreadsheet-only matching?
Use ReconcileCSV when you repeatedly compare Stripe payout CSVs to bank statement CSVs, need deterministic match proposals, and want unmatched and ambiguous rows surfaced without building the match logic again. Spreadsheet-only is fine for a one-off with few rows and clear references. ReconcileCSV does not post to your books, choose fee or reserve accounts, or repair incomplete exports; it accelerates the comparison step.