Stripe MRR Report: Automated Churn & Revenue Tracking
Master Monthly Recurring Revenue analysis to understand subscription growth, customer retention, and revenue trends in your Stripe account.
Introduction to MRR Analysis
If you're running a subscription-based business with Stripe, one question keeps you up at night: "What is my MRR?" Monthly Recurring Revenue (MRR) is the lifeblood of subscription businesses, providing a clear picture of predictable income and business health.
Unlike one-time sales, MRR represents the normalized monthly value of all your active subscriptions. It's the single most important metric for understanding whether your business is growing, stagnating, or declining. This tutorial will walk you through analyzing your MRR in Stripe, answering critical questions like:
- What is my current MRR and how is it trending?
- How many active subscriptions am I managing?
- What's my customer churn rate?
- Which pricing plans drive the most revenue?
By the end of this guide, you'll have a complete understanding of your subscription metrics and be equipped to make data-driven decisions that accelerate growth.
Prerequisites and Data Requirements
Before diving into MRR analysis, ensure you have the following in place:
Required Access
- Stripe Account Access: You need administrator or developer access to your Stripe account
- Active Subscriptions: At least one active subscription to analyze (test or production)
- API Keys: If using programmatic access, you'll need your Stripe API keys (available in your Stripe dashboard under Developers > API keys)
Recommended Timeline
- Minimum Data: At least 2-3 months of subscription data for meaningful trend analysis
- Ideal Data: 6+ months for comprehensive churn rate calculations and seasonal pattern identification
Technical Knowledge
- Basic understanding of subscription business models
- Familiarity with the Stripe dashboard (no coding required for basic analysis)
- Optional: Basic SQL or Python knowledge for advanced analysis
What You'll Accomplish
This tutorial guides you through a complete MRR analysis workflow. You'll learn to:
- Calculate your current MRR from Stripe subscription data
- Track the number of active subscriptions over time
- Compute your monthly churn rate
- Identify which pricing plans contribute most to revenue
- Visualize trends and make strategic decisions
Each step includes practical examples with expected outputs so you can verify your analysis is correct.
Step 1: What Is My Current MRR?
MRR is the sum of all recurring revenue normalized to a monthly amount. This means annual subscriptions are divided by 12, quarterly by 3, and monthly subscriptions are counted as-is.
Using the Stripe Dashboard
- Log into your Stripe dashboard at
dashboard.stripe.com - Navigate to Billing > Subscriptions
- Click on Overview to see your MRR displayed prominently
- Note the current MRR value and the trend direction (up/down)
Calculating MRR Manually
For a deeper understanding or custom analysis, you can calculate MRR using the Stripe API:
import stripe
from datetime import datetime
stripe.api_key = 'your_secret_key'
# Fetch all active subscriptions
subscriptions = stripe.Subscription.list(
status='active',
limit=100
)
total_mrr = 0
for sub in subscriptions.auto_paging_iter():
# Get the subscription amount
amount = sub['items']['data'][0]['price']['unit_amount']
interval = sub['items']['data'][0]['price']['recurring']['interval']
# Normalize to monthly
if interval == 'month':
monthly_value = amount
elif interval == 'year':
monthly_value = amount / 12
elif interval == 'quarter':
monthly_value = amount / 3
elif interval == 'week':
monthly_value = amount * 4.33
total_mrr += monthly_value
# Convert from cents to dollars
total_mrr = total_mrr / 100
print(f"Current MRR: ${total_mrr:,.2f}")
Expected Output
Current MRR: $24,567.50
Understanding the Result
Your MRR represents the predictable monthly revenue from subscriptions. For example, if your MRR is $24,567.50, you can expect approximately this amount each month, assuming no changes in subscriptions. Track this metric weekly or monthly to identify growth trends.
For automated MRR tracking and analysis, consider using specialized tools like the MCP Analytics MRR Analysis tool, which provides real-time dashboards and trend analysis without coding.
Step 2: How Many Active Subscriptions Do I Have?
Understanding your subscription count helps you assess customer base growth and calculate important metrics like average revenue per user (ARPU).
Via Stripe Dashboard
- Navigate to Billing > Subscriptions
- Apply filter: Status = Active
- The total count appears at the top of the subscription list
- Note subscriptions in "trialing" status separately as they represent future MRR
Programmatic Count
import stripe
stripe.api_key = 'your_secret_key'
# Count active subscriptions
active_subs = stripe.Subscription.list(status='active', limit=1)
active_count = active_subs['total_count']
# Count trialing subscriptions
trial_subs = stripe.Subscription.list(status='trialing', limit=1)
trial_count = trial_subs['total_count']
print(f"Active Subscriptions: {active_count}")
print(f"Trial Subscriptions: {trial_count}")
print(f"Total: {active_count + trial_count}")
Expected Output
Active Subscriptions: 487
Trial Subscriptions: 23
Total: 510
Key Insights
- Active Subscriptions: These contribute to current MRR
- Trial Subscriptions: Potential MRR if trials convert successfully
- Growth Rate: Compare this month's count to last month to calculate subscription growth rate
Calculate your Average Revenue Per User (ARPU): MRR ÷ Active Subscriptions. In our example: $24,567.50 ÷ 487 = $50.45 ARPU. This metric helps you understand the average value of each customer.
Step 3: What Is My Churn Rate?
Churn rate measures the percentage of customers who cancel their subscriptions during a given period. It's one of the most critical metrics for subscription businesses because high churn directly undermines growth.
Understanding Churn Types
- Customer Churn: Percentage of customers who canceled
- Revenue Churn: Percentage of MRR lost from cancellations
Calculating Monthly Customer Churn
The formula: (Customers Lost During Month ÷ Customers at Start of Month) × 100
import stripe
from datetime import datetime, timedelta
stripe.api_key = 'your_secret_key'
# Define time period (last month)
today = datetime.now()
month_start = (today.replace(day=1) - timedelta(days=1)).replace(day=1)
month_end = today.replace(day=1) - timedelta(days=1)
# Get customers at start of month
start_timestamp = int(month_start.timestamp())
customers_start = stripe.Subscription.list(
status='active',
created={'lte': start_timestamp},
limit=1
)['total_count']
# Get canceled subscriptions during the month
canceled = stripe.Subscription.list(
status='canceled',
canceled_at={
'gte': int(month_start.timestamp()),
'lte': int(month_end.timestamp())
},
limit=1
)['total_count']
# Calculate churn rate
churn_rate = (canceled / customers_start) * 100
print(f"Customers at Start: {customers_start}")
print(f"Cancellations: {canceled}")
print(f"Monthly Churn Rate: {churn_rate:.2f}%")
Expected Output
Customers at Start: 503
Cancellations: 18
Monthly Churn Rate: 3.58%
Interpreting Churn Rate
| Churn Rate | Assessment | Action Required |
|---|---|---|
| < 2% | Excellent | Maintain current retention strategies |
| 2-5% | Good | Monitor trends, optimize onboarding |
| 5-7% | Concerning | Investigate cancellation reasons, improve product value |
| > 7% | Critical | Immediate action needed, customer interviews, product-market fit review |
In the example above, a 3.58% churn rate is within the acceptable range but should be monitored closely. Consider implementing exit surveys to understand why customers leave.
Understanding statistical significance in your churn analysis is crucial. Learn more about statistical significance in A/B testing to ensure your retention experiments yield reliable results.
Step 4: Which Plans Are Most Popular?
Analyzing plan distribution helps you understand which offerings resonate with customers and drive revenue. This insight informs pricing strategy and product development.
Via Stripe Dashboard
- Go to Products > Pricing
- Each price shows the number of active subscriptions
- Sort by "Subscriptions" to see most popular plans
Detailed Plan Analysis
import stripe
from collections import defaultdict
stripe.api_key = 'your_secret_key'
plan_stats = defaultdict(lambda: {'count': 0, 'mrr': 0})
# Fetch all active subscriptions
subscriptions = stripe.Subscription.list(status='active', limit=100)
for sub in subscriptions.auto_paging_iter():
price = sub['items']['data'][0]['price']
plan_name = price['nickname'] or price['id']
amount = price['unit_amount']
interval = price['recurring']['interval']
# Normalize to monthly
if interval == 'month':
monthly_value = amount
elif interval == 'year':
monthly_value = amount / 12
plan_stats[plan_name]['count'] += 1
plan_stats[plan_name]['mrr'] += monthly_value / 100
# Sort by MRR
sorted_plans = sorted(plan_stats.items(),
key=lambda x: x[1]['mrr'],
reverse=True)
print(f"{'Plan Name':<30} {'Subscriptions':<15} {'MRR':<15}")
print("-" * 60)
for plan, stats in sorted_plans:
print(f"{plan:<30} {stats['count']:<15} ${stats['mrr']:>12,.2f}")
Expected Output
Plan Name Subscriptions MRR
------------------------------------------------------------
Professional Plan 187 $14,025.00
Starter Plan 245 $ 7,350.00
Enterprise Plan 32 $ 4,800.00
Basic Plan 123 $ 1,845.00
Strategic Insights
From this analysis, you can identify:
- Revenue Drivers: The Professional Plan drives most revenue despite having fewer subscriptions than Starter
- Volume Leaders: Starter Plan has the most customers, indicating it's an effective entry point
- High-Value Segments: Enterprise customers represent just 6.5% of subscriptions but 19.5% of MRR
- Optimization Opportunities: Consider upselling Starter customers to Professional tier
For comprehensive subscription analysis with automated insights, explore the MRR Analysis service, which provides detailed breakdowns across all pricing dimensions.
Interpreting Your Results
Now that you've gathered your MRR data, active subscription counts, churn rate, and plan distribution, it's time to synthesize these metrics into actionable insights.
Calculating Key Performance Indicators
1. MRR Growth Rate
Formula: ((Current Month MRR - Previous Month MRR) ÷ Previous Month MRR) × 100
Example:
Current MRR: $24,567.50
Previous MRR: $23,100.00
Growth Rate: ((24,567.50 - 23,100.00) / 23,100.00) × 100 = 6.35%
2. Net MRR Churn
This accounts for both lost revenue (downgrades/cancellations) and gained revenue (upgrades/expansion):
Net MRR Churn = ((Churned MRR - Expansion MRR) ÷ Starting MRR) × 100
Example:
Starting MRR: $23,100.00
Churned MRR: $1,850.00
Expansion MRR: $3,317.50
Net MRR Churn: ((1,850 - 3,317.50) / 23,100) × 100 = -6.35% (negative is good!)
3. Customer Lifetime Value (LTV)
Estimate how much revenue a customer generates over their lifetime:
LTV = ARPU ÷ Monthly Churn Rate
Example:
ARPU: $50.45
Churn Rate: 3.58% (0.0358)
LTV: $50.45 ÷ 0.0358 = $1,409.22
Health Check Framework
Use this framework to assess your subscription business health:
| Metric | Healthy Range | Warning Signs |
|---|---|---|
| MRR Growth Rate | > 10% monthly | < 5% for 3+ months |
| Customer Churn | < 5% monthly | > 7% or increasing trend |
| Net MRR Churn | < 0% (negative) | > 2% positive |
| LTV:CAC Ratio | > 3:1 | < 2:1 |
Trend Analysis
Single-point measurements only tell part of the story. Track these metrics over time:
- Weekly MRR: Identify seasonal patterns and campaign impact
- Monthly Cohorts: Track retention by signup month
- Plan Migration: Monitor upgrade and downgrade patterns
- Churn Reasons: Categorize cancellations to identify systemic issues
Advanced analytics techniques, similar to those used in AI-first data analysis pipelines, can help you uncover hidden patterns in your subscription data and predict future trends.
Automate Your MRR Analysis
Manual MRR analysis provides valuable insights, but tracking these metrics continuously requires significant effort. The MCP Analytics MRR Analysis Tool automates this entire workflow, providing:
- Real-Time Dashboards: Live MRR, subscription counts, and churn metrics updated automatically
- Trend Visualization: Interactive charts showing MRR growth, cohort retention, and plan distribution
- Automated Alerts: Notifications when churn exceeds thresholds or MRR growth slows
- Cohort Analysis: Understand retention patterns by signup date, plan, or acquisition channel
- Revenue Forecasting: Predict future MRR based on current growth and churn trends
Try MRR Analysis Now
Connect your Stripe account and get instant insights into your subscription metrics. No coding required.
Common Issues and Solutions
Issue 1: MRR Doesn't Match Revenue
Problem: Your calculated MRR differs from actual revenue received.
Cause: MRR represents normalized recurring revenue, not actual cash flow. One-time charges, failed payments, and billing timing create discrepancies.
Solution:
- Exclude one-time charges from MRR calculations
- Account for failed payments in a separate "at-risk MRR" metric
- Use MRR for growth trends, not cash flow projections
Issue 2: Churn Rate Seems Too High
Problem: Your churn rate exceeds 7-10% monthly.
Cause: Poor product-market fit, inadequate onboarding, pricing issues, or competitive pressure.
Solution:
- Implement exit surveys to understand cancellation reasons
- Segment churn by plan, tenure, and acquisition channel
- Improve onboarding with targeted emails and product tours
- Consider retention campaigns (pause plans, discounts) before cancellation
- Interview churned customers to identify product gaps
Issue 3: Subscription Count Increasing, But MRR Flat
Problem: You're acquiring customers but revenue isn't growing proportionally.
Cause: New customers choosing lower-tier plans while high-value customers churn (negative revenue mix).
Solution:
- Analyze ARPU trends over time
- Segment new subscriptions by plan tier
- Review marketing channels—are you attracting the right customers?
- Implement upgrade incentives for starter-tier customers
- Focus acquisition on higher-value customer segments
Issue 4: API Rate Limits When Fetching Subscriptions
Problem: Stripe API returns rate limit errors when processing many subscriptions.
Cause: Exceeding Stripe's API rate limits (typically 100 requests per second).
Solution:
import stripe
import time
stripe.api_key = 'your_secret_key'
def fetch_all_subscriptions():
subscriptions = []
has_more = True
starting_after = None
while has_more:
try:
result = stripe.Subscription.list(
limit=100,
starting_after=starting_after
)
subscriptions.extend(result['data'])
has_more = result['has_more']
if has_more:
starting_after = result['data'][-1]['id']
time.sleep(0.1) # Rate limiting
except stripe.error.RateLimitError:
time.sleep(1) # Wait before retrying
continue
return subscriptions
Issue 5: Difficulty Tracking MRR Changes Over Time
Problem: Understanding what drove MRR changes requires manual investigation.
Cause: Stripe doesn't provide built-in MRR movement categorization.
Solution: Implement MRR movement tracking:
- New MRR: Revenue from new subscriptions
- Expansion MRR: Revenue from upgrades and add-ons
- Contraction MRR: Revenue lost from downgrades
- Churned MRR: Revenue lost from cancellations
Use Stripe webhooks to track subscription lifecycle events and categorize MRR changes in real-time.
Next Steps with Stripe Analytics
You've now mastered the fundamentals of MRR analysis in Stripe. Here are advanced topics to explore next:
1. Cohort Retention Analysis
Track how customer cohorts (grouped by signup month) retain over time. This reveals whether your product is improving at retaining customers and helps predict long-term value.
2. Revenue Forecasting
Use historical MRR growth, churn rates, and seasonality to project future revenue. This is critical for fundraising, hiring plans, and strategic planning.
3. Advanced Segmentation
Segment your MRR analysis by:
- Acquisition Channel: Which marketing channels drive highest-value customers?
- Geographic Region: Do certain markets have better retention or ARPU?
- Customer Characteristics: Company size, industry, or use case
- Product Usage: Correlate feature adoption with retention
4. Churn Prediction
Build machine learning models to identify at-risk customers before they cancel. Techniques like Accelerated Failure Time (AFT) models can help predict subscription lifetime based on customer behavior.
5. Pricing Optimization
Experiment with pricing changes using controlled tests. Understand how to apply ensemble learning methods like AdaBoost to optimize pricing based on customer characteristics and behavior patterns.
6. Payment Recovery
Analyze failed payment patterns and implement dunning strategies to recover revenue from involuntary churn (expired cards, insufficient funds).
Recommended Resources
- Stripe Sigma: SQL-based reporting directly on your Stripe data
- Stripe Webhooks: Real-time notifications for subscription events
- Customer Success Platforms: Tools like ChurnZero or Catalyst for proactive retention
- Data Warehouses: Export Stripe data to Snowflake or BigQuery for advanced analysis
Conclusion
Understanding your MRR is fundamental to operating a successful subscription business. By systematically analyzing your current MRR, active subscriptions, churn rate, and plan distribution, you gain the insights needed to make informed decisions about growth, retention, and product strategy.
The metrics you've learned to calculate—MRR growth rate, customer churn, ARPU, and LTV—form the foundation of subscription business analytics. Track these consistently, identify trends early, and take action when metrics signal opportunity or risk.
Remember that MRR analysis is not a one-time exercise but an ongoing discipline. Set up weekly or monthly reviews, automate data collection where possible, and share insights across your organization. The businesses that win in subscription markets are those that deeply understand their metrics and act on them quickly.
Ready to take your analysis to the next level? Try the automated MRR Analysis tool to track these metrics in real-time with no code required.
Explore more: Stripe Analytics — all tools, tutorials, and guides →