How to Analyze Your Stripe Revenue: Beyond the Dashboard
By MCP Analytics Team | Published , updated
You open Stripe, click on the Revenue section, and see a number. Gross volume is up from last month. That feels good. But then the questions start. How much of that is new revenue versus expansions from existing customers? What's your actual churn rate? Is your average revenue per user going up or down? How much revenue did you lose to failed payments last month?
A payment total shows that money moved. It does not tell you whether customers are staying.
This guide covers what Stripe's dashboard shows, what it may be missing, the revenue metrics you should be tracking, and how to get the analysis you need without building a data pipeline or writing API code.
Worked Example (Simulated): Did Current Customers Cover the Lost Revenue?
Question: Did current customers add enough MRR to cover this month's lost revenue? MRR means monthly income from plans that renew.
Inputs: Made-up data, seed 17. The script draws starting MRR for 12 customers at random (100, 150 or 200 each). Only the starting plan sizes are random. Which customers leave, pay less or pay more, and the new MRR of 300, are typed in. No Stripe data is used.
Method: Net revenue churn compares MRR lost when customers leave or pay less with MRR gained when customers pay more. Divide the difference by starting MRR. This is the formula used on this page. Net new MRR is the total MRR change, and it also counts new and returning customers.
import random
seed = 17
rng = random.Random(seed)
starting_mrr_by_customer = [rng.choice([100, 150, 200]) for _ in range(12)]
starting_mrr = sum(starting_mrr_by_customer)
churned_mrr = sum(starting_mrr_by_customer[:2])
contraction_mrr = starting_mrr_by_customer[2] // 10
expansion_mrr = starting_mrr_by_customer[3] * 3
new_mrr = 300
reactivation_mrr = 0
net_new_mrr = (
new_mrr + expansion_mrr + reactivation_mrr
- contraction_mrr - churned_mrr
)
net_revenue_churn = (
churned_mrr + contraction_mrr - expansion_mrr
) / starting_mrr
ending_mrr = starting_mrr + net_new_mrr
print(f"Seed: {seed}")
print(f"Starting customers: {len(starting_mrr_by_customer)}")
print(f"Starting MRR: ${starting_mrr}")
print(f"Churned MRR: ${churned_mrr}")
print(f"Contraction MRR: ${contraction_mrr}")
print(f"Expansion MRR: ${expansion_mrr}")
print(f"New MRR: ${new_mrr}")
print(f"Reactivation MRR: ${reactivation_mrr}")
print(f"Net new MRR: ${net_new_mrr}")
print(f"Net revenue churn: {net_revenue_churn:.1%}")
print(f"Ending MRR: ${ending_mrr}")
Printed output:
Seed: 17
Starting customers: 12
Starting MRR: $1950
Churned MRR: $350
Contraction MRR: $15
Expansion MRR: $450
New MRR: $300
Reactivation MRR: $0
Net new MRR: $385
Net revenue churn: -4.4%
Ending MRR: $2335
Result: In this made-up set, the $450 added by a customer who pays more is larger than the $350 lost to customers who left plus the $15 lost to one who paid less. Net revenue churn is (350 + 15 - 450) / 1,950, or -4.4%. New MRR of $300 is not part of this rate, but it is part of net new MRR of $385. After all changes, MRR is $2,335 ($1,950 plus $385).
Limit: This is a small made-up set with typed-in events. It shows the math. It cannot show what will happen in a real Stripe account.
What Stripe's Dashboard Shows (And What It Doesn't)
Stripe's built-in reporting covers payments. It answers "what happened?" but may not answer "what does it mean?" Here's the breakdown.
Try the free churn tool.
What You Get
- Gross volume: Total payment volume processed through your account
- Net volume: Gross minus refunds and disputes
- Successful payments: Count and amount of completed charges
- Refund totals: Aggregate refund amounts
- Basic time-series charts: Daily or monthly payment volume over time
- Subscription overview: Active subscriber count and MRR (Stripe Billing users only)
What's Missing
This is where the questions start. These are things the dashboard may not show without extra work:
- MRR decomposition: You can't see how much of your monthly recurring revenue comes from new customers versus upgrades versus reactivations. You may not see how much you lost to downgrades versus cancellations. This breakdown helps show the quality of growth.
- Cohort retention: Do customers who signed up in January retain better than those from March? The dashboard may not show it. Cohort analysis reveals whether your product is getting stickier or leakier over time.
- ARPU trends: Average Revenue Per User over time shows whether you're successfully moving customers to higher plans or whether discounting is eroding your per-customer economics.
- Revenue concentration risk: What share of your revenue comes from your top 10 customers? If one large customer churns, how bad is the damage? Individual customer payments are visible, but a concentration view may not be.
- Churn analysis by segment: Your overall churn rate is a blended number. Do customers on a low-priced plan churn at a different rate than customers on a high-priced plan? The answer can change your strategy.
- Seasonal patterns: Is that dip in August a problem or a normal seasonal pattern? Time-series decomposition separates trend, seasonality, and noise. The dashboard gives you a line chart.
If you use Stripe Billing, the dashboard shows an MRR figure. Check how it treats free periods, metered billing and revenue recognition timing before you rely on it. For financial reporting or investor updates, calculate MRR from the underlying transaction data.
The Revenue Metrics to Track
Whether you're a SaaS business, a subscription box, or a marketplace, these are the metrics your Stripe data can power if you extract and analyze it properly.
Monthly Recurring Revenue (MRR) Components
Total MRR hides how it was made. The composition shows more:
| Component | Definition | Why It Matters |
|---|---|---|
| New MRR | Revenue from first-time subscribers | Shows revenue from new customers |
| Expansion MRR | Revenue increase from upgrades and add-ons | Shows product value realization |
| Contraction MRR | Revenue decrease from downgrades | Shows revenue lost to downgrades |
| Churned MRR | Revenue lost to cancellations | Shows revenue lost to cancellations |
| Reactivation MRR | Revenue from returning customers | Shows revenue won back |
Net New MRR = New + Expansion + Reactivation - Contraction - Churned. Two businesses can have the same net new MRR and a very different makeup: one grows from expansions of existing customers, the other grows from new customers while losing many to churn.
Average Revenue Per User (ARPU)
ARPU = Total MRR / Active Customers. Track this monthly. Rising ARPU may mean customers are upgrading. Falling ARPU may mean you are acquiring lower-value customers or existing customers are downgrading.
Revenue Churn Rate
Revenue churn follows dollars, while logo churn follows customer count. A business can lose several customers and still have revenue churn below zero, if the customers who stay pay more. The worked example near the top shows this with made-up numbers.
Monthly Revenue Churn = (Churned MRR + Contraction MRR) / Starting MRR
Net Revenue Churn = (Churned + Contraction - Expansion) / Starting MRR
If net revenue churn is negative, your existing customers add more revenue than is lost.
Customer Lifetime Value (LTV)
LTV tells you how much total revenue a customer generates before they churn. The simplest formula:
LTV = ARPU / Monthly Revenue Churn Rate
With made-up numbers, if ARPU is $150/month and monthly churn is 3%, LTV = $150 / 0.03 = $5,000. This number can be compared with what you spend to acquire a customer (CAC).
Revenue Concentration
What share of your MRR comes from your top few customers? If a few customers make up most of your revenue, revenue can drop sharply in a single month when one of them leaves.
How to Export Your Stripe Data for Analysis
Getting data out of Stripe is straightforward. You have two paths depending on your technical comfort level.
Option 1: CSV Export (No Code Required)
- Log into your Stripe Dashboard
- Navigate to Payments > All payments
- Set your date range to cover as many months as you can
- Click Export and select CSV
- For subscription data: go to Billing > Subscriptions > Export
The payment export includes: amount, currency, status, created date, customer ID, description, and metadata. This is enough for revenue trend analysis, ARPU calculation, and basic churn estimation.
Option 2: Stripe API (For Larger Datasets)
If you have a large number of transactions, the CSV export can become unwieldy. The Stripe API gives you programmatic access to every data point. The key endpoints are:
/v1/balance_transactions: every money movement in your account/v1/subscriptions: all subscription data including status changes/v1/invoices: detailed line items for each billing event/v1/charges: individual payment details with failure reasons
For a quick total revenue query, you'd use the balance transactions endpoint filtered by type and date range. But for many founders, the CSV export is enough.
When you export from Stripe, you'll get many columns. For revenue analysis, focus on: amount (in cents, divide by 100), created (timestamp), status (filter for "succeeded"), customer (for per-customer analysis), and description or metadata (for plan/product identification). Drop failed charges, refunds-as-separate-rows, and disputes for your initial analysis.
What Patterns to Look For
Once you have your data exported, here are the patterns that separate a healthy business from one heading for trouble.
The MRR Waterfall
Plot your MRR components month over month as a waterfall chart. Healthy pattern: New MRR consistently exceeds Churned MRR, and Expansion MRR grows as your customer base matures. Unhealthy pattern: Churned MRR accelerating even as New MRR stays flat. This means you're filling a leaky bucket faster and faster.
Cohort Revenue Retention Curves
Group customers by their signup month and track what share of their initial MRR you retain over time. A curve that flattens suggests that customers who stay tend to keep staying. A curve that never flattens means revenue keeps declining at a steady rate month after month.
ARPU Direction
If ARPU is declining quarter over quarter, investigate why. Common causes: introducing a cheaper plan that attracts lower-value customers, offering aggressive discounts to reduce churn, or losing enterprise customers while adding SMB customers. A declining ARPU with growing customer count can mask a deteriorating business.
Failed Payment Patterns
Involuntary churn (failed payments that don't get recovered) is one source of lost revenue. Look for patterns: do failures spike at the start of each month (card limits resetting)? Are certain card types failing more often? Are international payments failing at higher rates? Each pattern has a specific fix.
From Export to Insight: Running Real Analysis
You've exported your Stripe data. Now what? You have three options, each with different trade-offs.
Spreadsheets
You can build MRR calculations in Google Sheets or Excel. Pivot tables on customer ID and month will get you partway. The problems: formulas can become slow and hard to check as data grows, and calculating churn correctly requires tracking subscription state changes (not just payment presence).
BI Tools
Tools like Looker, Metabase, or Tableau can connect to Stripe via data warehouses. Once configured, they can run this analysis, but setup may need a data engineer, ongoing maintenance, and a data warehouse (Snowflake, BigQuery).
Upload and Analyze
Export your Stripe payment data as a CSV, upload it to MCP Analytics, and get automated revenue analysis. The platform runs revenue overview analysis and MRR decomposition on your actual data, producing the metrics and visualizations described in this article without spreadsheet formulas or data engineering.
What a Real Revenue Analysis Report Looks Like
When you run proper analysis on your Stripe data (whether you build it yourself or use a tool), here's what the output should include:
- MRR trend with decomposition: A time-series chart showing total MRR broken into New, Expansion, Contraction, Churned, and Reactivation components. This tells the growth story.
- Net revenue retention by cohort: A heatmap or line chart showing how each monthly cohort's revenue evolves over time. This tells the retention story.
- ARPU trend: Monthly ARPU with a trendline. This tells the pricing power story.
- Churn analysis: Revenue churn rate by month, segmented by plan type or customer size if possible. This tells the risk story.
- Revenue concentration: A Pareto chart showing cumulative revenue contribution by customer. This tells the dependency story.
- Revenue forecast: Based on current MRR, churn rate, and new customer acquisition rate, where will revenue be in 3, 6, and 12 months? This tells the future story.
Answer these three questions from your Stripe data:
- Is Net New MRR positive? (New + Expansion > Churned + Contraction)
- Is ARPU flat or rising? (Not declining)
- Is your top customer a small share of total MRR? (Low concentration)
These questions are a quick check. They are not a full health check. A "no" means look closer. The answers alone cannot show if a business is healthy.
Common Mistakes in Stripe Revenue Analysis
Mistake #1: Confusing Gross Volume with Revenue
Gross volume may include refunds, disputes, tax collected on behalf of customers, and payments to connected accounts (if you're a platform). Your actual revenue is net of all these.
Mistake #2: Counting One-Time Charges as MRR
If you sell implementation fees, consulting hours, or one-time add-ons alongside subscriptions, these must be excluded from MRR. Including them inflates your recurring revenue figure and makes churn calculations meaningless.
Mistake #3: Ignoring Currency Conversion
If you have international customers paying in different currencies, you need to normalize everything to a single currency for analysis. Stripe stores amounts in the settlement currency, but if you price in EUR and GBP alongside USD, your MRR calculation needs consistent conversion rates.
Mistake #4: Not Accounting for Free Periods
Customers still inside a free period are not MRR. They're pipeline. If your Stripe subscription data includes active free periods at $0, exclude them from MRR and track free-to-paid conversion rate separately. It's a leading indicator of future MRR, not current MRR.
Your turn
Bring your own data and the question you actually need answered.
MCP AnalyticsData science by email Send us your data and your question, and we will reply. ds@mcpanalytics.ai
Frequently Asked Questions
Export your subscriptions from Stripe and sum all active recurring charges normalized to a monthly amount. Annual plans should be divided by 12. Exclude one-time charges, refunds, and tax. For accurate MRR, categorize changes into New MRR (first-time subscribers), Expansion MRR (upgrades and add-ons), Contraction MRR (downgrades), and Churned MRR (cancellations). Net New MRR = New + Expansion - Contraction - Churned.
Stripe's dashboard shows gross volume, net volume, and successful payments but may not show these metrics: MRR broken down by component (new, expansion, contraction, churn), revenue cohort retention curves, Average Revenue Per User (ARPU) trends over time, customer lifetime value estimates, revenue concentration risk, and seasonal decomposition of revenue patterns.
Go to Stripe Dashboard > Payments > Export. Select your date range and download as CSV. For subscription data, go to Billing > Subscriptions > Export. For programmatic access, use the Stripe API: the Balance Transactions endpoint gives you every money movement, and the Subscriptions endpoint gives recurring revenue data. For most analysis, the CSV export from the Payments section is sufficient.
There is no single good churn rate. It varies by customer segment and price. Net negative churn means expansion revenue exceeds lost revenue. A trend line matters more than any single month.
Yes. Export your payment or subscription data as a CSV from Stripe's dashboard, then upload it to an analytics platform like MCP Analytics. You'll get automated calculations of MRR trends, churn rate, ARPU, revenue concentration, and cohort analysis without writing any code or building spreadsheet formulas.