What NRR measures, and what it deliberately excludes

Net Revenue Retention tracks a single cohort: the customers who were already paying you at the start of a period. It follows what happened to their revenue by the end of the period -- expansion (upsells, added seats, plan upgrades), contraction (downgrades), and churn (cancellations) -- and deliberately excludes anything from customers who signed up during the period. That exclusion is the entire point: NRR is meant to answer "is our existing base growing or shrinking," a question that a blended revenue-growth number can't answer on its own, because new sales can mask a leaking base.

The formula

NRR = (Starting MRR + Expansion MRR − Contraction MRR − Churned MRR) ÷ Starting MRR × 100

  • Starting MRR -- the sum of monthly recurring revenue from customers who were active on day one of the period. This number gets locked in before anything else is calculated.
  • Expansion MRR -- new MRR added by that same starting cohort: seat additions, plan upgrades, add-on purchases.
  • Contraction MRR -- MRR lost from that cohort downgrading while staying active.
  • Churned MRR -- MRR lost from that cohort canceling entirely.

A worked example

Say your starting cohort's combined MRR on the first of the month is $50,000. Over the month, that same cohort adds $6,000 in expansion (upgrades and added seats), loses $1,500 to contraction (downgrades), and loses $4,000 to churn (cancellations).

NRR = (50,000 + 6,000 − 1,500 − 4,000) ÷ 50,000 × 100 = 50,500 ÷ 50,000 × 100 = 101%

These numbers are an illustration of the mechanic, not a benchmark or a recommendation for what your own NRR should be -- your own starting base, expansion rate, and churn will be different.

NRR vs. GRR: same inputs, a different question

GRR = (Starting MRR − Contraction MRR − Churned MRR) ÷ Starting MRR × 100 -- the same formula with expansion left out entirely, which also means GRR can never exceed 100%. Using the same example above: GRR = (50,000 − 1,500 − 4,000) ÷ 50,000 × 100 = 44,500 ÷ 50,000 × 100 = 89%.

GRR answers "how much of what we had would we keep with zero upsells" -- a floor number, and a cleaner read on churn and downgrade pressure on its own, without upsell performance blending in and potentially hiding it. NRR answers "including upsells, is the existing base bigger or smaller than it was" -- which is why the same underlying month can show a GRR in the high 80s and an NRR just over 100% at the same time. Neither number is more "correct" than the other; they're answering different questions from the same four inputs.

Mistake 1: letting new-business MRR leak into the expansion line

Only revenue growth from the starting cohort counts as expansion. A brand-new customer's first payment is new-business MRR, not expansion -- even if that signup happens in the same month and even if the sales team categorizes it under the same pipeline stage as an upsell internally. If new-business MRR gets folded into the expansion line, NRR comes out inflated and stops meaning what it's supposed to mean.

Mistake 2: mishandling a reactivated customer

A customer who churned two months ago and comes back this month isn't "still in the starting cohort" -- they left. Reactivated revenue belongs in new-business MRR for the period they return, the same as any other new signup, not folded back into the original cohort's expansion or treated as if the churn never happened.

Mistake 3: mixing annual and monthly contract values without normalizing

An annual contract has to be converted to its monthly-equivalent value before it goes into any of the four inputs. Counting a full annual contract as a single lump MRR jump the month it's signed (rather than dividing it into twelve monthly-equivalent dollars) will spike expansion or new-business MRR that month and distort every ratio calculated from it.

Mistake 4: comparing NRR across different period lengths

A monthly NRR and an annual NRR are not the same number and can't be compared directly, even when they're built from the same underlying data -- compounding effects across twelve months produce a materially different result than any single month's figure. Deciding on a period length up front, and sticking to it when comparing NRR month over month or quarter over quarter, is what keeps the trend line meaningful.

Why this needs a frozen starting-cohort snapshot every period

NRR and GRR are only meaningful if "starting cohort" means the exact same list of customers every time the calculation runs. That means locking in the day-one MRR snapshot before doing anything else for that period, rather than letting a mid-period signup or an early cancellation quietly shift who counts as "starting." A spreadsheet that keeps last period's frozen snapshot next to the current period's inputs, rather than recalculating the starting list live each time, is the difference between a number you can trust month over month and one that silently redefines itself every time someone recalculates it.