How to Read a Stripe Balance Transaction CSV

The Payout Reconciliation (Itemized) CSV from Stripe gives you one row per balance transaction and one row for the payout itself. Once you know the key columns and the sign convention, you can prove a payout equals its component transactions.

The short answer: group rows by their automatic_payout_id, then add the Net column for the component rows. The total equals the payout amount and your bank deposit. Each row’s Net is its Gross minus its Fee.

The columns that matter

The itemized report is built on Stripe’s balance transactions. The columns you need most are:

The sign convention

Money in is positive; money out is negative. Charges have a positive gross. Refunds and disputes have a negative gross, and disputes also carry a positive fee. The payout row has a negative net — it is the total being moved out of your Stripe balance to your bank, not a component to be summed.

A real row example

One payout (po_9Q) and its four component rows (simplified):

Itemized Payout reconciliation rows for po_9Q
balance_transaction_id category gross fee net payout
txn_1Acharge120.003.78116.22po_9Q
txn_1Bcharge84.002.7481.26po_9Q
txn_1Crefund−40.000.00−40.00po_9Q
txn_1Dfee0.000.30−0.30po_9Q
txn_1Epayout−157.180.00−157.18po_9Q
Sum of net of components (txn_1A–1D)157.18

116.22 + 81.26 − 40.00 − 0.30 = 157.18. The payout (txn_1E) is −$157.18; your bank should show a +$157.18 deposit. The payout row is the total you are checking — exclude it from the sum.

Step-by-step: read and reconcile the file

  1. Export the itemized report

    In the Dashboard go to Reporting → Reports, choose Payout reconciliation, pick a date range, and download the Itemized CSV.

  2. Keep IDs and amounts clean

    Open it in a spreadsheet but store balance_transaction_id and automatic_payout_id as text. Don’t let the tool convert them to numbers or scientific notation, and keep gross / fee / net as real numbers.

  3. Group by automatic_payout_id

    Filter to one payout at a time. Every component row shares that payout’s id.

  4. Sum the Net column

    Add net for the component rows (exclude the payout row). The sum should equal the payout amount.

  5. Match to the bank by available_on

    Use the settlement (available_on) date, not the created date, when comparing to your bank deposit. If you settle in multiple currencies, watch for FX conversion before comparing.

Common mistakes

How Stripe Money Detective can help. Stripe Money Detective imports the Payout Reconciliation (Itemized) CSV and groups every balance transaction by reporting category, so you can see the payout’s composition and reconciliation status at a glance. It flags duplicate balance transaction IDs instead of double-counting them and marks a payout Unverified when a row is missing or cannot be parsed. It supports automatic payouts in a single currency and runs entirely on your Mac — no Stripe connection, no upload. It reads the file for you; it is not a substitute for accounting or tax review. See how it works.

Related official resources