Back to Blog

Monthly Recurring Revenue: Formula and App Subscription Worksheet

Calculate MRR across monthly and annual subscriptions, reconcile growth movements, and separate recurring value from cash with a worked app example.

Monthly recurring revenue (MRR) expresses recurring subscription value on a monthly basis. For an app with monthly and annual plans, normalize each included subscription to a month, then add the amounts. The result is a subscription metric, not the cash deposited this month or a guarantee of future collections.

This guide combines a definition, calculation worksheet and month-end reconciliation. The figures below describe a fictional app. They are not Nuxie customer results, industry benchmarks or a valuation model.

1. Write the reporting definition first

Before comparing dashboards, record the reporting date, timezone, currency, subscription states, discount policy and treatment of fees. Two totals can differ because their definitions differ, even when both systems received the same transactions.

Stripe documents monthly normalization for active and past-due subscriptions, exclusions for taxes and metered products, configurable discount treatment, and removal after cancellation or an unpaid state. Item-level trials exclude the trialing items while other paid items can still contribute. These are Stripe definitions; check your own provider and integration before applying them elsewhere.

ChartMogul's MRR documentation illustrates why that distinction matters: refund deductions depend on the billing integration, and transaction-fee handling is configurable. A refund and a recurring subscription change should not automatically become two deductions for the same event.

2. Normalize each plan, then sum the subscriptions

For the following worksheet, use USD, a month-end snapshot, and recurring prices after the stated discounts. Assume all listed subscriptions qualify under the chosen reporting policy. Exclude one-time purchases, taxes, fees and usage charges from this illustrative report; track those separately.

Plan groupIncluded subscriptionsRecurring priceMonthly value eachGroup MRR
Monthly80$12 per month$12$960
Annual30$120 per year$120 / 12 = $10$300
Discounted monthly10$12 less a recurring 25% discount$9$90
Total120Mixed billing periodsNot a single sticker price$1,350

The formula is MRR = sum of included monthly-normalized subscription amounts. Multiplying an account count by average recurring revenue per account can reproduce the total only when both inputs use the same population and definition. Multiplying every subscriber by the most prominent plan price does not work for this mixed-plan example.

The 30 annual subscriptions contribute $300 to this snapshot, whether their renewal payments happened this month or earlier. To forecast bank receipts, build a separate schedule of renewal dates, expected collection, refunds and settlement timing. Do not multiply MRR by twelve and label the result cash already earned.

3. Explain the change from opening to closing MRR

Now suppose the fictional app starts a later month at $1,350 MRR. Keep the reporting definition unchanged and record the following movements. Each row describes a distinct event; do not count the same customer transition in two categories.

MovementIllustrative eventChange
NewEight first-time paying subscriptions at $12 monthly+$96
ExpansionFive existing $12 subscriptions become $18 subscriptions+$30
ReactivationTwo previously churned $12 subscriptions return+$24
ContractionThree existing $18 subscriptions become $12 subscriptions−$18
ChurnFour $12 subscriptions leave the included population−$48
Currency adjustmentNone: this example uses USD only$0

Closing MRR = $1,350 + $96 + $30 + $24 − $18 − $48 = $1,434. Net change is $84. Stripe's MRR growth definition includes new, expansion, reactivation, contraction, churn and foreign-currency effects. Keep currency changes separate so they are not mistaken for customer behavior.

A first-time free-to-paid conversion belongs in the new row in this example, not expansion. An existing paying subscription moving to a higher recurring amount contributes only the difference. A returning previously churned customer has a different history from a first-time customer. Write these classification rules beside the worksheet.

4. Reconcile the report before interpreting it

Use a subscriber-level opening snapshot, a movement ledger and a closing snapshot. The ledger should explain the difference between the two totals. If it does not, investigate individual records before changing the growth plan.

  1. Match the population. Compare stable account and subscription identifiers, not email addresses or localized plan labels. Check that annual subscriptions are included once and that duplicate imports are not counted twice.
  2. Match the clock. Use the same timezone and reporting cutoff. A late-arriving cancellation should be traceable to its effective time and ingestion time.
  3. Match the policy. Record changes to discount, fee, delinquency and currency settings. A definition change can alter a chart without a new purchase or cancellation.
  4. Explain each exception. For a pause, refund, failed payment or plan change, inspect the subscription state and provider rule. A payment event alone does not establish the recurring amount.
  5. Retain the evidence. Save the exported snapshots, chosen definitions, calculation and unresolved differences with the reporting period. The next reviewer should be able to reproduce the total.

For a practical acceptance check, ask a teammate to independently reproduce the $1,350 opening total and the $1,434 closing total from the tables above. Then introduce one deliberate error, such as counting the $120 annual price as monthly. They should identify a $3,300 overstatement across the 30 annual subscriptions, rather than explain it as growth.

5. Connect the result to a testable product question

The worksheet tells you where recurring value changed; it does not establish why. A rise in new MRR might reflect more visitors, a price change, a different customer mix or a better onboarding experience. A chart alone cannot distinguish those explanations.

Choose one question and preserve its context. For example: did an onboarding explanation help eligible new customers reach the first useful action and then subscribe? Define the audience, exposure, outcome and observation window before comparing results. Keep acquisition changes and price changes visible in the analysis.

Our paywall testing guide explains planning and purchase-path checks. The sample-size calculator models a binary conversion outcome; it does not calculate MRR or prove revenue lift. Use the onboarding implementation worksheet when the hypothesis involves branching, saved progress or interrupted journeys.

Questions to settle in your own report

Is MRR the same as recognized revenue?

No. Keep the subscription metric, collected cash and accounting reports separately labeled. This worksheet defines an operational subscription snapshot; it does not prescribe an accounting treatment.

Can two tools show different MRR?

Yes. Compare the subscription population, reporting cutoff, currency conversion, fee settings, discount policy and integration-specific rules before deciding which total to use. Record the chosen definition rather than silently mixing reports.

Does higher MRR prove the latest product change worked?

No. Trace the movements, inspect the relevant cohorts and evaluate the change with an appropriate experiment or other defensible design. The illustrative increase above demonstrates arithmetic, not causality or a promised business result.