Skip to main content

How to Export All Data From Your Stripe Account

9 min readPipeSheets Team

There is no single button in Stripe that exports your entire account, which is why 'export all data from Stripe' is such a common search. What Stripe gives you instead is a set of export surfaces that each cover a slice of your data: CSV exports from the Dashboard lists (payments, balance activity, payouts, customers), downloadable reports built for reconciliation, Sigma for custom SQL queries, Data Pipeline for continuous warehouse sync, and the API for programmatic access to your full history. Combined, they can get every record out. The trick is knowing which surface holds what, because exporting from the wrong one leaves you re-doing the job.

The short answer, if you just want to act: for a one-off export of transactions, use the Export button on the relevant Dashboard list with a date range covering your account's lifetime. For bookkeeping and matching bank deposits, use the balance and payout reports rather than the payments list. For a complete, structured copy of everything, including objects the Dashboard never exports, you need the API. The rest of this guide walks through each surface, what its files actually contain, and the cleanup the CSVs need before an accounting tool will accept them.

The five ways to get data out of Stripe

Every export surface Stripe offers, at a glance:

  • Dashboard CSV exports: an Export button on list pages like Payments, Balance activity, Payouts, and Customers. Filterable by date range, with column selection on most lists. Best for one-off pulls.
  • Reports (including payout reconciliation): pre-built downloadable reports in the Dashboard's reporting section, designed for accounting. Best for closing the books and matching bank deposits.
  • Sigma: Stripe's paid SQL environment. You query your own Stripe data directly and export the results. Best for custom cuts the standard exports cannot produce.
  • Data Pipeline: a paid product that syncs your Stripe data to your own data warehouse on an ongoing basis. Best for teams that already run analytics on a warehouse.
  • The API: paginated list endpoints for every object type. The only surface that guarantees complete history across all objects. Best for migration and full backup, but requires code or a developer.

Dashboard CSV exports: the fast path

Most Dashboard list pages have an Export button. Open the Payments page, click Export, choose a date range and (on most lists) which columns to include, and Stripe generates a CSV. Small exports download immediately; large ones are emailed to you as a link when ready. The same pattern works on the Balance activity page, the Payouts page, and the Customers page. For 'all data', set the date range to cover the full life of the account rather than the default recent window, which is the single most common way people end up with a partial export without noticing.

Payments export vs. balance activity export

These two look similar and are constantly confused. The payments export lists charges: who paid, how much, when, with what status, plus card metadata and any custom metadata you attached. The balance activity export lists every movement on your Stripe balance: charges, refunds, fees, adjustments, and payouts, with gross, fee, and net columns per row. If you are doing bookkeeping, you almost always want balance activity, because it is the only view that shows Stripe's fees as explicit amounts you can post to an expense account. The payments export shows what customers paid you, not what you actually kept.

The timezone gotcha: exports are UTC

Stripe stores every timestamp in UTC, and exported timestamps generally come out in UTC unless you explicitly choose otherwise. If your business runs on US Pacific time, a charge at 6pm on March 31 local time is an April 1 charge in UTC. Export 'March' and your totals will not match the Dashboard view or your month-end expectations, off by exactly the transactions that happened in the overlap window. Before you reconcile a month or a quarter, decide which timezone defines your accounting day, and either set it during export where the option exists or convert the timestamp column afterward. If a month's export is mysteriously off by a handful of transactions, timezone is the first suspect.

The payout reconciliation report

The number that lands in your bank account is a payout: a batch of charges minus refunds minus fees, settled together. The payments export cannot explain a bank deposit, because no single charge equals the deposit amount. The payout reconciliation report exists for exactly this: it breaks each payout into the individual charges, refunds, and fees that compose it, so you can tie the deposit on your bank statement back to specific transactions. If your task is 'make the books match the bank', this report plus the balance activity export is the pairing you want. It is also the antidote to the classic double-counting problem where both gross charges and bank deposits get recorded as income.

Sigma: custom queries, exportable results

Sigma is Stripe's paid analytics product: a SQL interface over your own Stripe data. Where the standard exports give you fixed shapes, Sigma lets you write the exact query you need, such as revenue by metadata field, refund rates by product, or charges joined to customers, and export the result as a CSV. You can also schedule queries to run on a recurring basis. Sigma is overkill for a one-time export, but if you keep hand-massaging the standard CSVs into the same shape every month, a saved Sigma query produces that shape directly and is usually worth the cost.

Data Pipeline: continuous sync to your warehouse

Data Pipeline is for teams that want Stripe data living alongside the rest of their analytics. Instead of exporting files, it delivers your Stripe data into your own data warehouse and keeps it updated. There are no CSVs to babysit and no date-range windows to remember, and your analysts query Stripe data with the same tools they use for everything else. It is infrastructure rather than an export, so it is the wrong answer for 'I need my data out this afternoon', and the right one for 'I never want to run a manual export again'.

The API: the only truly complete export

Every Stripe object type, including charges, customers, invoices, subscriptions, disputes, balance transactions, and payouts, is available through paginated list endpoints in the API. This is the only surface that guarantees you can retrieve your complete history across every object type, including relationships the CSV exports flatten away, like which subscription generated which invoice. The cost is that it requires code: a script that pages through each endpoint and writes the results out. For account migration or a genuine full backup, the API is the correct tool; a Dashboard CSV is a report, not a backup. One critical detail: API amounts are integers in the smallest currency unit, so 2999 means $29.99. Sum a column of API amounts without dividing by 100 and every total will be wrong by two orders of magnitude.

Which export for which job

Match the surface to the task:

  • Taxes: balance activity export for the tax year, in the timezone your accountant uses, plus the payout reconciliation report so deposits tie to the bank statement.
  • Monthly bookkeeping: balance activity export (gross, fee, net) monthly, with payouts recorded as transfers rather than income.
  • Migrating away from Stripe: API export of customers, subscriptions, and payment history. Note that raw card numbers are never exportable by design; Stripe supports migrating card data directly to another PCI-compliant processor on request.
  • Backup and audit trail: API export of every object type on a schedule, or Data Pipeline if you have a warehouse.
  • One-off analysis: Dashboard export of the relevant list, or a Sigma query if the standard columns cannot answer the question.

Why the exported CSVs are not ready for your accounting tool

Getting the data out is half the job. Stripe's exports are faithful to Stripe's internal model, which is not the model QuickBooks, Xero, or your spreadsheet expects. Three problems show up in almost every export: amounts that need unit conversion (especially API-derived data in cents), timestamps in UTC and ISO format that your accounting tool cannot parse as dates, and a long tail of columns you do not need, including one column per metadata key you ever attached to a charge.

What a raw export row looks like:

  id,created,amount,fee,net,currency,metadata[order_id],metadata[campaign]
  txn_1AbC...,2026-08-31T23:14:09Z,4999,175,4824,usd,ORD-1042,summer-sale

What your bookkeeping import needs:

  date,description,gross,fee,net
  08/31/2026,ORD-1042,49.99,1.75,48.24

Different column names, cents vs dollars, UTC ISO timestamp vs local
date, and two metadata columns that need renaming or dropping.

This gap is exactly what PipeSheets covers. Upload the Stripe CSV, drop the metadata and ID columns you do not need, rename the survivors to the headers your accounting tool expects, reorder them to match its template, and normalize the headers, with a live preview before you download. Save the pipeline once and re-run it on every future export, since Stripe's format will be the same next month. The free tier handles files up to 25MB, which covers a typical year of exports for most businesses.

Two cleanup steps still belong in your spreadsheet rather than a column tool: converting cents to dollars (divide the amount columns by 100) and shifting UTC timestamps to your local accounting day. Do those in Excel or Sheets, run the structural cleanup (drop, rename, reorder, trim) through a saved pipeline, and the export becomes a file your accounting tool imports on the first try.

A full-export checklist

Before you call the export done:

  • Date range covers the account's full lifetime, not the default recent window.
  • You exported balance activity (gross, fee, net), not just the payments list, if this is for bookkeeping.
  • You know which timezone the timestamps are in, and it matches your accounting day.
  • Amount columns are in the unit you think they are; check one known transaction against the Dashboard.
  • Payouts are exported separately so bank deposits can be matched as transfers.
  • For migration or backup, you used the API, since Dashboard CSVs are reports and do not cover every object type.

Stripe's export story is fragmented but complete: Dashboard CSVs for quick pulls, reports for reconciliation, Sigma for custom questions, Data Pipeline for continuous sync, and the API for everything. Pick the surface that matches the job, watch the timezone and the units, and budget ten minutes for cleanup, and 'export all my Stripe data' goes from a vague worry to a repeatable routine.

Try the automated solution

PipeSheets can fix these issues automatically. Clean your first file free.

Clean Your CSV