martechdevs has been acquired by Growth and Analytics Partners LLC

Net Revenue Retention: Calculate It From a Consistent Customer Cohort

Jafrin Akter Alo

Data Engineer and Co-founder, martechdevs

Last updated 10 min read

Blog cover: Net Revenue Retention: Calculate It From a Consistent Customer Cohort

Net revenue retention measures how recurring revenue from an existing customer cohort changes over a defined period, including expansion, contraction and churn. Keep the customer cohort fixed, use the same revenue basis at both boundaries and exclude new customers. A dependable NRR report also explains reactivations, currency effects, billing-status rules and the customer-level movements behind the headline percentage.

Last updated: 23 September 2026.

Start with a fixed customer set

For an opening-cohort MRR definition, select customers with eligible recurring revenue at the beginning of the period. Measure those same customers at the end, keeping churned customers in the cohort with zero ending MRR.

The core calculation is:

NRR = ending recurring revenue from the opening cohort ÷ beginning recurring revenue from that cohort × 100.

The equivalent movement view starts with beginning revenue, adds expansion, subtracts contraction and churn, and applies any explicitly defined treatment of cohort reactivation or other adjustments. Stripe's net dollar retention guide describes the familiar starting-MRR movement formula. The cohort restriction is what prevents new business from inflating retention.

This guide uses monthly-normalized recurring revenue at two boundaries. A company can choose a different disclosed basis, such as revenue earned by a fixed customer cohort across two equal-length periods. Do not mix a point-in-time MRR numerator with a twelve-month revenue denominator.

A data warehouse and customer data model is useful when billing accounts, CRM companies and product workspaces do not line up. The calculation is easy once the customer relationship and revenue rules are stable. Most difficult NRR disagreements occur before the division.

Separate NRR from total growth and customer retention

NRR excludes new customers entering after the opening boundary. Total recurring-revenue growth includes them. Customer retention counts customers, while NRR weights them by recurring revenue.

A business can acquire enough new customers to grow total MRR while its existing customer base shrinks. It can also retain most customers but lose a large account, producing weak NRR. These are different commercial problems.

Do not rename an invoice total “MRR.” An annual contract paid upfront changes cash collection timing; its recurring value still needs normalization under the chosen convention. ChartMogul's MRR documentation describes monthly-normalized subscription values and currency conversion. The exact inclusions and adjustments remain part of your metric contract.

For a straightforward $1,200 annual subscription with a twelve-month service period and no other adjustments, normalized MRR is $100. Recording $1,200 in the payment month and zero afterward turns collection timing into apparent expansion and churn.

Work through an opening-cohort ledger

Consider four hypothetical customers at the opening boundary:

  • Customer A starts at $1,000 MRR and ends at $1,500.
  • Customer B starts at $2,000 and ends at $1,600.
  • Customer C starts at $1,000 and ends at zero after confirmed churn.
  • Customer D starts at $1,000 and remains at $1,000.

Beginning MRR is $5,000. Ending MRR from the same four customers is $4,100. NRR is $4,100 ÷ $5,000 = 82%.

The movement bridge gives the same answer: $5,000 + $500 expansion − $400 contraction − $1,000 churn = $4,100. If the bridge does not equal the ending snapshot, find the missing movement or inconsistent rule before publishing.

Now add customer E, newly acquired during the period, with $900 ending MRR. Also add customer F, who had churned before the opening boundary and reactivated during the period at $600. Neither belonged to this opening cohort. Under this explicitly fixed-cohort definition, neither enters its NRR numerator.

Total company MRR ends at $5,600: the opening cohort's $4,100 plus $900 new business and $600 outside-cohort reactivation. Company MRR grew 12%, while opening-cohort NRR was 82%. Both statements are true and useful.

Logo retention for the original four customers is 3/4, or 75%. An endpoint gross-retention view that caps each customer's retained value at its opening MRR gives $1,000 + $1,600 + $0 + $1,000 = $3,600, or 72%. It excludes A's $500 expansion.

These are teaching figures, not a performance benchmark. The small cohort makes the arithmetic transparent; a real report needs enough detail to explain concentration, segment mix and revenue-policy changes.

Make reactivation a named policy

Reactivation is where two apparently standard formulas often diverge. A customer active at the opening boundary can churn and return during the measurement period. Another customer may already be inactive when the cohort is formed, then return later. Those are not the same cohort situation.

In the example, suppose C churns mid-period but returns before the closing boundary at $500 MRR. C was in the opening cohort, so the endpoint calculation includes that $500. Ending cohort MRR becomes $4,600 and NRR becomes 92%. Preserve the churn-and-return path in the movement ledger even though the endpoint shows only a net $500 reduction.

Customer F still remains outside the opening cohort. Report F's reactivation as a separate company-growth movement. Do not expand the opening cohort after observing who returned.

Vendor reports can offer different reactivation settings. ChartMogul's Net MRR Retention report documents reactivation and contraction options, plan-segment handling and projected values for an unfinished period. Record those settings when reconciling a vendor dashboard with your own fixed-cohort model.

Do not call either number wrong until you compare the definitions. However, a report that changes its treatment between months without disclosure is not a stable basis for decisions.

Build reliable boundary snapshots

Keep one row per customer, boundary date and revenue basis. Useful fields include the canonical customer ID, original billing identifiers, eligible recurring amount, currency, normalization method, subscription state, effective date, source update time and model version.

Aggregate multiple subscriptions to the customer before classifying customer churn. Cancelling one product while retaining another may be contraction at customer level, even if it is churn at subscription level. Product-specific retention can be useful, but label its grain and handle transfers between products explicitly.

A missing closing row is not automatically zero. It could mean a failed connector, deleted source record or incomplete snapshot. Convert absence to zero only when the underlying source evidence establishes no eligible recurring revenue under the policy. Otherwise retain an unresolved state and stop that cohort from being presented as reconciled.

Use a left join from the opening cohort to the closing snapshot. An inner join can remove churned customers and artificially improve NRR. Keep customer-level opening and closing values available for inspection, even if the dashboard only displays aggregates.

When billing migrations create new customer IDs, maintain an audited mapping to the same economic customer. Without it, one migration can appear as churn plus new business, depressing retention and overstating acquisition. A single customer view should support this mapping without erasing the source records that explain it.

Agree on discounts, delinquency and cancellation timing

MRR is sensitive to configuration. Stripe Billing Analytics documentation describes configurable discount treatment and active-subscriber rules. Its documented MRR definition also includes active and past-due subscriptions, with stated exclusions. Your report must use the policy the business approved, rather than assuming paid cash and eligible recurring value are identical.

A discount expiration can increase MRR without any additional product usage. Separate price and discount changes from seat, product and consumption expansion when diagnosing the result. Otherwise a customer-success team may take credit for an expansion it did not create, or miss declining usage beneath a price rise.

Cancellation timing also matters. A customer who schedules cancellation today may retain paid service until next month. ChartMogul's data settings document several churn-recognition options. Choose a convention and retain both the cancellation request and effective service-end timestamps for operational use.

Customer success can act on scheduled cancellation immediately while the revenue metric waits until the defined effective boundary. Those uses do not need to share one timestamp.

Refunds, credits and one-time implementation fees need separate policies. A one-off refund does not necessarily change the ongoing subscription run rate. Keep cash adjustments and recurring-value changes distinguishable instead of subtracting every payment adjustment from MRR by default.

Separate currency movement from customer behavior

Suppose an unchanged €100 monthly subscription is worth $110 at the opening exchange rate and $120 at the closing rate. A reported-currency comparison shows about 109.1% retention for that customer, although its euro subscription did not expand.

A constant-currency view can value both boundaries using the same documented exchange-rate convention, yielding 100% in this example. Preserve original-currency amounts, conversion rates and rate dates so the difference can be reproduced.

Show reported and constant-currency results when currency movement materially affects interpretation. Do not mix the opening rate for some accounts with closing rates for others. For a multi-currency bridge, identify the FX adjustment separately from commercial expansion and contraction.

The same discipline applies to acquisitions, account consolidations and product migrations. Record adjustments and restatements, including their effect on previously reported periods. A clean chart with undocumented historical rewrites is less useful than a slightly messier report whose changes can be explained.

Do not let expansion hide retention problems

Return to the four-customer example, but let A end at $3,000 instead of $1,500. Ending cohort MRR becomes $5,600 and NRR becomes 112%. The same customer C still churned, B still contracted and endpoint gross retention remains 72%.

That expansion is commercially valuable. It also means one account is carrying the result. Show expansion concentration, gross retention, customer retention and the number of accounts behind the movements alongside NRR. A high NRR percentage alone does not establish broad customer satisfaction or durable product adoption.

Segment using attributes at the opening boundary when the question concerns the original customer population. If upgraded accounts disappear from the starter-plan segment because you filter on current plan, the segment report can misrepresent the journey you meant to study.

ChartMogul's cohort retention documentation illustrates a different cohort lens based on when customers start their first subscription. Compare acquisition cohorts at equal ages when investigating whether newer customers expand or contract differently. Our cohort retention analysis guide explains the corresponding maturity and denominator problems for product behavior.

How the workflow fits together
Freeze cohort, normalize revenue, resolve gaps, reconcile movements and calculate companion retention measures.
Open full diagram

Use the result to choose the right intervention

A contraction concentrated in unused seats points toward adoption and packaging questions. Churn after a failed implementation points toward onboarding and delivery. Expansion driven entirely by a price increase needs a different durability assessment from expansion driven by more valuable usage.

Connect customer-level movements to product data in HubSpot or the equivalent CRM context, while keeping the billing-derived amount authoritative. Give customer-facing teams an explanation and relevant timing, not just an account score.

Do not automatically offer discounts to every contracting account. Inspect whether the customer needs fewer seats, has a technical blocker, is consolidating tools or no longer fits the product. The retention response should address the cause. CRM lifecycle operations can turn confirmed signals into ownership and follow-up without pretending the metric itself diagnoses the problem.

Validate the report before a board or growth review

  • The opening customer list is frozen and new customers cannot enter the numerator.
  • Beginning and ending amounts use the same unit, revenue basis and normalization rules.
  • Confirmed churn remains in the cohort with zero, while missing data remains an exception.
  • Customer and subscription grain are distinguished when products are added or cancelled.
  • Reactivation, discounts, delinquency and cancellation timing are documented.
  • Currency and migration adjustments are separate from customer-driven movements.
  • The movement bridge reconciles exactly to the closing cohort snapshot.
  • NRR is shown with gross retention, customer retention and expansion concentration.

Publish the definition and period beside the percentage. If beginning cohort revenue is zero, NRR is undefined; show that state rather than zero or an invented infinite result. If the period is incomplete, label any projection separately from the observed closed-period result.

Questions people ask

Does NRR include new customers?

A fixed opening-cohort NRR calculation excludes customers acquired after the opening boundary. Their revenue belongs in total growth and new-business reporting, not the cohort's retained revenue.

Can NRR exceed 100% while customers churn?

Yes. Expansion from remaining customers can exceed contraction and churn losses. Review gross and customer retention as well as the concentration of expansion to understand what the headline conceals.

Should reactivated customers count in NRR?

State the cohort policy explicitly. This guide includes ending revenue from customers who belonged to the opening cohort, even if they left and returned, while excluding reactivations of customers already absent at the opening boundary.

Is NRR the same as recurring-revenue growth?

No. Company growth includes new customers and other movements outside the opening cohort. The worked example shows company MRR rising while existing-cohort revenue declines.

Why does our billing dashboard disagree with our warehouse?

Compare cohort membership, discount treatment, subscription status, churn timing, currency conversion, timezone and reactivation settings. Reconcile customer-level rows before changing the formula or assuming either aggregate is wrong.

Sources

  1. Stripe: Net dollar retention explained. Accessed 23 September 2026.
  2. ChartMogul: Monthly Recurring Revenue. Accessed 23 September 2026.
  3. ChartMogul: Net MRR Retention report. Accessed 23 September 2026.
  4. Stripe: Billing Analytics definitions and configuration. Accessed 23 September 2026.
  5. ChartMogul: Configuring data settings. Accessed 23 September 2026.
  6. ChartMogul: Net MRR Retention by cohort. Accessed 23 September 2026.

Written by

Jafrin Akter Alo

Data Engineer and Co-founder, martechdevs

Jafrin Akter Alo is a data engineer and co-founder of martechdevs, where the team has delivered 74+ martech, data and growth stack implementations.

Book a Free Audit

A free audit of your stack and what it needs. No pitch.

Thirty minutes, and you leave with a plan

We look at what you have, what it is costing you and what to do about it first.

  • 30 minutes
  • Video call, link on booking
  • No obligation

What we'll cover

  • Your current stack and where it hurts
  • Quick wins we can ship first
  • An integration roadmap
  • Timeline, scope and next steps

Calendar not loading? Open it in a new tab or email hello@martechdevs.com.