Quick answer
MRR stands for monthly recurring revenue. It's what your active subscriptions are worth in a normal month: each paying subscription's price after discounts, with annual and quarterly plans converted to a monthly amount. Free trials, one-time payments, taxes and refunds aren't part of it.
MRR = the sum of the monthly price of every active, paying subscription
For a single plan, that's simply: number of paying customers × monthly price.
MRR is a run rate, not a bank balance. It answers “how much recurring revenue does this business have right now?” rather than “how much money came in this month?” Those two numbers are often different, and the difference matters.
Why SaaS businesses track MRR
Cash arrives unevenly. A customer on an annual plan pays twelve months up front, payments fail and get retried, and billing dates fall all over the month. MRR smooths that out into one number you can compare month to month.
It’s also the number that explains itself. Every change in MRR comes from a small set of causes: new customers, upgrades, downgrades, cancellations and returning customers. Break the monthly change into those parts and you can see whether growth comes from selling more or from losing less. That breakdown is usually more useful than the headline number.
How to calculate MRR, step by step
- List every subscription that’s active and paying on the date you’re measuring. Most teams use the last day of the month.
- Convert each one to a monthly amount. Divide an annual price by 12 and a quarterly price by 3. For weekly billing, multiply by 52 and divide by 12.
- Apply recurring discounts. If a customer pays $40 instead of $50 because of an ongoing coupon, their MRR is $40.
- Leave out anything that doesn’t recur. Setup fees, one-off purchases, credit packs, taxes and refunds don’t belong.
- Add it up.
That’s the whole calculation. The hard part is deciding what counts as “active and paying” in the edge cases below, and applying the same rules every month.
Worked examples
All of these use made-up numbers.
A single plan
Example
You have 100 customers on a $29 monthly plan.
MRR = 100 × $29 = $2,900
An annual subscription
Example
A customer pays $1,200 for a year.
MRR = $1,200 ÷ 12 = $100
You collect $1,200 in the month they pay and nothing for the next eleven. Their MRR is $100 in every one of those twelve months. Counting the full $1,200 as MRR in the month it arrives is one of the most common mistakes in early dashboards.
An upgrade
Example
A customer moves from a $29 plan to a $79 plan.
Expansion MRR = $79 − $29 = $50
Their MRR is $79 from the day of the change. If your billing system charges a prorated amount for the rest of the current period, that one-off proration isn’t MRR. The new monthly price is. A downgrade works the same way in reverse and counts as contraction MRR.
A cancellation scheduled for the end of the billing period
Example
A customer on a $49 monthly plan has paid through November 30. On November 10 they cancel, effective at the end of the period. They keep access until then.
Whether that $49 leaves MRR on November 10 or on November 30 depends on the convention you choose (more on that below). OneMRR keeps it in MRR until the paid period ends and reports it as churn in the month it ends. Until then, it’s listed as scheduled to end.
A one-time payment or credit pack
Example
A customer buys a $500 pack of prepaid credits.
Change in MRR = $0
It’s real revenue, but it doesn’t recur, so it isn’t MRR. Track it as one-time revenue next to MRR. In accrual accounting, prepaid credits are usually recorded as deferred revenue and recognized as they’re used, which is another reason not to mix them into a run rate.
What counts as MRR, and what doesn’t
| Counts toward MRR | Doesn’t count |
|---|---|
| Active, paying subscriptions, converted to a monthly amount | Free trials, until the first paid invoice |
| Recurring add-ons and extra seats | Setup fees and other one-time charges |
| Ongoing discounts, subtracted from the price | Prepaid credit packs and top-ups |
| The new price after an upgrade or downgrade | Prorated charges from a plan change |
| Taxes, and refunds |
A few cases genuinely vary between tools:
- Metered usage. Stripe Billing’s MRR leaves metered prices out because usage is unpredictable. Some teams include the usage that’s actually been billed. Either is defensible if it’s stated.
- Past-due subscriptions. Stripe keeps
past_duesubscriptions in MRR and removes them once they’reunpaidor canceled. Baremetrics, by default, removes customers who’ve been unpaid for 30 days. OneMRR keeps a past-due subscription in MRR until it’s canceled. - Marketplace commissions. If you sell through the Shopify App Store or Wix App Market, the marketplace keeps a share. Standard MRR is what customers pay, before commissions. Revenue after commissions is useful too, but label it, and don’t mix the two in one number.
Scheduled cancellations: when does churn count?
This is where tools disagree most, so it’s worth knowing the options.
| Tool | When a scheduled cancellation leaves MRR |
|---|---|
| Stripe Billing | As soon as the cancellation is scheduled |
| ChartMogul | Your choice of three: when the billing system marks it canceled, at the end of the final service period, or as soon as it’s scheduled |
| Baremetrics | When the customer cancels, by default, with a setting to keep it active until the period ends |
| OneMRR | When the paid period ends. Until then it’s shown as scheduled to end |
There’s no single correct answer. Removing MRR early is conservative and makes churn show up sooner. Keeping it until the period ends matches what the customer has actually paid for and gives you a window to change their mind. What matters is that you pick one rule, apply it to every customer and every month, and track scheduled cancellations separately so the revenue you’re about to lose is visible.
MRR is not the money you collected this month
Example
Two customers: one pays $29 a month, the other paid $1,200 for a year in January.
| Month | Cash collected | MRR |
|---|---|---|
| January | $1,229 | $129 |
| February | $29 | $129 |
| March | $29 | $129 |
The business didn’t shrink by 98% in February. Cash collected tells you about your bank account. MRR tells you about the recurring business. Failed payments, refunds, annual renewals and one-time purchases all make the two drift apart, so it’s worth watching both.
MRR movements: new, expansion, contraction, reactivation and churn
Every change in MRR from one month to the next falls into one of these:
- New MRR: customers who started paying for the first time.
- Expansion MRR: existing customers paying more, through an upgrade, more seats or a discount ending.
- Contraction MRR: existing customers paying less, through a downgrade or fewer seats.
- Reactivation MRR: customers who’d churned and came back.
- Churned MRR: customers who stopped paying.
Ending MRR = starting MRR + new + expansion + reactivation − contraction − churn
The total of the movements is your net new MRR. ChartMogul also uses a "neutral" movement for plan changes that leave MRR the same.
Laid out as a bridge, one month looks like this:
| October (example) | MRR |
|---|---|
| Starting MRR | $12,400 |
| New | +$870 |
| Expansion | +$410 |
| Reactivation | +$79 |
| Contraction | −$150 |
| Churn | −$620 |
| Ending MRR | $12,989 |
Net new MRR here is $589. The headline says the business grew 4.75%. The bridge says something more useful: churn alone took back about 70% of what new customers added. That’s the kind of thing a single MRR number hides.
One rule keeps the bridge honest: a customer who switches plans is expansion or contraction, not churn plus a new customer. Otherwise every upgrade inflates both your churn and your new business.
Calculating MRR across several billing platforms
If all your revenue goes through one Stripe account, Stripe’s own dashboard may be enough. It gets harder when you sell through more than one place, such as direct Stripe subscriptions plus a Shopify app, or Paddle plus Wix.
Each platform models subscriptions differently. Stripe has subscriptions and invoices. Shopify app billing has recurring application charges on each shop. Wix shares payouts rather than live subscription state. To get one honest MRR, you need to:
- Normalize each subscription to a monthly amount using the same rules for intervals, discounts and trials.
- Apply one cancellation policy across every source, even though each platform reports cancellations differently.
- Convert to one currency, and treat exchange-rate swings as their own movement rather than expansion or contraction.
- Decide on gross or net of marketplace commissions, and stay consistent.
- Reconcile against each platform so you can explain every difference by customer.
The core conversion is small. In TypeScript, it might look like this:
type Interval = "week" | "month" | "year";
// Monthly value of one paying subscription, after discounts.
function monthlyAmount(price: number, interval: Interval, intervalCount = 1, discount = 0): number {
const perInterval = price - discount;
if (interval === "year") return perInterval / (12 * intervalCount);
if (interval === "week") return (perInterval * 52) / 12 / intervalCount;
return perInterval / intervalCount;
}
monthlyAmount(1200, "year"); // 100
monthlyAmount(90, "month", 3); // 30, a quarterly plan
Most of the real work is everything around it: deciding which subscriptions are paying, handling trials, mapping each platform’s statuses, and keeping history consistent when you change a rule.
Common MRR mistakes
- Counting an annual payment as one month’s MRR. Divide it by 12.
- Including one-time revenue. Setup fees, services and credit packs inflate MRR and make churn look worse when they don’t repeat.
- Counting free trials. A trial is a lead, not revenue. It becomes MRR at the first paid invoice.
- Using list prices. MRR is what customers actually pay after discounts.
- Treating upgrades as churn plus new. It overstates both.
- Changing your cancellation rule partway through. Your history stops being comparable.
- Mixing gross and net revenue. Pick one basis for marketplace commissions and label it.
- Not reconciling. If your MRR doesn’t roughly match what your billing platforms charge, find out why before you trust the trend.
If you want the annual version of the number, see MRR vs ARR. If churn is the biggest bar in your bridge, start with how to reduce SaaS churn.