Indiecity

Guide · 17 Aug 2026 · 14 min

What is MRR (and which number to watch)

Field guide

One spreadsheet line for recurring revenue, one for cash that actually hit the account.

You open the dashboard. Last 30 days looks strong. Someone on X posted a round MRR number. Your spreadsheet has a third figure. They cannot all be the number that matters. The definition has not changed in 2026. The screenshot culture got louder.

MRR is not “money that showed up recently.” It is not “my best month times twelve.” It is not total sales. Indiecity is for one person or a team under twenty. You do not need a finance team. You need one definition you can defend, and a second number for cash, so you do not lie to yourself with a pretty chart.

What ChartMogul and Stripe mean by MRR

ChartMogul defines Monthly Recurring Revenue as a measure of your normalized (amortized) monthly subscription revenue. Normalized means you turn every active subscription into a monthly slice, even when the customer paid for a year up front.

In this example your MRR is (10 + 10 + (60/12) + 8 + 15) = $48.

Stripe defines MRR as the predictable recurring income generated from customers on a monthly basis. They separate it from total revenue, which also includes one-time fees, hardware, setup charges, and other non-recurring lines. If it is not expected to repeat on a subscription cadence, it is not MRR.

Same job in both places: measure the subscription base as if it were a monthly run rate. Not a bank statement. Not a launch spike.

How to calculate it without inventing a formula

ChartMogul publishes the rule in plain math: take the amount paid for the subscription item and divide by the number of months in the plan interval. A monthly plan at $49 is $49 of MRR. A yearly plan at $490 is $490 ÷ 12 of MRR. You sum those monthly slices across active subscribers.

Their public walkthrough uses five customers. One pays $10 a month. Another pays $10 a month plus a $100 setup fee (the fee is left out of MRR). One paid $60 for the year ($5 of MRR). One sits on a discount at $8 a month. One is on premium at $15. Total MRR: $48. That example exists so people stop stuffing one-time cash into the recurring line.

Stripe’s simpler framing is also public: for flat plans, you can sum plan price times seats on that plan, or think in customers times average monthly revenue per customer when everyone is truly monthly. The edge cases (proration, coupons, trials) are why billing tools argue with each other. The principle does not change. Recurring only. Monthly slice. Active plan.

ARR is the same base on a longer label

Stripe’s write-up on MRR and ARR treats ARR as that same recurring revenue annualized over twelve months, assuming the current customers, prices, and contracts stayed put. MRR shows short-term movement. ARR is the same stack of contracts with a yearly label for planning and scale talk.

ChartMogul is explicit that “ARR” is used two ways. Annualized Run Rate is MRR × 12, and that is what their product means by ARR. Annual Recurring Revenue in the older enterprise sense only counts contracts of a year or longer. For a mostly monthly indie product, when someone says ARR they almost always mean run rate: your MRR times twelve. Say which one you mean if you ever put the number on a slide.

ARR is not a promise. It does not mean the money already hit the bank twelve times. It means “if this base held for a year.” Churn can still cut it. That is why the monthly number stays useful even when the yearly label looks bigger.

Last 30 days is not MRR

Last 30 days of payments answers a real question: what cash tried to clear recently. Founders go wrong when they paste that total into a tweet as MRR. An annual invoice lands and the month looks like a company. Three setup fees land and the chart spikes. Two big refunds land and it collapses. None of that is the steady subscription base.

The other vanity move is worse: take a good month of total revenue and multiply by twelve. ChartMogul calls that out when people misuse ARR language for non-subscription sales. You are not measuring recurring revenue. You are treating a spike like a run rate.

Use last 30 days for runway and “can I pay the tools.” Use MRR for “is the subscription base bigger than last month.” If you only watch one, you will either feel rich after a prepay or feel poor while the base is quietly fine.

What moves MRR (and why the total alone misleads)

ChartMogul breaks MRR into movements: new business, expansion, reactivation, contraction, and churn. Stripe uses the same family of ideas (new, expansion, churn, contraction, net new). The total can sit still while the story changes. Ten new $20 customers and ten $20 cancels look like a flat month. You worked for zero net growth.

  • New: someone starts paying who was not paying.
  • Expansion: an existing customer upgrades or adds seats.
  • Contraction: they downgrade or drop seats but stay.
  • Churn: the subscription ends.
  • Reactivation: a canceled customer comes back on a plan.

For a small product, you can track this in a sheet with one row per customer and the monthly slice. You do not need enterprise software on day one. You need honesty about who joined, who left, and who paid more.

Which number an indie should watch

Watch three lines. Not twenty dashboards.

  1. MRR: sum of active subscription monthly slices (ChartMogul’s rule). This is the base.
  2. Net new MRR this month: new + expansion + reactivation, minus contraction and churn. This is whether the base is growing.
  3. Cash collected (and cash in the bank): what actually cleared. This is whether you can pay yourself and your tools.

Early on, when you still need ten people who pay, the customer count that paid matters as much as the dollars. MRR of a few hundred can be real. A waitlist of a thousand is not revenue. Charging on day one beats a vanity graph with no cards on file. If you are aiming at a first round number, how to get to $1k MRR uses this same honest base.

When you have annual plans, expect cash and MRR to disagree on purpose. A year paid today is twelve months of MRR and one month of a fat deposit. That is healthy for bootstrap cash. It is dishonest if you call the full deposit “this month’s MRR.”

What to leave out of MRR

  • Setup fees, onboarding packages, and one-off consulting.
  • Lifetime deals and pure one-time license sales.
  • Failed payments you hope will retry (count them when they succeed, under your rules).
  • Friends who “will pay next week.”
  • Gross merchandise or marketplace volume that is not your subscription fee.
  • A single great month of total sales multiplied by twelve.

If a line is not a recurring subscription you can point at, it does not go in MRR. Put it in cash or total revenue so you still see it. Just do not mix the buckets when you talk about the business. This week, put the rule in a sheet you can reuse.

A simple sheet for this week

Open a blank sheet. One row per customer. Use ChartMogul’s formula and Stripe’s split (recurring vs one-time). Nothing else.

This week’s MRR sheet
Columns:
A Customer
B Plan price (what they are billed)
C Interval months (1 monthly, 12 yearly, 3 quarterly)
D Ongoing discount amount (0 if none)
E Monthly slice = (B − D) / C     ← ChartMogul rule. This is their MRR.
F Status this month: active / new / expansion / contraction / churn / reactivation
G One-time cash this month (setup, consulting, lifetime). Do not add to E.
H Cash collected this month (what actually cleared, including annual prepay and G).

MRR (one cell) = SUM of E for every row that is not churn.
Net new MRR = SUM of E where F is new, expansion, or reactivation  minus  SUM of E where F is contraction or churn.
Cash this month = SUM of H.
Bank = what is in the account today.

Worked example (ChartMogul’s five customers):
Customer A. $10 / 1 month / $0 discount. Monthly slice = 10. Status: active.
Customer B. $10 / 1 month / $0 discount, plus $100 setup in column G. Monthly slice = 10. Setup stays out of MRR.
Customer C. $60 / 12 months / $0 discount. Monthly slice = 5. Cash H = 60 if they paid this month.
Customer D. $10 list, $2 ongoing discount. Monthly slice = 8.
Customer E. $15 / 1 month / $0 discount. Monthly slice = 15.
MRR = 10+10+5+8+15 = 48. Same as ChartMogul’s public walkthrough.

If a cell in G looks big, do not rename it MRR.
  1. Today. Build the columns. Enter every active paid subscription. Compute E. Sum = MRR.
  2. Today. Mark F for anything that changed this calendar month.
  3. Today. Fill H from Stripe (or your processor). Fill G for setup, consulting, lifetime.
  4. This week. Write three numbers at the top: MRR, net new MRR, cash collected. Do not post the cash number as MRR.
  5. Friday. If an annual invoice landed, confirm E is still the monthly slice, not the full invoice.

That is enough for a solo product. When the sheet hurts to maintain, export from Stripe or a metrics tool. Keep the same definitions you used by hand so the history still means something.

What to stop doing

  • Calling last 30 days “MRR” in a public post.
  • Booking a full annual invoice as one month of recurring revenue.
  • Including setup fees because the dashboard total looked small.
  • Annualizing a spike and treating it like a run rate you earned.
  • Ignoring churn because the total MRR still went up from new customers.
  • Optimizing the screenshot instead of sending the next invoice.

Watch the number you can defend

MRR is normalized monthly subscription revenue. ChartMogul and Stripe both say that in public language. ARR for most of us is that base times twelve. Last 30 days is cash movement. Watch the base, watch whether the base grew, and watch the bank. Do not watch a fourth number if it is just cash renamed as MRR.

When the revenue is real and the story is yours, write it down. Count this month in MRR Maker. You can join Indiecity while you keep the sheet honest. The MRR line is still yours to keep clean.

FAQ

Questions people get stuck on

Is last 30 days of Stripe revenue the same as MRR?

No. Last 30 days is money that hit (or tried to hit) your account in a window: one-time fees, setup charges, annual invoices paid in full, refunds, and failed payments all move that total. MRR only counts the recurring subscription portion, normalized to a month. Use both. Do not treat the 30-day total as MRR on a screenshot.

How do I count an annual plan in MRR?

Divide the subscription amount by the months in the plan. ChartMogul’s rule is amount paid for the subscription item divided by the number of months in the plan interval. A $600 year plan is $50 of MRR, not $600 in the month they paid. The cash still shows as $600 when it lands. That is the point of tracking both numbers.

Do setup fees, consulting, or one-off sales count toward MRR?

No. ChartMogul’s public example drops a one-time setup fee from MRR on purpose. Stripe’s definition of MRR is predictable recurring income, and they call out that total revenue also includes one-time fees and setup charges that are not MRR. Put those lines in cash or total revenue. Keep them out of the recurring number.

What is ARR, and is it just MRR times twelve?

For most modern SaaS with monthly and annual mix, the number people mean is Annualized Run Rate: MRR × 12. ChartMogul uses that definition in their product and docs. Stripe describes ARR as the same recurring base annualized over 12 months if customers, pricing, and contracts stayed the same. That is a run rate, not a guarantee that every dollar will still be there next year.

I only have a handful of paying customers. Should I care about ARR?

Track MRR and cash first. ARR is just MRR × 12 with bigger digits. It is useful when you talk scale or plan a year. It does not make five customers look like a company. If you still need ten people who pay, that work matters more than annualizing a small base.

What if someone pays with a lifetime deal?

A lifetime payment is not recurring. Do not invent monthly MRR from it to pad a chart. Put the cash in the bank number. If you still owe ongoing support, that is a cost problem, not a reason to fake subscription revenue. MRR only works when the customer is on a recurring plan you can name.

Which MRR should I watch week to week: total or net new?

Watch total MRR so you know the size of the base. Watch the change: new and expansion in, churn and contraction out. ChartMogul and Stripe both break MRR into those movements for a reason. A flat total with quiet churn can hide that you are replacing cancelers instead of growing. Net new MRR tells you if the base is actually rising.

Stripe Billing shows something called MRR. Can I trust that number?

Stripe documents MRR as the monthly revenue you can reliably expect on a recurring basis, and their Billing docs explain how they compute it. Tools still disagree on edge cases (discounts, trials, usage, multi-currency). Pick one definition, keep it, and do not mix Stripe’s number with a hand spreadsheet that uses different rules when you post a milestone.

Should I post my MRR in public?

Only if the number is real under a definition you can defend. Public MRR that includes one-time cash, annual prepay booked as one month, or a friend’s “will pay later” is vanity. If you write the story with your name on it, [send it](/write). Fake digits help nobody.

For a bootstrapped product, is cash more important than MRR?

Cash pays rent. MRR tells you whether the subscription base is growing. You need both. A big annual invoice can make cash look healthy while MRR barely moved. A rising MRR with failed cards can leave you short this Friday. [Indiecity is for one person or a team under twenty](/about). Watch the base and the bank.

More from the journal