How to Calculate MRR: The Formula, What Counts and Worked Examples
The MRR formula, what to leave out (taxes, shipping, one-time fees), how to normalize annual and 4-weekly plans, and new, expansion and churn MRR.
Article summary
TL;DR
To calculate MRR, convert every active subscription to its monthly value and add them up. A monthly plan counts at its price, an annual plan at its price divided by 12. Leave out taxes, shipping, one-time charges and trials. 100 subscribers at 100 USD a month plus 50 at 600 USD a year make 12,500 USD of MRR.
- MRR = the sum of the monthly-normalized value of all active subscriptions. Customers × average revenue per customer is a shortcut that only works when everyone pays the same way.
- Normalize every billing interval to a month: annual ÷ 12, quarterly ÷ 3, every 4 weeks × 13 ÷ 12. An every-4-weeks plan counted as monthly understates MRR by about 7.7%.
- Taxes, one-time charges, setup fees, trials and metered usage stay out in Stripe, Chargebee and Recurly. Discounts, failed renewals and pauses depend on settings, so write down your choices.
- Explain each month's change with five movements: new, expansion, reactivation, contraction and churned MRR. Starting MRR plus the movements must equal ending MRR.
- ARR is MRR × 12. MRR is not revenue in your accounts, not cash collected and not bookings.
On this page
MRR (monthly recurring revenue) is the monthly value of the subscriptions you have right now. The formula is short, but every billing tool makes choices about what counts: discounts, failed payments, pauses, cancellations scheduled for later. This guide gives the formula, shows how Stripe, Chargebee and Recurly treat each case, and works the numbers through for a subscription ecommerce brand.
What is MRR?
Monthly recurring revenue is the predictable, recurring part of your income, expressed per month. Stripe defines it as the sum of the monthly-normalized value of all active and past-due subscriptions.1Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue) Chargebee calls it the predictable recurring revenue earned from subscriptions in a specific period.3Chargebee Docs, Monthly Recurring Revenue (Billing 2.0, reports and analytics)
MRR is a management metric, not an accounting figure. Recurly says it plainly: MRR isn't equivalent to GAAP revenue.5Recurly Docs, Monthly recurring revenue Four numbers get confused with it:
MRR
The monthly value of the subscriptions active today. A 600 USD annual plan counts as 50 USD every month.
Revenue
What your accounts recognize once the service or goods are delivered. See revenue recognition and deferred revenue.
Cash collected
What reached your bank: the full 600 USD in the month the annual plan was paid, plus taxes, shipping and one-off orders.
Bookings
The value of contracts signed. The annual plan is a 600 USD booking and a 50 USD addition to MRR.
The MRR formula
MRR = sum of the monthly value of every active subscription
The monthly value is the recurring price, converted to a month, minus recurring discounts, without taxes. When every customer pays the same monthly price, the formula becomes a shortcut: number of paying customers × average monthly revenue per customer. With several plans, calculate each plan and add them up. Stripe's documentation gives this example:1Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue)
- List the plans. Plan A costs 100 USD per month. Plan B costs 600 USD per year.
- Count active subscribers on each plan. 100 on Plan A, 50 on Plan B.
- Convert each price to a month. Plan A: 100 USD. Plan B: 600 ÷ 12 = 50 USD.
- Multiply and add. (100 × 100 USD) + (50 × 50 USD) = 10,000 + 2,500 = 12,500 USD of MRR.
Example from Stripe's Billing analytics documentation.
The customers × average shortcut breaks as soon as people pay on different intervals or at different prices: you need the average per customer, and computing it already requires the per-subscription monthly values. Stripe works it the other way round: average revenue per user is total MRR divided by active subscribers.1Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue)
Normalizing billing intervals
Every interval has to be brought back to one month. Recurly normalizes all charges to a monthly value; Chargebee gives the example of a 1,200 USD annual payment, normalized as 100 USD per month.5Recurly Docs, Monthly recurring revenue3Chargebee Docs, Monthly Recurring Revenue (Billing 2.0, reports and analytics) The conversion is arithmetic:
| Billing interval | Monthly value | Example: 30 USD per cycle |
|---|---|---|
| Monthly | Price | 30.00 USD |
| Every 2 months | Price ÷ 2 | 15.00 USD |
| Quarterly | Price ÷ 3 | 10.00 USD |
| Every 6 months | Price ÷ 6 | 5.00 USD |
| Annual | Price ÷ 12 | 2.50 USD |
| Weekly | Price × 52 ÷ 12 | 130.00 USD |
| Every 2 weeks | Price × 26 ÷ 12 | 65.00 USD |
| Every 4 weeks | Price × 13 ÷ 12 | 32.50 USD |
| Every 6 weeks | Price × 52 ÷ 6 ÷ 12 | 21.67 USD |
The every-4-weeks row is the one that catches ecommerce brands. Four weeks is not a month: a year holds 13 four-week cycles, not 12. Count a 30 USD every-4-weeks plan as 30 USD of MRR and you understate it by about 7.7%.
What counts in MRR, and what doesn't
The three big billing platforms agree on the core and differ at the edges. Here is what their documentation says, item by item:
Shipping is your call, so make it once
None of the three platforms documents how shipping fees affect MRR. Shipping charged to the customer mostly pays the carrier, so including it makes MRR move with delivery costs and free-shipping promotions. Our recommendation: keep it out of MRR, or show it as a separate line, and never switch between the two from one month to the next.
Discounts deserve a second look. Stripe calls subtracting them "a more conservative approach" because it reflects what customers actually pay.1Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue) A subscribe-and-save price that never expires is a permanent recurring discount: Stripe always subtracts it, and so should you. A 25% off first order is one-time: it changes one invoice, not the monthly run rate.
When a subscription enters and leaves MRR
The status of a subscription decides whether it counts. The sequence below follows Stripe's statuses; Chargebee's are close.
Fig. 1From trial to churn: what counts
- TrialingNot in MRR
- ActiveIn MRR, even if the first invoice is unpaid
- Past dueRenewal failed, still in MRR while retries run
- Unpaid or canceledOut of MRR: churned MRR
MRR follows the status, not the payment
The rules behind each step:
- Trial to paid. At Stripe, a trialing subscription doesn't count; once it turns active, it counts even if the first invoice is unpaid.2Stripe Support, Understanding Monthly Recurring Revenue (MRR) You can change that: Stripe lets you consider a subscriber active only when the first payment is received.1Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue)
- Failed renewals. Stripe keeps
past_duesubscriptions in MRR; a subscription markedunpaidor canceled leaves it as churn.1Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue) Chargebee keeps a subscription in dunning Active, and in MRR, until the dunning period ends.3Chargebee Docs, Monthly Recurring Revenue (Billing 2.0, reports and analytics) Recurly shows MRR still being collected as an "In Dunning" series; you choose whether recurring charges from failed invoices count.5Recurly Docs, Monthly recurring revenue - Pauses. Stripe's MRR guide lists a paused subscription among the events that count as churn.2Stripe Support, Understanding Monthly Recurring Revenue (MRR) Chargebee reports Pause MRR on its own line, inside gross MRR churn, while stating that paused subscriptions aren't counted in churn.3Chargebee Docs, Monthly Recurring Revenue (Billing 2.0, reports and analytics)6Chargebee Docs, What is Pause MRR and Cancellation/Churn MRR
- Cancellations. Chargebee counts a canceled subscription until its cancellation date; its month-end MRR is zero.4Chargebee Docs, What is included/excluded in the MRR calculation Stripe goes further: a subscription set to cancel at the end of the period stops counting at the time of the request, not when the period ends.2Stripe Support, Understanding Monthly Recurring Revenue (MRR) Chargebee, by contrast, keeps non-renewing subscriptions in MRR until they end.4Chargebee Docs, What is included/excluded in the MRR calculation
So the same customer who clicks "cancel" on the 5th, effective on the 30th, leaves MRR on the 5th in Stripe and on the 30th in Chargebee. Neither is wrong. If you compare a dashboard with a spreadsheet, check this rule first.
MRR is also measured at a point in time. Stripe's monthly report gives the MRR of each subscriber at the end of each month, and Recurly's monthly view shows data for the last day of the period.1Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue)5Recurly Docs, Monthly recurring revenue Pick the same snapshot day every month: the last day is the usual choice.
The MRR components: new, expansion, contraction, churn, reactivation
Total MRR tells you where you are. The components tell you why it moved. Billing tools split the change into five movements:
| Component | What creates it | Effect |
|---|---|---|
| New MRR | A first paid subscription, including a trial that converts | + |
| Expansion MRR | An existing subscriber pays more: higher plan, larger quantity, recurring add-on, smaller discount | + |
| Reactivation MRR | A former subscriber who had churned starts paying again | + |
| Contraction MRR | An existing subscriber pays less, but more than zero: cheaper plan, fewer items, longer interval | − |
| Churned MRR | A subscription is canceled, ends unpaid, or drops to zero | − |
These definitions follow Stripe.2Stripe Support, Understanding Monthly Recurring Revenue (MRR)1Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue) Chargebee groups things differently: it puts reactivation and free-to-paid inside expansion MRR, and adds pause MRR to downgrades and cancellations to form gross MRR churn.3Chargebee Docs, Monthly Recurring Revenue (Billing 2.0, reports and analytics) Stripe adds a sixth line, an FX adjustment, when subscriptions in other currencies change value against your reporting currency; Chargebee shows exchange-rate effects as their own category too.1Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue)3Chargebee Docs, Monthly Recurring Revenue (Billing 2.0, reports and analytics)
The formulas:
Net new MRR = new MRR + expansion MRR + reactivation MRR − contraction MRR − churned MRR
Ending MRR = starting MRR + net new MRR (± FX adjustment)
MRR growth rate = net new MRR ÷ starting MRR × 100
Here is one month for a subscription brand, worked through. Illustrative example: on March 1, MRR is 40,000 USD. During March, 120 new subscribers add 4,200 USD. Existing subscribers move to larger boxes for 600 USD. Fourteen former subscribers return for 350 USD. Others switch to smaller boxes or longer intervals for 450 USD. Cancellations and renewals that ended unpaid remove 2,100 USD.
Fig. 2One month of MRR movements
| Line | Amount |
|---|---|
| Starting MRR, March 1 | 40,000 USD |
| + New MRR | 4,200 USD |
| + Expansion MRR | 600 USD |
| + Reactivation MRR | 350 USD |
| − Contraction MRR | 450 USD |
| − Churned MRR | 2,100 USD |
| Ending MRR, March 31 | 42,600 USD |
Start + movements = end
2,600 USD
Net new MRR: 4,200 + 600 + 350 − 450 − 2,100
6.5%
MRR growth rate: 2,600 ÷ 40,000
511,200 USD
ARR: 42,600 × 12
The bridge is also a control. Add up the monthly value of every active subscription on March 31: if it doesn't come to 42,600 USD, some status changes weren't classified, and one of the five lines is wrong by that amount.
Two classification rules keep the components clean:
- Record each change once, in one category. An upgrade is expansion, not churn of the old plan plus new MRR on the new one. A returning subscriber is reactivation, not new.
- Use the change in run rate, not the invoice. A mid-cycle upgrade from 30 to 45 USD a month is 15 USD of expansion MRR, whatever the prorated invoice says. Stripe's MRR doesn't move with one-off refunds; Recurly, which builds MRR from invoiced charges, does count proration credits from upgrades and downgrades.2Stripe Support, Understanding Monthly Recurring Revenue (MRR)5Recurly Docs, Monthly recurring revenue
The movements feed your retention metrics. Churned and contraction MRR divided by starting MRR is gross revenue churn; the formulas and their pitfalls are in how to calculate churn rate. Comparing what the starting base kept, with and without expansion, is the subject of gross vs net retention.
Inside Tagada
Build the funnel once, route every customer to the right offer
Checkout, upsells and subscriptions on one flow, with conditions per country, order or customer.

MRR vs ARR
Annual recurring revenue is the same run rate over a year: Stripe defines ARR as MRR × 12.2Stripe Support, Understanding Monthly Recurring Revenue (MRR) In the March example, 42,600 USD of MRR is 511,200 USD of ARR.
ARR is not a forecast of next year's revenue. It assumes every current subscription keeps paying today's price for twelve months, with no churn and no new customers. For a business on monthly plans that churns a few percent a month, the next twelve months will look different. Use ARR when you need an annual figure, and MRR to follow what changes month to month.
Don't build ARR by adding up annual plans at their full price and monthly plans × 12 separately with different rules. Calculate MRR once, with every interval normalized, and multiply.
MRR in subscription ecommerce: boxes, skips and shipping
Billing documentation is written with software subscriptions in mind. A physical subscription raises questions the docs don't answer: boxes whose content and price change, skipped deliveries, shipping on every order, add-ons bought once. Here is one subscriber, valued by the rules above:
- Box price, after the permanent 10% subscriber discount
- 32.00 USD
- Shipping per box
- 5.95 USD, excluded
- Sales tax
- Excluded
- 25% off the first box
- One-time, excluded
- Mug added once to the next box
- 14.00 USD, one-time, excluded
- MRR
- 32.00 × 13 ÷ 12 = 34.67 USD
Illustrative record.
The cases that need a written rule:
| Situation | What the docs say | How to count it |
|---|---|---|
| Variable box (customer swaps products, price changes) | Billing tools value a subscription at its current recurring price and quantity | Use the price of the next scheduled order. Price changes are expansion or contraction |
| Customer skips one delivery | Not covered by Stripe, Chargebee or Recurly | Keep the subscription in MRR at its normal value. Track skip rate apart: repeated skips often come before a cancellation |
| Customer pauses for two months | Stripe counts a pause as churn; Chargebee reports pause MRR on its own line2Stripe Support, Understanding Monthly Recurring Revenue (MRR)3Chargebee Docs, Monthly Recurring Revenue (Billing 2.0, reports and analytics) | Take paused subscriptions out of MRR and show paused MRR next to it. A resume is reactivation |
| Customer changes from every 4 weeks to every 8 weeks | Lower monthly value | Contraction MRR, even though the box price didn't change |
| Prepaid plan (3 boxes paid upfront, then renews) | Normalized like any multi-month interval | Price ÷ number of months covered |
| Gift subscription that doesn't renew | Chargebee keeps non-renewing subscriptions in MRR until they end4Chargebee Docs, What is included/excluded in the MRR calculation | Count it while active; expect churned MRR on its end date |
| One-off order by a subscriber | One-time charge | Exclude. It's revenue, not recurring revenue |
A pause with no end date
If customers can pause indefinitely, paused MRR becomes a parking lot for cancellations. Cap the pause length, and when a pause runs past the cap, move its MRR to churned. Report paused subscribers next to MRR, so a growing pause count can't hide behind a stable total.
Repeat buyers who reorder without a subscription don't create MRR at all, however regular they are. Measure them with repeat-purchase and customer lifetime value metrics instead.
How to calculate MRR in a spreadsheet
Export your subscriptions (one row per subscription, not per customer or per invoice) and add one column that computes the monthly value.
| Column | Content | Formula (row 2) |
|---|---|---|
| A | Subscription ID | sub_0412 |
| B | Status on the snapshot day | active |
| C | Recurring price per cycle, after recurring discounts, without tax or shipping | 32.00 |
| D | Interval unit | week |
| E | Interval count | 4 |
| F | Monthly value | =IF(D2="week", C2*52/E2/12, IF(D2="year", C2/(12*E2), C2/E2)) |
| G | Counts in MRR? | =IF(OR(B2="active", B2="past_due"), 1, 0) |
Then MRR = =SUMPRODUCT(F2:F5000, G2:G5000). Row 2 gives 32 × 52 ÷ 4 ÷ 12 = 34.67 USD.
Take a snapshot on the same day each month, keep the old files, and compare two snapshots subscription by subscription to classify the movements: an ID present only in the new file is new or reactivated, an ID that dropped out is churned, an ID whose monthly value changed is expansion or contraction. If you decide that past_due subscriptions don't count, change column G and say so next to the number.
Common MRR calculation mistakes
- MRR jumps in the month annual plans are sold, then sagsAnnual payments are counted in full when collectedDivide every annual price by 12, every month
- MRR is higher than recurring sales in your processorTrials, unpaid subscriptions or one-time charges are countedFilter by status and exclude non-recurring lines
- MRR moves with free-shipping promotionsShipping is includedExclude shipping or show it on its own line
- Every-4-weeks subscribers look smaller than they areTheir price is counted as a monthly valueMultiply by 13 and divide by 12
- Starting MRR plus movements doesn't equal ending MRRSome status changes aren't classifiedCompare snapshots subscription by subscription
- Dashboard and spreadsheet disagree by a stable amountDifferent rules for discounts, past due or scheduled cancellationsAlign the settings and write them down
Three more that don't show up as a pattern:
- Using processor payouts or invoice totals as MRR. Payouts reflect settlement timing, refunds and disputes; invoices mix recurring and one-time lines, tax and shipping. MRR comes from subscriptions, not from money movements.
- Counting a failed renewal as churn the day it fails. Most renewals are retried. The subscription stays in MRR while it's past due and leaves it only if recovery fails. Why renewals fail, by decline code, is in subscription payment failures; the recovery process is in what is dunning.
- Changing definitions without restating history. If you start subtracting one-time discounts in June, MRR before and after June isn't comparable. Restate past months, or mark the break on the chart.
Write your rules down in one place: snapshot day, interval conversion, discounts, past-due treatment, pauses, scheduled cancellations, shipping. Anyone recomputing the number should land on the same figure.
Where Tagada fits
How Tagada helps
Renewals that keep charging
Tagada runs subscriptions (trials, billing cycles, dunning and automatic retries) next to the checkout. Payments can be routed across Stripe, Adyen and Tagada's own processor, TagadaPay, with one set of rules and a cascade on decline. The card vault moves customers between merchant accounts without collecting their cards again, so running subscriptions keep charging. That works on the part of churned MRR that comes from failed renewals rather than cancellations. Pricing is on the pricing page.
Whatever tool computes it, MRR is the same calculation: active subscriptions only, every interval brought to a month, taxes, shipping and one-time charges left out, and each month's change explained by new, expansion, reactivation, contraction and churned MRR.
Frequently asked questions
How do you calculate MRR?
What is the MRR formula?
Do annual plans count in MRR?
Are taxes, shipping and one-time fees included in MRR?
What is the difference between MRR and ARR?
What is net new MRR?
Sources
Checked October 14, 2026- Stripe Docs, Billing analytics: metric definitions (MRR, MRR growth, active subscribers, ARPU, churned revenue)
- Stripe Support, Understanding Monthly Recurring Revenue (MRR)
- Chargebee Docs, Monthly Recurring Revenue (Billing 2.0, reports and analytics)
- Chargebee Docs, What is included/excluded in the MRR calculation
- Recurly Docs, Monthly recurring revenue
- Chargebee Docs, What is Pause MRR and Cancellation/Churn MRR
Tagada
Keep renewals collecting, keep MRR in place
Funnels, one-click upsells, subscription billing and payment routing, on one customer record.
- 01Create your free account
- 02Connect your store or build a checkout
- 03Launch funnels, upsells and subscriptions
