Skip to content

Private beta Early access is opening in small cohorts. Join the waitlist.

Private beta Early access is opening in small cohorts. Join the waitlist.

Guides

Getting your data out of Stripe

Getting your data out of Stripe

Five routes out, three traps that quietly truncate your history, and which route fits the job you actually have.

Stripe logo

Stripe holds your payment history and it will give all of it back to you. That part is not in question. What trips people up is that there are five different doors, they open onto different formats, and the one everyone finds first - the Dashboard’s Export button - has default settings that quietly hand you a fraction of your history. This guide walks all five routes, then matches them to jobs, so you pull the right data once instead of the wrong data three times.

The five routes out of Stripe

Most “how do I export from Stripe” searches end at the first route and never learn the other four exist. That is usually fine, and sometimes it costs a week.

Route

Format

Best for

Dashboard export

CSV

One-off pulls of payments, customers, subscriptions, invoices

Financial reports

CSV

Accounting: balance, payouts, fees, reconciliation

Sigma

CSV or JSON

Custom SQL queries, scheduled recurring exports

Data Pipeline

Warehouse tables / Parquet

Keeping a warehouse or data lake in sync, no code

The API

JSON

Anything programmatic, any listable object

The Dashboard export is the right first answer for most one-off questions: a CSV of payments, customers, subscriptions, or invoices, filtered the way the page you are on is filtered. The financial reports exist for a different job - they reconcile what happened to your money rather than list what your customers did, and accountants live in them. Sigma is a SQL environment inside the Dashboard that can schedule recurring exports in CSV or JSON. Data Pipeline syncs your whole account into a data warehouse or cloud storage on a schedule, without code. And the API returns JSON for every listable object, which is the route every integration ultimately uses.

One distinction is worth keeping in mind before choosing: some routes hand you a file, others keep a destination current. A CSV is a snapshot that is stale the moment it downloads. That is fine for closing a month, and wrong for powering a live dashboard. Choosing by format alone misses this; choose by whether the job is “answer a question now” or “stay in sync”.

The Dashboard CSV export, and its three traps

For a payments pull, the route is short: open the Payments page in the Dashboard, click Export, choose the date range and columns, and download the CSV. Customers export from the Customers page, subscriptions and invoices from theirs. The mechanics take a minute. The traps are in the defaults, and all three produce a file that looks complete and is not.

Trap one: the mode toggle. Stripe separates live data from test data completely, and the Dashboard exports whichever mode it is showing. A test-mode export looks plausible and contains nothing real. Check the toggle before you check anything else.

Trap two: the date range. The export dialog defaults to a recent window, not your full history. An export of the last 30 or 90 days can close one month, but it cannot tell you what normal looks like - no baseline, no seasonality, nothing to compare a movement against. History costs nothing to include. Set the range to all time, or to the month the business started, and let the file be big.

Trap three: the column set. Where Stripe offers a choice of columns, take all of them. The default set usually works, and the extra columns are where the useful detail lives - status to separate succeeded payments from failed ones, refund amounts so a refund reads as a refund and not a small payment, descriptions that often carry the product or plan name. Columns you did not export are questions you cannot answer later without exporting again.

A full-history export with all columns takes longer to prepare. Stripe builds large exports in the background, and the download can arrive as an emailed link rather than an immediate file. That is normal, not a failure.

Exporting Stripe data to JSON

The Dashboard will not give you JSON, and no setting changes that. Its exports are CSV. If the thing you are feeding wants JSON, you have two real routes and one conversion.

The first route is the API. Every Stripe object - charges, customers, subscriptions, invoices, payouts - is JSON at rest, and any listable resource can be paged through and saved exactly as returned. If a developer is anywhere near the task, this is the clean answer: the JSON is the authoritative shape of the data, not an export format applied to it. Two things to know before pulling your whole account this way: Stripe caps sustained API read volume, and its own documentation points bulk-export jobs at Data Pipeline instead of the list endpoints. For a one-time full pull on a small account the API is fine; as a recurring sync it is the wrong tool.

The second route is Sigma, Stripe’s SQL environment inside the Dashboard. Scheduled Sigma queries can deliver recurring exports in CSV or JSON - which makes it the no-code answer to “I need JSON on a schedule”, with the shape of the output defined by your query instead of by an export template.

The conversion: if all you have is a CSV and all you need is JSON, convert it. A spreadsheet’s save-as, a ten-line script, or any number of free converters will do it. There is no information in the JSON version the CSV did not carry; the reverse is not true, because API JSON nests objects that the CSV flattens or omits.

Getting Stripe data into Excel, Sheets, or a BI tool

The searches this section answers - export Stripe to Tableau, to Power BI, to a spreadsheet - are usually asking for a connector. So it is worth saying plainly: Stripe does not ship a native Tableau or Power BI connector. What it ships instead depends on whether you need a file or a feed.

For a file, the CSV route already covered is the whole answer. Excel and Google Sheets open CSVs directly, and for a monthly close or a one-off analysis that is all the integration you need. The failure mode is not getting the file in - it is treating a snapshot as if it stays current, and rebuilding the same export by hand every month.

For a feed, the supported route runs through a warehouse. Data Pipeline syncs your Stripe account to Snowflake, Amazon Redshift, Databricks, or BigQuery as a data share, or delivers Parquet files to Amazon S3, Google Cloud Storage, or Azure Blob Storage. After the initial load, it refreshes with a full load of your data on a recurring schedule, a few times a day. It is a paid product and it is the boring, correct answer for BI: Tableau, Power BI, Qlik and the rest all speak to those warehouses natively, so the “Stripe to Tableau” pipeline is really Stripe to warehouse, warehouse to Tableau. Stripe has also previewed a next generation of Data Pipeline that streams in real time and can land in a Google Sheet, but as of this writing it is in private preview, not something to plan around.

If a warehouse is more machinery than the job deserves, third-party ETL tools cover the same gap, with their own subscriptions and their own schema choices. They work; just notice that at that point you are maintaining a pipeline either way.

The exports built for accounting

Everything above answers “what did my customers do”. Accounting asks a different question - “what happened to my money” - and Stripe keeps a separate set of exports for it. Using the payments CSV to reconcile your bank account is the classic mistake in this corner: charge amounts are not deposit amounts, because fees come out and payouts batch multiple charges together.

The financial reports in the Dashboard’s Reporting section exist for exactly this: balance reports, payout reconciliation, fee breakdowns, each downloadable as CSV with selectable columns. If your books close on a schedule, the same reports are available programmatically through the Reports API, so the month-end pull can be a job rather than a person remembering.

One genuine gotcha hides in the formats, and it has burned real reconciliations: the CSV reports state amounts in major currency units - ten dollars is 10.00 - while the API states amounts in minor units, so the same ten dollars is 1000. A pipeline that mixes the two sources without converting will be off by a factor of a hundred and look plausible doing it, because every number is still a number. If figures from both routes ever meet in one spreadsheet, normalize the units first.

Which route for which job

The honest summary is that the right export was never a matter of taste - each job has one correct door, and most wasted afternoons come from walking through the wrong one. Once the file is on your desk the question changes from which export to which number, and what to compute from it is a different guide.

The job

The route

Answer a question about payments, this afternoon

Dashboard CSV, full history, all columns

Close the books, reconcile payouts and fees

Financial reports, or the Reports API on a schedule

Recurring custom report, defined shape

Sigma scheduled query, CSV or JSON

Keep a warehouse, lake, or BI tool current

Data Pipeline

Feed an application

The API

Move to another payment processor

A CSV cannot do it - see below

The last row needs its own paragraph, because “export all data from Stripe account” is sometimes a migration question wearing an export costume. Your saved card numbers never appear in any CSV, JSON, or warehouse table - full card numbers are PCI-restricted data, and no self-serve export includes them. Leaving Stripe does not strand them: Stripe’s migrations team transfers PAN data to another PCI-compliant processor as a supported, secure process, requested through their support flow, and the transfer must include the customer records alongside the payment data. Everything else - customers, charges, subscriptions, invoices - travels by the ordinary routes above.

Conclusion

An export answers “give me the data”. It does not answer the question that usually prompted it, which after a look at the file is some version of: revenue moved - who moved it? Which customers started paying, paid more, paid less, stopped paying? A CSV holds the evidence for that answer and none of the reasoning. If the number you are after is MRR specifically, the walk from this file to a defensible monthly series is its own guide.

That second half is the job Morevy exists for. It reads a payments export - the same full-history, all-columns file this guide told you to pull - and gives back the month as movements, with every figure traced to the rows behind it. If required information is missing from the export, it says so rather than guessing. And to be plain about scope: Morevy is not a warehouse, not a connector, and not a substitute for Data Pipeline when the job is keeping infrastructure in sync. It is for the person who has to explain the number.

If that is the job in front of you, the docs show exactly what Morevy reads from a Stripe export, and the recurring-revenue close guide covers what a disciplined month looks like once the data is out.

Related documentation: Exporting from Stripe and Export your payments.

References

[1] - https://docs.stripe.com/dashboard/basics
[2] - https://docs.stripe.com/reports/api
[3] - https://docs.stripe.com/data
[4] - https://docs.stripe.com/data/access-data-in-warehouse
[5] - https://docs.stripe.com/data/data-pipeline-next-gen
[6] - https://docs.stripe.com/data/schedule-queries
[7] - https://docs.stripe.com/rate-limits
[8] - https://docs.stripe.com/get-started/data-migrations

Can I export all of my Stripe data at once?

+

Not as one file. The Dashboard exports one object type at a time - payments, customers, subscriptions, invoices - each as its own CSV. For a complete account copy, Data Pipeline syncs everything to a data warehouse or cloud storage, and the API can page through every listable object as JSON.

Can I export Stripe data as JSON?

+

Not from the Dashboard, which only produces CSV. The API returns JSON for every object, and Sigma scheduled queries can deliver recurring exports in CSV or JSON. A one-off CSV can also simply be converted.

How far back can I export payments from Stripe?

+

Your full account history. The export dialog defaults to a recent window, so set the date range to all time deliberately. Large exports are prepared in the background and can arrive as an emailed download link.

Does Stripe connect directly to Tableau or Power BI?

+

No native connector exists. The supported path is Data Pipeline into a warehouse such as Snowflake, Redshift, Databricks, or BigQuery, which BI tools connect to natively. For one-off analysis, a CSV import does the job.

Can I take saved card numbers with me if I leave Stripe?

+

Not in any export you run yourself - full card numbers are PCI-restricted and never appear in CSVs or API responses. Stripe’s migrations team transfers card data directly to another PCI-compliant processor on request, together with the customer records.

Built by and with finance teams

Better decisions start with better context

Join Waitlist