Monthly recurring revenue is the number that tells you whether your SaaS is actually growing. But most early-stage founders either don't track it at all, or they calculate it in a way that makes it meaningless.
This post covers what MRR actually is, the mistakes that inflate or deflate it, and how to calculate it correctly from your Stripe data.
What MRR actually means
MRR is the predictable revenue you can count on collecting each month from active subscriptions. The key word is predictable. It excludes one-time payments, setup fees, and anything that doesn't recur on a regular schedule.
If you have 10 customers each paying $50/month, your MRR is $500. Simple.
It gets complicated when you have:
- Annual plans
- Trials that haven't converted
- Paused subscriptions
- Refunded charges
- Customers on different billing cycles
The most common MRR mistakes
1. Counting annual plans at face value
If a customer pays $600 upfront for a year, your MRR from that customer is $50 — not $600. You annualize it by dividing by 12.
Counting the full $600 in the month they pay makes your MRR look great in January and terrible every other month.
2. Including one-time charges
Setup fees, professional services, one-off add-ons — none of these count toward MRR. They're revenue, but they're not recurring revenue. Mixing them in makes your MRR number unreliable as a growth indicator.
3. Counting trials as MRR
A customer on a free trial is not paying you anything. Including them inflates your MRR until they convert or churn, at which point your MRR "drops" even though nothing actually changed in your business.
4. Not accounting for churn
If a customer cancels mid-month, you need to decide on a convention and stick to it. Most tools pro-rate the cancelled period out of MRR. What you shouldn't do is leave cancelled subscriptions in the count because they haven't fully expired yet.
How to calculate MRR from Stripe manually
If you want to do this yourself:
-
Pull all active subscriptions from Stripe (status =
activeortrialingif you count trials — most don't). -
Normalize each subscription to a monthly amount:
- Monthly plan: use the amount as-is
- Annual plan: divide by 12
- Weekly plan: multiply by 4.33 (weeks per month)
- Quarterly plan: divide by 3
-
Sum the normalized amounts. That's your MRR.
-
Subtract any pending refunds or disputes if you want a conservative number.
You can do this by exporting from Stripe Dashboard → Billing → Subscriptions → Export CSV, then running the calculation in a spreadsheet.
What the Stripe dashboard gets wrong
Stripe shows you revenue figures, but they're not MRR. The "Monthly revenue" figure in your Stripe dashboard is cash collected, not normalized recurring revenue. Annual plan payments show as full amounts in the month collected. One-time charges are included.
This makes Stripe's built-in charts useful for cash flow, not for understanding subscription growth.
Breaking MRR into components
Once you have your base MRR, the more useful number is how it's changing:
- New MRR — revenue from customers who signed up this month
- Expansion MRR — revenue from existing customers who upgraded
- Churned MRR — revenue lost from cancellations
- Contraction MRR — revenue lost from downgrades
- Net new MRR — New + Expansion − Churned − Contraction
Net new MRR is the single best indicator of business momentum. If it's positive, you're growing. If it's negative, you're shrinking — regardless of what your absolute MRR number looks like.
What's a healthy MRR growth rate?
For early-stage SaaS (under $10k MRR), 10–20% month-over-month growth is strong. Once you're above $10k MRR, 5–10% monthly is more realistic and still excellent on an annual basis.
These benchmarks are rough — a bootstrapped solo founder and a VC-backed team with a growth budget operate in completely different contexts. What matters more than hitting a benchmark is that your MRR growth is consistent, and that your churned MRR isn't eating into your new MRR.
Doing this automatically
Pulling the data manually works for a sanity check, but you'll want automated tracking as you grow. Recalculating from a Stripe CSV every week gets old fast.
Tools like Metricsly connect directly to your Stripe account via read-only OAuth and compute your MRR, churn rate, LTV, new MRR, and net new MRR automatically — updated daily. No spreadsheet, no manual export, no math.
The calculation logic above is exactly what runs under the hood.