Monthly recurring revenue, defined — and the four cases that break it.
MRR is the monthly value of every active subscription you are billing right now. That is the easy part. The hard part is what happens when the revenue arrives on four platforms, in three currencies, across more than one business — which is where two tools start reporting different numbers for the same company.
What MRR means.
Monthly recurring revenue (MRR) is the predictable revenue a subscription business bills each month, expressed as a value at a point in time: the sum of the monthly contract value of every active subscription, with annual contracts divided by twelve and discounts subtracted. One-time charges, trials, taxes and processor fees are excluded.
The word doing the work is recurring. MRR is not what landed in the bank this month — that is revenue, and it includes the setup fee and the annual invoice that will not arrive again until next year. MRR is the part that repeats, which is why it is the number a subscription business is valued and planned on.
The formula.
One line, and then every argument in this field is about what belongs inside the sum.
MRR = Σ (monthly contract value of each active subscription)
An annual plan contributes its price ÷ 12. A discounted plan contributes what is actually charged, not list price. A plan billed quarterly contributes its price ÷ 3.
ARR — annual recurring revenue — is this figure × 12. It is the same subscriptions at a different magnification, smoother month to month, and the one investors tend to quote.
What counts, and what does not.
Most disagreements between two MRR numbers come from this list rather than from arithmetic.
The monthly value of every subscription currently billing.
A $1,200/yr contract is $100 of MRR — not $1,200 in the month it was paid.
A seat added mid-month raises MRR from that moment; a plan downgrade lowers it.
A 20%-off coupon makes a $100 plan $80 of MRR. The list price was never collected.
Setup fees, overages, consulting. Real revenue, not recurring — counting it makes MRR jump in a month that will not repeat.
Nobody is being billed yet. Counting trials is how a dashboard shows growth that churns on day 15.
VAT and Stripe's cut were never yours. Net-of-fees is a separate figure worth tracking — it is not MRR.
Still owed, not yet collected. Worth its own "MRR at risk" number rather than quietly inflating this one.
The four cases that break MRR.
Each of these produces a number that looks completely ordinary and is wrong, which is the only kind of wrong number that survives long enough to be acted on.
01Revenue in more than one currencyClick to read.
▾
Click to read.
A euro subscription and a dollar subscription cannot be added together, and a tool that adds them anyway produces a number that is wrong by whatever the exchange rate happens to be — while looking completely normal.
Either keep the currencies apart and show each, or convert every one of them through a declared rate and say so. What must never happen is a silent sum under a single glyph: €50 rendered as $50 is the failure mode nobody catches, because nothing about it looks broken.
02Billing on more than one platformClick to read.
▾
Click to read.
Stripe excludes one-time charges from its subscription objects. Paddle reports them under the same invoice type by default. Chargebee separates plan MRR from add-on MRR. Three platforms, three definitions, and summing their dashboards gives a fourth number that matches none of them.
Normalise before adding: reduce every platform to the same definition — active subscription × monthly contract value, one-time and trials excluded — and only then sum. The number is then comparable with itself month over month, which is the entire point of tracking it.
03MRR is a level, not a totalClick to read.
▾
Click to read.
Revenue is a flow: you can ask what it was over 30 days. MRR is a stock — it has a value right now, the way a bank balance does. "MRR over the last 7 days" is not a question with an answer, and a date filter that appears to answer it is lying.
Show MRR as of a moment, and show its history as a series of those moments. A level at a past date exists only if something recorded it then; it cannot be reconstructed later at any price.
04More than one businessClick to read.
▾
Click to read.
Every tool in this category assumes one company with one billing account. Run a SaaS and a membership site and a mobile app and you have three MRR numbers and a spreadsheet, which is a number maintained by hand and therefore wrong by the end of the week.
Roll the businesses up. Each keeps its own MRR; the portfolio holds the combined figure, converted into one reporting currency, recomputed whenever any of them changes.
One MRR number across 9 billing platforms.
Normalise, then add. Ploxir reduces every platform to the same definition before summing, so the total is comparable with itself month over month — and keeps currencies apart unless you set a reporting currency, in which case every figure is converted with dated rates rather than relabelled.
Subscriptions, plan changes, refunds — live over webhooks.
Merchant of record. Subscription payments normalised to the same MRR definition.
Plan and add-on MRR, plus MRR at risk from past-due invoices.
iOS and Android subscriptions, counted beside web MRR.
One-off purchases kept out of MRR, where they belong.
MRR and net revenue after fees.
Membership MRR, net of Whop fees.
MRR, MRR at risk, trials and churn.
Membership MRR on your own Stripe account.
Run more than one business and each keeps its own MRR, with the portfolio above them holding the combined figure. See the full SaaS metrics dashboard for the rest of the numbers that sit beside it.

