13 min read

Gross revenue retention: the floor your NRR is standing on

Weathered brass tap mounted on a rusted metal wall, illustrating the steady revenue leak gross revenue retention measures
Photo by Jouni Rajala on Unsplash

Gross revenue retention cannot exceed 100%. Net revenue retention can. That single structural difference is why one of them tells you the truth about your customer base and the other tells you about your best three accounts.

Gross revenue retention measures how much of an existing cohort's recurring revenue you still have twelve months later, counting churn and contraction but refusing to count expansion. Because expansion is excluded by construction, GRR has a hard ceiling at 100%, and every point below that ceiling is revenue that left.

Net revenue retention adds expansion back in and can therefore exceed 100%, which is why it is the number that appears in board decks and fundraising materials. It is also the number that can look healthy while the underlying base is draining.

The useful metric is neither one on its own. It is the distance between them.

Table of contents

The gross revenue retention formula

The gross revenue retention formula takes a fixed cohort's revenue at the start of a period, subtracts churned and contracted revenue, and divides by the starting figure. Expansion never enters it.

GRR = (starting ARR - churned ARR - contraction ARR) / starting ARR

Three constraints make this work, and all three get broken in practice.

The cohort is fixed at the start of the window. A customer who signed in month four appears nowhere in the calculation, neither in the numerator nor the denominator. GRR is a question about the business you already had.

Expansion is excluded even when it comes from a contracting account. An account that drops 20 seats and adds a new product module in the same quarter contributes its contraction and none of its expansion. This feels wrong the first time and it is the entire point: GRR is measuring leak, not net flow.

Contraction and churn are both losses, and they are different losses. Churn is the whole account gone. Contraction is the account staying at a lower price. Rolling them together into a single number hides which of the two you have, and they call for completely different responses.

Work an example. A cohort starts the year at $1,000,000 in ARR. Over the twelve months, $90,000 churns outright, $30,000 contracts through downgrades, and $150,000 arrives as expansion from accounts that stayed.

GRR = (1,000,000 - 90,000 - 30,000) / 1,000,000 = 88%
NRR = (1,000,000 - 90,000 - 30,000 + 150,000) / 1,000,000 = 103%

Fifteen points apart, from one set of facts.

GRR vs NRR: the only difference is expansion

GRR and NRR share a numerator except for one term, so any gap between them is expansion revenue and nothing else. That makes the comparison unusually clean by the standards of SaaS metrics.

Gross revenue retention Net revenue retention
Counts churn Yes Yes
Counts contraction Yes Yes
Counts expansion No Yes
Can exceed 100% Never Often
Moved by one large account Barely Substantially
Answers How much do we leak Does the base grow on its own

Because GRR is bounded above, it behaves like a quality score: 100% is perfect and you are always measuring distance from perfect. NRR is unbounded, so a high figure could mean strong retention, aggressive expansion, or one enormous upsell covering a bad year.

Both are worth tracking. Only one of them can be gamed by a single deal.

The spread is the diagnostic

The gap between NRR and GRR tells you how much expansion the business needs each year simply to stand still, which is the question neither metric answers alone.

Consider two companies reporting identical net revenue retention.

Company A Company B
Starting ARR $1,000,000 $1,000,000
Churn + contraction $120,000 $40,000
Expansion $150,000 $70,000
GRR 88% 96%
NRR 103% 103%

Same headline. Completely different businesses.

Company A has to manufacture $120,000 of expansion every year before it grows a dollar. Company B needs $40,000. If expansion stalls for any reason, and the list of reasons is long, then each company falls to its GRR: A lands at 88% and B at 96%. A is shrinking 12% a year with the expansion engine off. B is shrinking 4%.

That fall-to-your-floor property is what makes GRR the number to watch in a downturn. Expansion is the most cyclical component of retention, because it depends on customers having budget to grow. Churn is comparatively sticky. When budgets tighten, NRR compresses toward GRR, and the company with the wider spread falls further.

A wide spread is not automatically bad. Land-and-expand businesses are supposed to have one. It becomes bad when nobody has noticed that the expansion is structural rather than optional.

What the benchmarks actually say

Median gross revenue retention for private B2B SaaS sits near 88%, and it has drifted down about two points over three years.

Benchmarkit's 2025 B2B SaaS Performance Metrics Benchmarks, published May 2025 from 225 participating companies, reports median GRR falling from 90% to 88% across 2022, 2023 and 2024, with the report noting the decline could partly reflect selection bias in who participated. On the same dataset (228 companies for the expansion metrics), median NRR sits at 101%, down from 103% in CY-22 and 105% in CY-21.

Put those two together and the median private SaaS company has a 13-point spread. It loses 12% of its revenue base each year and replaces it with just enough expansion to finish slightly ahead.

Three segmentation findings from the same report matter more than the headline:

  • GRR rises with annual contract value, consistently across four years of their data. Larger contracts retain better. A sub-$10k ACV business comparing itself to the 88% median is comparing itself to a mix dominated by companies that sell differently.
  • GRR falls as companies pass $5M ARR, which the report attributes to having been through more renewal cycles. Early-stage GRR is flattered by contracts that have not yet come up for renewal.
  • Sub-$5M companies often report GRR that is too high, because retention measurement is immature and the first renewal has not happened. If your contracts are annual and your company is 18 months old, you have observed roughly one renewal cohort.

ChartMogul's SaaS Retention Report, built on more than 2,100 businesses, shows the same segmentation effect from the other end: top-quartile net retention runs at 65.1% for businesses under $10 ARPA against 109.3% for those above $500. Price point drives retention harder than execution does, and any benchmark quoted without a segment attached is close to meaningless.

GRR is outlier-proof and NRR is not

Revenue in subscription businesses is severely skewed, and NRR inherits that skew through the expansion term while GRR does not. One account can move NRR by several points and cannot move GRR by more than its own size.

Take a $1,000,000 cohort where a single enterprise account grows from $50,000 to $200,000 during the year, while thirty small accounts totalling $120,000 churn.

NRR = (1,000,000 - 120,000 + 150,000) / 1,000,000 = 103%
GRR = (1,000,000 - 120,000) / 1,000,000 = 88%

The NRR figure is technically correct and practically misleading. Thirty customers left. The product is failing an entire segment. And the headline retention number went up, because one renewal in the enterprise team covered all of it.

This is the same failure mode that makes average customer lifetime value misleading on skewed distributions, and it has the same fix: segment before you aggregate. Run GRR and NRR by ACV band, by plan, by billing term. A single company-wide pair of numbers is a summary of tables you should be looking at individually.

Where gross revenue retention breaks on real billing data

Five things distort gross revenue retention when it is computed from live billing systems rather than from a clean ledger.

Cancel-and-resubscribe read as churn plus new business. A customer who downgrades by cancelling their old subscription and starting a smaller one shows up in many billing systems as a full churn and an unrelated new sale. That inflates churned ARR, understates GRR, and simultaneously inflates new business. Detect the pattern by customer identity rather than subscription identity.

Involuntary churn counted as a customer decision. Recurly's churn benchmark research, updated July 2026, puts involuntary churn at 1.06% of the 3.22% median annual SaaS churn rate, so roughly a third of what lands in your churn bucket is a failed card rather than a decision. It also falls sharply with price, from 1.30% in the $10 to $25 ARPC band to 0.18% above $250. Failed payments respond to dunning configuration and card updater coverage, not to product work, and Stripe's revenue recovery documentation covers the mechanics.

Foreign exchange masquerading as contraction. A EUR-denominated contract at an unchanged local price reports as contraction if your ARR is consolidated in USD and the euro weakened. Nothing about the customer changed. Compute retention in the contract currency and convert afterwards, or hold the exchange rate fixed at cohort start.

Annual contracts renewing outside the measurement window. A twelve-month contract signed in March renews in March. Measure GRR on a calendar year and you have captured that renewal; measure on a trailing twelve months ending in February and you have not. With annual billing, GRR is lumpy and concentrated at renewal dates, which is why renewal-date cohorting beats calendar cohorting.

Mid-cycle proration inflating and deflating ARR. An upgrade on day 14 produces a prorated invoice that is not a full period at the new price. Feeding invoiced amounts into an ARR calculation makes retention wobble for billing reasons. Use the subscription's recurring amount instead.

Calculating GRR on a cohort basis

Benchmarkit's stated best practice is to calculate gross revenue retention on a cohort basis rather than as a blended company rate, and the difference is not cosmetic.

A blended rate compares this month's total revenue from existing customers to last month's, which quietly mixes cohorts of every age into one figure. Since retention curves are steep early and flat later, a blended rate moves whenever your acquisition mix moves, even with customer behaviour completely unchanged. A quarter of heavy new-customer acquisition will drag blended retention down for a year and nothing will have gone wrong.

The cohort version takes a fixed set of customers at a fixed start date and follows only them. Six steps:

  1. Fix the cohort at the start of the window: every customer with active recurring revenue on that date, and no one else.
  2. Record starting ARR per customer, not just the cohort total. You will need the per-account detail to explain any movement.
  3. Split by billing term before anything else, then by ACV band.
  4. Classify each movement as churn, contraction, or expansion, by customer identity rather than subscription identity.
  5. Separate involuntary churn into its own bucket. It is a third of the total and the most recoverable third.
  6. Report GRR and NRR together, always as a pair, with the spread named explicitly.

The cohort analysis post covers how to read the resulting tables, including the diagonal reading that catches events hitting every cohort at once.

What gross revenue retention cannot tell you

Gross revenue retention is an annual lagging aggregate, so by the time it moves the cause is typically two or three quarters old and buried under everything else that happened since.

It cannot separate a pricing change from a product regression from a dunning misconfiguration. All three arrive as churned ARR. It cannot tell you when the decline started, only that the window ended lower than it began. And it cannot distinguish a segment collapsing from a broad drift, because a single percentage has no room to carry that information.

The metric is also silent on the thing most teams actually want to know, which is which accounts are about to leave. GRR is a report on customers who already went. Every input to it is a completed event.

None of that is an argument against tracking it. It is an argument for not expecting a scalar to do the work of an investigation.

Frequently asked questions

What is a good gross revenue retention rate?

Judge against your contract size rather than a global median. Benchmarkit's 2025 report puts the private B2B SaaS median at 88% with GRR rising consistently as annual contract value rises, so an enterprise business at 88% is underperforming its segment while a low-ACV self-serve business at 88% is doing well. Above 90% is generally healthy for mid-market B2B; enterprise businesses often target 95% or higher.

Can gross revenue retention be over 100%?

No. GRR excludes expansion revenue by construction, so the numerator can never exceed the starting ARR. A GRR above 100% means expansion has leaked into the calculation somewhere, usually through an account whose upgrade was recorded as a new subscription rather than a change to an existing one. Treat it as a data bug, not a result.

What is the difference between GRR and NRR?

Expansion revenue, and nothing else. Both subtract churn and contraction from a fixed cohort's starting revenue; net revenue retention then adds upsells, cross-sells and seat growth back in. The gap between the two is the amount of expansion the business generated, and it tells you how much of your net retention depends on selling more to existing customers.

Should gross revenue retention include downgrades?

Yes. Contraction is one of the two losses GRR is designed to capture, alongside outright churn. Excluding downgrades produces a logo-retention figure dressed up as a revenue figure, which will read several points higher than reality in any business where accounts can reduce seats or move down a tier. Track churn and contraction as separate lines so you can see which is driving the number.

Ready to see what is behind the 12% you lost?

Gross revenue retention tells you that 12% of the base went. It does not tell you that a third of it was expired cards, that the contraction is concentrated in one plan tier, or that the whole thing started the week a pricing change shipped.

GainSignal connects billing events, product usage and the operational changes around them, then reports what moved, when it started, and which accounts are behind it. Churn split from contraction. Involuntary separated from voluntary. Cohorts kept apart rather than blended, with the evidence attached, so the answer to a retention drop is a finding rather than another query.

Get started with GainSignal

Keep reading