If you run a subscription business on Stripe and look at the MRR number in their dashboard, you probably assume it’s the correct figure. In many cases it isn’t quite. Stripe shows an estimated MRR, based on how it extrapolates recent charges, but it doesn’t always reflect contractual MRR — the committed recurring revenue, which is what investors use and what you need for real decisions.
The gap can be small or significant, but either way it matters to know exactly which number you’re looking at.
Estimated MRR vs contractual MRR
- Estimated MRR (what Stripe usually shows) is computed from what you’ve charged recently, extrapolated. If a customer just signed up to an annual plan, Stripe may not prorate correctly. If you have temporary discounts active, it may reflect the discounted amount instead of the contractual one.
- Contractual MRR is what your customers are contractually committed to pay, normalized to monthly. A customer on a $1,200 annual plan contributes $100. A customer on a $30 quarterly plan contributes $10. One-off discounts don’t affect it — the underlying commitment is what matters.
The gap between the two is small in simple businesses and can be large in ones with many plans, cycles, discounts, and upgrades.
Why the distinction matters
- For planning, contractual MRR is the solid number. «This month closes at $X guaranteed, of which $X-Y is customers with more than six months in». You plan hiring, investment, growth on top of that.
- For presenting metrics (to partners, investors, bank), contractual MRR is the de facto standard. Showing estimated MRR prompts uncomfortable questions if it doesn’t match what appears elsewhere.
- For spotting trends, contractual MRR is more stable. It doesn’t move with one-off failed-charge noise that later recovers.
- For churn, it has to be contractual for the number to make sense. A canceled customer churns out on the amount they stopped paying, not the last charge.
What you need to calculate it well
- List of active subscriptions with their recurring price (amount and interval).
- List of trial subscriptions with the price they’ll be charged at (committed trial MRR).
- List of subscriptions with scheduled cancellation (churning MRR, what you’ll lose at period end).
- Monthly normalization of each plan (annual → /12, quarterly → /3, weekly → x4, etc.).
- Permanent discounts subtracted, temporary ones (first month free, etc.) not.
It’s all in Stripe through their API. But calculating it properly means walking through every subscription, normalizing correctly, and distinguishing states. Not a ready-made screen.
Why Stripe’s dashboard doesn’t do it
Stripe’s dashboard is built for general use. It prioritizes speed and simplicity over accounting accuracy for advanced businesses. For a growing startup with multiple plans and active promotions, the front-page number is a useful approximation but not a formal metric.
For serious decisions, you need a dashboard that does the calc your way, with transparency to see each component: base MRR, trial MRR, MRR about to churn, net growth.
Stripe Control calculates and displays your real contractual MRR, separating MRR from active subscriptions, trials, and ones in «canceling» state (churning at period end). Alongside MRR you see the amount about to be lost if scheduled cancellations confirm, so you plan on hard data, not approximations.
Keep reading
- The complete guide to recovering recurring revenue in Stripe
- How to manage Stripe subscriptions without going crazy
- How to notify customers before their card expires on Stripe