Stripe

Stripe Balance Transactions Sample CSV (Dirty + Clean)

A production-realistic Stripe Balance Transactions export (7,500 rows) covering the exact accounting edge cases that break financial reporting. The critical Stripe quirk: fee sign convention inverts depending on transaction type. For charges, the fee is negative, but for refunds/disputes, the fee becomes positive. Naive SUM aggregations double-count these reversals, silently inflating your P&L. The 'dirty' version includes UTC-forced timestamps, 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.

This Stripe dataset contains realistic, fully anonymized records. We purposely engineered it to include common messy data patterns—such as unmapped columns, dirty formatting, and duplicate IDs—so you can safely test your processing pipelines without exposing real PII.

💡 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 NameData TypeDescription
idstringBalance transaction ID (txn_xxx)
typestringcharge, refund, payout, adjustment, or stripe_fee
amountintegerGross amount in cents (e.g., 5000 = $50.00)
feeintegerSign inverts on refunds! Negative for charges, positive for returns.
netintegeramount + fee (in cents)
createdtimestampStrict UTC time, causes PST/EST date-cut mismatches
descriptionstringOften contains unescaped commas breaking naive parsers

Recommended Tools

Related Workflows

How to Convert Stripe Payout Reports into QuickBooks Import Format

Stripe's balance detail export dumps charges, refunds, and fees into a flat CSV (gross, fee, net). None of this maps to QuickBooks Online's rigid 3-column schema (Date, Description, Amount). While Stripe admits IIF files only work for QBD, SaaS connectors like A2X charge $49/mo to bridge the gap. This workflow splits your transaction types into specific Chart of Accounts buckets (Revenue, Merchant Fees), converts ISO 8601 timestamps to MM/DD/YYYY, and generates a CSV that passes QuickBooks import validation with zero reconciliation errors.

How to Query Nested JSON API Responses with SQL Directly in the Browser

Your Stripe API returns `line_items` nested 4 levels deep. Segment's tracking plan exports `event_properties` as objects inside arrays. Pasting this into Excel gives you a useless column of `[object Object]`. Writing a Python script with `json_normalize()` takes 20 minutes for a single ad-hoc query. This workflow loads raw JSON straight into DuckDB-Wasm, auto-detects the schema, and lets you run SQL with `UNNEST()` to flatten arrays and CTEs for multi-step logic—entirely inside your browser tab.

Isolate True Net Processing Fees from Stripe Balance Transactions

Stripe's Payouts export only shows the lump-sum deposit hitting your bank account — it tells you nothing about the per-transaction fee composition. To calculate your real effective processing rate, you need the Balance_Transactions.csv file, but this export dumps charges, refunds, adjustments, dispute reversals, and Stripe billing fees into a single flat table with no hierarchy. The Fee column contains negative values for processing fees, but refund-related fee reversals and dispute charges are interspersed without clear grouping, making a simple SUM() wildly inaccurate. This workflow filters the Type column to isolate charge, payment, refund, and dispute rows separately, recalculates the net fee per original transaction by grouping on Source ID, and produces a clean summary showing your true blended rate.

Convert Stripe UTC Export Timestamps to Local Tax Period

Stripe hardcodes all CSV export timestamps to UTC with no option to select your local timezone. For a business operating in US Pacific Time (UTC-8), a customer purchase completed at 5:30 PM PST on March 31st appears as 2024-04-01 01:30:00 in the Created (UTC) column of your Stripe export. This single timestamp shift pushes that revenue into Q2 for tax purposes, creating a discrepancy between your Stripe revenue total and your QuickBooks sales ledger. This SOP detects all timestamp columns (Created (UTC), Available On (UTC)), applies a configurable timezone offset, and rewrites the date in YYYY-MM-DD format aligned to your state's tax jurisdiction.

Sample Datasets

Zendesk Tickets Export Sample CSV (Dirty + Clean)

A production-realistic Zendesk support ticket export (5,000 rows) engineered to expose the exact edge cases that break naive CSV parsers and ETL pipelines. The critical Zendesk quirk: 'Description' and 'Comments' fields contain embedded CRLF (\r\n) line breaks from customer emails. Parsers that don't respect RFC 4180 quoting rules will split a single ticket into multiple invalid records. The 'dirty' version includes embedded newlines, null assignees, and UTF-8 characters without a BOM header. Perfect for testing ETL robustness (Fivetran, Python), RFC 4180 compliance, and helpdesk migrations (to Freshdesk/Intercom). Your support data is processed 100% locally — nothing uploaded.

GA4 Raw Event Data Sample CSV (Dirty + Clean)

A production-realistic Google Analytics 4 event export (15,000 rows) mirroring the BigQuery export schema. The GA4 quirk: event_timestamp is stored in microseconds (16-digit integers), not milliseconds. Data engineers who treat these as Unix epoch milliseconds will shift all event dates to the year 53,000+, destroying time-series analysis. The 'dirty' version includes microsecond timestamps, null user_pseudo_id rows (bot traffic/consent denied), and event_params encoded as nested JSON strings that break flat-file parsers. Perfect for testing analytics engineering workflows, dbt model validation, and Looker Studio dashboards. Process everything locally — your analytics data never leaves your browser.

Google Ads Keyword Report Sample CSV (Dirty + Clean)

A production-realistic Google Ads keyword performance export (4,800 rows) covering the structural issues that silently destroy automated CSV parsers. The Google Ads quirk: the CSV prepends two metadata rows before the actual header. Row 1 contains the report title and Row 2 the date range. When pandas reads this with pd.read_csv(), it treats the title as the header, causing every df['Clicks'] reference to throw a KeyError unless you use skiprows=2. The 'dirty' version includes this metadata header/footer, 1,120 zero-impression zombie keywords, Cost values formatted with $ symbols, and special characters (+, []) in keyword text. Perfect for testing ETL parser robustness (Supermetrics, Funnel.io) and account pruning workflows. Process everything locally — your PPC data never leaves your browser.