Stripe Balance Transactions Sample CSV (Dirty + Clean)
A production-realistic Stripe Balance Transactions export (7,500 rows) covering accounting edge cases that break financial reporting. The critical Stripe quirk: fee sign convention inverts depending on transaction type. For charges, fee is negative; for refunds/disputes, fee becomes positive. Naive SUM aggregations double-count these reversals, silently inflating P&L by 10-20%. The 'dirty' version includes UTC-forced timestamps causing PST/EST date-cut mismatches, values stored in cents, unescaped commas in descriptions, and missing UTF-8 BOMs causing €/£ mojibake. Perfect for testing SaaS P&L report accuracy, QuickBooks reconciliation, and building Net Revenue dashboards in Looker Studio. Your financial data is processed 100% locally — nothing uploaded.
Live Interactive Preview
Live Data Preview
See how this messy stripe data looks before downloading. All processing happens locally in your browser.
💡 Pro Tip: Stripe's fee sign reversal just inflated your P&L by 15%. Drop this CSV into Stripe Formatter — auto-detect transaction types, correct fee signs, and convert cents to dollars for accurate net revenue.
⚡ Next Step: Curious how much you lost to cross-border fees last quarter? Run SQL on this CSV in your browser — zero database setup, zero uploads.
Data Schema Definition
| Column | Type | Description |
|---|---|---|
| id | string | Balance transaction ID (txn_xxx). Unique across all transaction types; use as primary key. |
| type | string | Enum: charge | refund | payout | adjustment | stripe_fee. Determines fee sign convention and GL mapping. |
| amount | integer | Gross amount in cents (5000 = $50.00). Always integer; divide by 100.0 for display. Never store as float. |
| fee | integer | ⚠️ CRITICAL: Sign INVERTS by type. Negative for charges (-150), POSITIVE for refunds (+150). Naive SUM double-counts reversals. |
| net | integer | amount + fee in cents. Pre-calculated by Stripe; use for reconciliation instead of recomputing. |
| created | timestamp | ⚠️ TRAP: Strict UTC. Causes date-cut mismatches for PST/EST businesses. Convert to local TZ before daily rollups. |
| description | string | Free-text metadata. Often contains unescaped commas breaking naive CSV parsers; ensure RFC 4180 quoting. |
| currency | string | ISO 4217 lowercase (usd, eur). Multi-currency accounts receive mixed values; group by currency before SUM. |
| source_id | string | Origin object ID (ch_xxx, re_xxx). Links to Charges/Refunds API; NULL for stripe_fee and payout types. |
| reporting_category | string | Stripe's GL category: charge | refund | dispute | transfer. More stable than 'type' for accounting mappings. |
⚠️ Highlighted rows contain known data traps. Review descriptions before building ETL pipelines.