ds@mcpanalytics.aiEmail your data and your question and get an answer about your own data, with the method shown.Email your data and question. Get an answer.

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

What's Missing

This is where the questions start. These are things the dashboard may not show without extra work:

Check Stripe's MRR Number Before You Use It

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)

  1. Log into your Stripe Dashboard
  2. Navigate to Payments > All payments
  3. Set your date range to cover as many months as you can
  4. Click Export and select CSV
  5. 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:

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.

What Columns Matter in Your Export

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:

  1. 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.
  2. 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.
  3. ARPU trend: Monthly ARPU with a trendline. This tells the pricing power story.
  4. Churn analysis: Revenue churn rate by month, segmented by plan type or customer size if possible. This tells the risk story.
  5. Revenue concentration: A Pareto chart showing cumulative revenue contribution by customer. This tells the dependency story.
  6. 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.
Quick Health Check

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

How do I calculate MRR from Stripe data?

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.

What revenue metrics can't I see in the Stripe dashboard?

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.

How do I export revenue data from Stripe for analysis?

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.

What is a good churn rate for a SaaS business using Stripe?

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.

Can I analyze Stripe revenue without writing code?

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.