How-to guide

How to calculate net revenue retention (NRR) and gross revenue retention (GRR)

Net revenue retention is the single most predictive signal of a SaaS business worth owning. It captures how much recurring revenue a cohort of customers kept, grew, and lost over a defined window, net of everything that happened inside the base. This guide walks the full calculation: define the cohort, pull starting ARR, roll in expansion, strip out contraction and churn, compute NRR, drop the expansion to compute GRR, segment the result, benchmark it, and operationalize a monthly refresh that finance and the board actually trust.

Before you start

What you need.

Time: half-day to design, monthly refresh

  • ARR cohort data available by customer with contract start, renewal, and current MRR or ARR amounts
  • Expansion, contraction, and churn categorized consistently in the billing system so each dollar movement is tagged to exactly one bucket
  • Finance alignment on definitions and the recognition point for each bucket so revenue, billing, and GTM dashboards reconcile to one number
  • An agreed cohort window (trailing twelve months is the default) locked before the calculation runs so the denominator stays stable
  • A single source of truth for customer, product, and plan so segment cuts later in the exercise do not produce three different NRR numbers
Calculate net revenue retention (NRR) and gross revenue retention (GRR)

Step by step.

  1. 1

    Pick the cohort of customers in scope

    Start by defining who is in the base. The cohort is every customer that existed at the start of the measurement window and is held constant for the entire calculation. Do not add new logos closed inside the window; new business belongs in gross new ARR, not in retention. Lock the customer list in writing before pulling any numbers so finance and GTM are literally working from the same roster. For most SaaS companies the default window is trailing twelve months, which smooths out seasonality and renewal cycles. If the business has quarterly contracts and faster motion, a trailing six-month cohort can work, but keep the window stable quarter over quarter so trend analysis is comparable.

    • Freeze the customer list as of the first day of the measurement window
    • Exclude any logo signed after the start date, even if they are already generating revenue
    • Include customers that churned inside the window at their starting ARR amount
    • Document the cohort rules in writing so finance, GTM, and the board use the same definition
    Tip: If a customer merged, spun off, or renegotiated under a new entity inside the window, decide the treatment once and document it. Edge cases silently rebased mid-quarter are how two teams end up quoting two different NRR numbers.
  2. 2

    Measure starting ARR for the cohort

    Pull the recurring revenue that cohort was contributing on day one of the window. This is the denominator for both NRR and GRR, and it must stay fixed for the full calculation. Use ARR, not billings, because billings reflect invoicing cadence and will distort the ratio for annual-paid-monthly customers. Strip out one-time services, implementation fees, and anything that is not recurring. If the business sells usage-based or hybrid contracts, pick the normalized ARR convention finance already uses in the P&L and apply it consistently. The starting ARR number is the baseline every subsequent movement is measured against, so it has to be defensible under audit.

    • Pull recurring revenue only; exclude services, implementation, and one-time fees
    • Normalize monthly contracts to annual to produce a single ARR figure per customer
    • Reconcile the cohort ARR total to the finance P&L for the same date to validate the pull
    • Lock the starting ARR snapshot in a versioned file so later recalculations are reproducible
  3. 3

    Add expansion revenue from the cohort

    Expansion is every recurring dollar the cohort added inside the window: seat upsell, tier upgrades, cross-sell of new products or modules, and usage-driven increases on committed plans. The rule is simple: the dollar has to be recurring, and the customer has to already have been in the cohort. New logos never count as expansion. Pull expansion from the subscription or billing system so each dollar is sourced from a specific change event, not an aggregate. Tagging matters here. If upsell and cross-sell are both lumped as expansion with no sub-category, the team loses the ability to answer whether growth is coming from existing products going deeper or from new products landing.

    • Pull every recurring upsell, cross-sell, and tier upgrade inside the window from the cohort
    • Exclude one-time charges, overage credits, and any dollar that is not recurring
    • Tag each expansion event as upsell, cross-sell, or usage so segmentation works later
    • Reconcile the expansion total back to the billing system change log to catch missed events
    Tip: Usage-based expansion is the trickiest bucket. Decide whether a usage spike that is likely to normalize counts as expansion today or waits for the next renewal, and apply the rule to every customer, not case by case.
  4. 4

    Subtract contraction revenue

    Contraction is every recurring dollar the cohort lost inside the window without the logo churning entirely: downgrades, seat reductions, module removals, and plan step-downs. Treat it as its own bucket, separate from churn, because the diagnostic is different. Contraction usually points to a product value or pricing-fit problem inside otherwise healthy accounts, whereas churn points to a relationship or outcome problem. Pull it from the same subscription change log as expansion so the numbers tie. Sign discipline matters; contraction is a negative movement against the starting ARR, so lock the convention early and keep it consistent across every dashboard that reads from this calculation.

    • Pull every recurring downgrade, seat reduction, and plan step-down inside the window
    • Exclude customers that fully churned; those belong in the churn bucket, not contraction
    • Tag each contraction event as seats, tier, or module so root-cause analysis is possible
    • Reconcile contraction to the billing change log and confirm the sign convention
  5. 5

    Subtract churned ARR

    Churn is every logo in the cohort that fully stopped paying inside the window. The dollars that come out are the full starting ARR of each churned account, not the amount at the churn date. This is where teams quietly inflate retention: if you measure churn at the point the account exits, a customer that was already contracting for six months looks smaller on the way out and the retention number looks healthier than reality. Hold churn at starting-cohort ARR. Then separately report the contraction those accounts experienced before churn as a leading indicator. Non-renewal, cancellation, and complete down-sell to zero all count as churn.

    • Identify every logo that stopped paying inside the window, including non-renewals
    • Use each churned account starting ARR, not the final ARR before exit
    • Flag accounts that spent months contracting before churning as pre-churn signals
    • Reconcile churn count and dollars to the logo-level finance churn report
    Tip: A customer that paused and resumed inside the same window is still inside the cohort; a customer that paused into the next window is churned. Pick a rule and apply it everywhere.
  6. 6

    Divide to compute NRR, then strip expansion for GRR

    With the four buckets locked, the math is one line each. NRR equals starting ARR plus expansion minus contraction minus churn, divided by starting ARR, expressed as a percentage. GRR is the same math minus the expansion term: starting ARR minus contraction minus churn, divided by starting ARR. NRR can exceed 100 percent because expansion can outweigh contraction and churn; GRR is capped at 100 percent by definition because it ignores upside. The gap between NRR and GRR is the expansion engine. A healthy business shows a wide gap, because expansion is doing real work against the retention drag. A narrow gap flags a product or motion that is holding on but not growing inside the base.

    • Compute NRR = (starting ARR + expansion - contraction - churn) / starting ARR
    • Compute GRR = (starting ARR - contraction - churn) / starting ARR
    • Verify the four bucket totals reconcile to the delta between starting and ending cohort ARR
    • Record both numbers with the cohort window and the pull date in a versioned retention file
  7. 7

    Segment by cohort, segment, and plan

    A single company-level NRR number tells you nothing you can act on. Immediately cut it by segment, plan, and signup cohort so the pattern underneath becomes visible. SMB cohorts typically churn more and expand less; mid-market and enterprise cohorts typically churn less and expand more. If the SMB segment is dragging NRR down twenty points, the fix is a different motion, not a pricing tweak. Cut by product or plan to see whether a specific plan tier is retaining badly. Cut by signup cohort to see whether a particular launch quarter is aging better or worse than the ones around it. Segmentation is where NRR goes from a board slide to an operating lever.

    • Cut NRR and GRR by SMB, mid-market, and enterprise segment
    • Cut by plan or product tier to isolate retention problems to a specific SKU
    • Cut by signup cohort quarter to spot aging patterns and launch-era effects
    • Flag any segment more than ten points off the company average for a focused review
  8. 8

    Benchmark, review monthly, feed into finance and the board

    A retention ratio in isolation is just a number. Benchmark it against external SaaS retention research before you draw conclusions. The commonly cited bands put NRR in the 100 to 110 percent range for healthy SaaS, 110 to 120 percent for strong, and 120 percent and up for world-class. GRR tends to run 85 to 90 percent for healthy mid-market and above 90 percent for enterprise. Rebuild the calculation every month on a trailing twelve-month window so the number refreshes as the cohort ages. Push both numbers into the finance review, the board deck, and the CS and sales dashboards from the same source so nobody is quoting a different value in a different meeting. One number, one source, every month.

    • Pull OpenView, SaaS Capital, KeyBanc, and Bessemer research to anchor the benchmark bands
    • Rebuild NRR and GRR on a trailing twelve-month cohort every month, same formulas
    • Push the refreshed numbers into finance, board, CS, and sales dashboards from the same source
    • Record a short monthly note explaining any movement greater than two points in either direction
    Tip: The board will ask about NRR before they ask about anything else. Walk in with the segmented view, not just the headline, and a one-line explanation for every segment that moved more than two points. That is what separates a credible retention story from a slide.
Avoid

Common mistakes.

  • Counting new logos closed inside the window as expansion, which inflates NRR by double-counting new business and corrupts the signal retention is supposed to carry
  • Using the churn-date ARR for churned accounts instead of the starting-cohort ARR, which quietly understates churn by hiding the contraction those accounts bled before they left
  • Mixing billings and ARR inside the same calculation, which produces a ratio that swings with invoicing cadence rather than real customer value movement
  • Reporting only a company-level NRR with no segmentation, which makes it impossible to tell whether SMB is dragging an otherwise healthy mid-market cohort down twenty points
  • Changing the cohort window or the bucket definitions quarter over quarter, which breaks trend comparability and lets anyone argue the trend was always going the direction they prefer
FAQ

Frequently asked questions.

What is the formula for net revenue retention?

NRR = (starting ARR + expansion - contraction - churn) / starting ARR, expressed as a percentage. Starting ARR is the recurring revenue of the cohort on day one of the window, and expansion, contraction, and churn are the recurring movements inside that cohort over the measurement period. New logos closed inside the window never enter the formula.

What is the difference between NRR and GRR?

NRR includes expansion; GRR does not. GRR = (starting ARR - contraction - churn) / starting ARR and is capped at 100 percent by definition. NRR can exceed 100 percent when expansion more than offsets contraction and churn. The gap between the two numbers is the expansion engine, and a wide gap is a sign the land-and-expand motion is doing real work inside the base.

What is a good NRR for SaaS?

Commonly cited bands put NRR in the 100 to 110 percent range for healthy SaaS, 110 to 120 percent for strong, and 120 percent and above for world-class, with GRR typically 85 to 90 percent for healthy mid-market and above 90 percent for enterprise. The right benchmark depends on segment, deal size, and motion, so match the comparison population tightly before drawing conclusions.

How often should NRR be calculated?

Rebuild NRR and GRR monthly on a trailing twelve-month cohort so the number refreshes as the cohort ages. Monthly is frequent enough to catch trend breaks early, and the trailing-twelve-month window smooths out quarterly renewal spikes and billing cadence noise. Report both numbers in the same monthly finance and board cadence so there is only one authoritative version in circulation.

Does NRR include new customers signed during the period?

No. NRR is a retention metric and only measures what happened to the cohort of customers that existed at the start of the window. New logos closed inside the window belong in gross new ARR, not in expansion. Mixing new business into the retention ratio is the single most common way companies inflate their reported NRR, and it collapses the moment an investor asks for the cohort definition.

How should contraction and churn be split?

Contraction is every recurring dollar lost from a customer that is still paying something: downgrades, seat reductions, plan step-downs, and module removals. Churn is every logo that fully stopped paying inside the window. Hold churned accounts at their starting-cohort ARR, not their final ARR before exit, so months of pre-churn contraction do not quietly disappear into a smaller churn number.

See it in Strkr

Related product surfaces.

All Strkr features Strkr CRM

Run NRR and GRR on a CRM that already carries the data

Strkr ties customers, plans, expansion, contraction, and churn to one source of truth so finance and GTM can rebuild NRR and GRR every month from the same numbers without a spreadsheet reconciliation.

Try it free. Bring your team next week.

No sales call, no migration consultant, no four-month implementation. Enter your card, get 14 days of the full Pro tier, cancel any time before day 14 with zero charge. Spin up a workspace, import your CSV, and have something useful before lunch.