If you're running a SaaS business, Stripe is where the numbers that matter live — charges, subscription revenue, failed payments, refunds. Power BI is where you'd want to visualize them. The problem is that Power BI has no official Stripe connector.
The Problem: Getting Stripe Data Into Power BI Is Harder Than It Should Be
Stripe's API is well-documented and returns exactly the data you need. The issue is on Power BI's side. The generic Web connector can call any REST endpoint, but it requires writing M code to attach authentication headers, can't follow Stripe's cursor-based pagination automatically, and runs into rate limit errors when Power BI re-requests data every time you apply a transformation in Power Query — because every preview refresh fires another API call.
The workarounds people reach for: write the M code yourself, push data through an Azure SQL database first, or pay for a third-party connector that requires an on-premises data gateway. None of these are something a revenue analyst should have to navigate just to see their own data.
Setup: Connect Stripe in Two Minutes
Open API Import from the Extensions menu in any Google Sheet and select Stripe from the connector list.
You need one thing from Stripe: a Restricted API Key with read access. Create one under Developers → API keys → Create restricted key, give it read permissions for the objects you need, and paste it into API Import. That's the entire setup.
Execution: Describe the Data You Want
In the API Import prompt, describe what you want in plain English:
"Get all charges from the last 30 days including charge ID, amount, currency, status, customer email, and created date."
API Import resolves the correct Stripe endpoint, adds the right date range parameters (created[gte] and created[lte]), and follows Stripe's cursor-based pagination automatically — pulling each page of up to 100 charges until all records are retrieved. You don't write a line of code or touch a pagination parameter.
The result is a flat table, one row per charge:
| Charge ID | Date | Amount | Currency | Status | Customer Email |
|---|---|---|---|---|---|
| ch_3PxK4… | 2026-04-30 | 4900 | usd | succeeded | alice@example.com |
| ch_3PxK5… | 2026-04-30 | 4900 | usd | succeeded | bob@example.com |
| ch_3PxK6… | 2026-04-30 | 4900 | usd | failed | carol@example.com |
Send It Directly to Power BI
Here's where API Import goes beyond a spreadsheet tool. In the Write to dropdown, select Power BI instead of Google Sheets.
You'll sign in with your Microsoft account once — a standard Azure AD OAuth flow. Then select your Workspace, the dataset name, and the table name. If the dataset doesn't exist yet, API Import creates it automatically and infers column types from your data: amounts become Double, dates become DateTime, IDs and status strings stay String.
Click Run. The rows land in your Power BI dataset in seconds. The data doesn't go through a Google Sheet — it moves from the Stripe API directly into Power BI.
For a rolling 30-day view, enable Clear before write so each run replaces the previous data. For a growing historical log, leave it off and each run appends to the existing table.
What You Can Build in Power BI
With charges in a dataset, the standard revenue visualizations take a few clicks to build.
Revenue over time — a line chart with date on the axis and sum of amount as the measure. Filter to status = succeeded to exclude failed charges from the total.
Failed charge rate — a card visual showing failed charges as a percentage of total attempts. For businesses processing high volumes, this number matters as much as gross revenue. A spike often signals a payment method issue or a fraud pattern worth investigating before it compounds.
Revenue by currency — a pie or treemap for businesses processing internationally. If USD and EUR volumes are growing at different rates, that shows up immediately in the breakdown.
None of these require Power Query transformations. The data arrives typed correctly and ready to drag onto a canvas.
Keeping the Data Current
Save the workflow, then open Schedule in API Import. Set a daily or weekly cadence, pick your timezone, and enable Clear before write if you want a rolling window. Every time the schedule fires, API Import fetches from Stripe and pushes fresh rows into Power BI. Any reports or dashboards built on that dataset update automatically — no manual export, no file transfer, no refresh button to remember.
This works for any API that Power BI can't connect to directly. Stripe is the clearest example because the gap is obvious and the data is business-critical, but the same workflow applies to Pipedrive, Notion, any internal REST API your team runs, or anything else that returns data over HTTP. If it has an API, API Import can get it into Power BI.
