How to Convert Stripe Payout and Transaction CSVs to Excel
To convert a Stripe CSV to Excel, download the payout or transaction export from your Stripe dashboard, open it in Excel with Data > From Text/CSV (or run it through the free CSV to Excel converter first), fix the amount and date columns, and reconcile each payout to the matching bank deposit. The whole process takes about ten minutes once you know which export to download and how to handle refunds, fees, and currency codes.
Step 1: Export the Right CSV from Stripe
Stripe offers several exports, and picking the wrong one is the most common reason reconciliations fall apart. In the Stripe dashboard, go to Balance, then choose the export that matches your goal:
- Payouts export — one row per payout sent to your bank, with the payout ID, arrival date, and total amount. Use this when you want to confirm "did this payout land in my bank?"
- Transactions export — one row per charge, refund, fee, or adjustment, with the payout ID each transaction belongs to. Use this when you want to see what makes up a payout.
- Balance history export — every movement in your Stripe balance. Useful for auditors, overkill for monthly bookkeeping.
Most small businesses need the first two. Export payouts for the period you are reconciling, then export the transactions for the same period. Keep the exports as raw CSVs — do not open and re-save them in Excel before you have a clean import workflow, or you will silently change date and number formatting.
If you run several businesses or currencies through one account, filter the export by currency and account before downloading. Reconciling a mixed-currency export in one sheet is asking for trouble.
Step 2: Open the CSV in Excel the Right Way
Double-clicking a CSV lets Excel guess the format, and Excel's guesses are often wrong for financial data: dates flip to US order, amounts with commas become text, and leading zeros in IDs vanish. Import instead:
- In Excel, go to Data > From Text/CSV.
- Select your Stripe export and click Import.
- In the preview window, check the delimiter (comma) and set the file origin to UTF-8 if names contain accented characters.
- Click Load to drop it into a new sheet.
Name the sheet clearly — Payouts_Mar and Transactions_Mar, for example. A workbook with two tabs named "Sheet1" and "Sheet2" is a reconciliation accident waiting to happen. (If you prefer the fastest route, the CSV to Excel converter on this site produces a clean .xlsx you can then import this way.)
Step 3: Fix Amounts and Currency Codes
Stripe exports are financial data, and financial data is where CSV imports break. Two things to fix before you trust any total:
Amounts with commas. Depending on your account locale, amounts can arrive with comma thousand separators (1,234.56). Excel may read those as text, which means your SUM formulas silently skip them. Convert the column: select it, Data > Text to Columns, choose Delimited, click through without selecting any delimiter, and set the column format to General. Or use =VALUE(SUBSTITUTE(A2,",","")) in a helper column.
Currency codes. Stripe includes a currency column (usd, eur, gbp). Do not mix currencies in one total — a payout sheet with USD and EUR rows summed together is fiction. Filter or split by currency first, then sum each currency separately. For formatting help, the currency formatting guide shows how to make Excel display each code's symbol correctly.
Negative rows. Refunds, disputes, and fee adjustments appear as negative amounts. That is correct — do not delete them or take their absolute value. They are part of the payout math: charges minus refunds minus fees equals the payout total.
Date columns. Stripe dates export in a sortable timestamp format, but Excel may treat them as text. Convert with the date tools in the date format fix guide so sorting and month grouping work.
Step 4: Understand the Key Columns
Stripe's export columns are terse. Here is what each one means for your reconciliation:
| Column | What it means | How you use it |
|---|---|---|
| Payout ID | The payout's unique identifier | Matches transactions to their payout |
| Amount | The money moved (charges positive, refunds/fees negative) | Sum per payout to verify the total |
| Currency | ISO code like usd, eur | Filter before summing — never mix |
| Created / Arrival date | When the transaction happened / when the bank got it | Reconcile timing differences |
| Description / Type | charge, refund, fee, payout | Filter refunds out of revenue totals |
| Customer / Charge ID | Who paid and which charge | Drill into a disputed row |
The critical relationship is Payout ID: every transaction row carries the payout ID it was bundled into. That is the key you join on.
Step 5: Reconcile Payouts to Bank Deposits
This is the step that actually matters: proving each Stripe payout equals a bank deposit. Here is the workflow:
- On the transactions sheet, create a pivot table (Insert > PivotTable) with Payout ID in Rows and Sum of Amount in Values. This gives you the computed total of every payout.
- On the payouts sheet, you already have Stripe's stated payout total per payout ID.
- Add a comparison column:
=computed_total - stated_total. Every row should be zero (or within a cent of rounding). - Now compare each stated payout total and arrival date against your actual bank statement. The arrival date column tells you when to expect the deposit — usually 2–7 business days after creation, depending on your country and payout schedule.
Where people get confused: the payout total is net. If you charged $1,000, refunded $100, and paid $32.90 in fees, the payout is $867.10 — not $1,000. Comparing the payout to gross sales will never match. Compare net to net.
For a month with many payouts, use SUMIFS instead of a pivot table:
=SUMIFS(Transactions!D:D, Transactions!B:B, A2, Transactions!C:C, "usd")
where column D is amount, B is payout ID, C is currency, and A2 is the payout you are checking. Wrap it in an IF to flag mismatches:
=IF(ABS(SUMIFS(...)-B2)>0.01, "CHECK", "OK")
Step 6: Build a Monthly Reconciliation Routine
One-off reconciliation is fine; a monthly routine is what keeps your books clean. Save your workbook as a template (the Excel template guide covers reusable layouts) and repeat this each month:
- Export the new month's payouts and transactions CSVs.
- Import them into fresh sheets in the template workbook.
- Refresh the pivot table or let the SUMIFS formulas pick up the new rows.
- Check the comparison column for anything that is not "OK".
- Investigate non-zero rows immediately — small discrepancies become unfindable three months later.
- Archive the month's sheet and move on.
If you hand your books to an accountant, this workbook is gold: every payout tied to its transactions, every transaction tied to a bank deposit, all in one file. For the bookkeeping that follows, the QuickBooks import guide picks up where reconciliation ends.
When Payouts Will Not Match: Troubleshooting
The totals are off by a few cents. Rounding. Stripe rounds per transaction; your SUM rounds once. A cent or two of drift across dozens of transactions is normal. Flag anything over a dollar.
A payout ID appears in transactions but not in payouts. You exported the transactions for a wider date range than the payouts. Align the export ranges and re-import.
Amounts are text and formulas return zero. The comma-thousand-separator problem from Step 3. Fix the column type before summing — a SUM over text cells returns 0 with no error, which is the most dangerous kind of wrong.
Dates will not sort chronologically. They imported as text. Convert to real dates before sorting or grouping by month.
Duplicate rows. Downloading overlapping date ranges creates duplicates. Remove them with Data > Remove Duplicates on the payout ID + amount + date combination.
The bank deposit is there but the amount differs. Check for a payout that spans a month boundary — part of its transactions may sit in next month's export. Also check whether your bank deducts its own receiving fee.
Everything matches except one refund. Refunds issued near the payout cutoff land in the next payout, not the one you are checking. Search the refund's charge ID across both months' transaction sheets before assuming an error.
FAQ
Should I reconcile gross sales or net payouts?
Net payouts. Your bank receives the net amount after refunds and fees, so that is what must match. Track gross sales separately for revenue reporting — they answer different questions.
How do I handle multiple currencies?
Reconcile each currency independently. A EUR payout and a USD payout are separate bank deposits in separate accounts; never sum across the currency column.
My accountant wants the raw data. What do I send?
Send the original unmodified CSV exports plus your reconciliation workbook. Never send only the workbook — the raw exports are the audit trail.
Can I automate this monthly?
Yes. Power Query can re-run the whole import and transform chain with one refresh when next month's CSVs arrive, and a recorded macro can handle the export-download steps you repeat by hand.
Do I need to reconcile every single payout?
Yes, but not by hand. Once your SUMIFS or pivot-table comparison column is built, reconciling is just scanning for rows that are not "OK". The setup takes an hour; each month after that takes minutes.
What if my payouts arrive in a different month than the transactions?
Normal. Use the arrival date column, not the creation date, when matching to bank deposits. A payout created March 30 that arrives April 2 belongs to April's bank reconciliation, even though its transactions are March sales.
Reconciling Across Multiple Stripe Accounts and Currencies
If you run more than one business — or one business in several currencies — through Stripe, a single reconciliation sheet turns into a mess. Separate the concerns:
- One workbook per Stripe account. Each account has its own payout schedule and bank destination. Mixing accounts in one sheet means every formula needs an account filter, and one filter mistake corrupts everything.
- One sheet per currency within the workbook. USD payouts reconcile against your USD bank account; EUR payouts against your EUR account. Keep them on separate sheets (
Payouts_USD,Payouts_EUR) so a SUM can never accidentally cross currencies. - A summary sheet on top. Once each currency sheet reconciles cleanly, a summary sheet pulls the totals together with simple
=SUM(Payouts_USD!B:B)references for reporting. The summary is for reading; the currency sheets are for proving.
For currency conversion in reports, never convert inside the reconciliation itself — reconcile in the original currency, then convert the verified totals using the exchange rate your bank actually applied (visible on the bank statement), not a Google rate from the transaction date. The difference between the two is a real FX gain or loss your accountant needs to see.
60-Second Checklist
- Right export downloaded: payouts + transactions for the same period and currency.
- Imported via Data > From Text/CSV, not double-clicked.
- Amount column is numeric (no text values), currencies separated.
- Refunds kept as negative rows, not deleted.
- Pivot or SUMIFS ties every transaction total to its payout ID.
- Each payout matched to a bank deposit by amount and arrival date.
- Workbook saved as a reusable monthly template.