Canonical formula
For a fixed starting customer base C0 and its starting recurring revenue StartingMRR, gross revenue retention over period P is:
GRR(P) = (StartingMRR − ChurnedMRR − ContractionMRR) / StartingMRR
Expressed as a percentage:
GRR%(P) = GRR(P) × 100
GRR deliberately ignores expansion. It measures how much of the starting recurring revenue base survives before any upsell or seat growth is allowed to offset losses.
Variable definitions
- C0: the customer cohort active at the start of period
P. - StartingMRR: total recurring monthly revenue attributable to cohort
C0at the start of periodP. - ChurnedMRR: recurring monthly revenue from customers in
C0that is fully lost duringP. - ContractionMRR: reduction in recurring monthly revenue from surviving customers in
C0duringP.
Component formulas
The components are measured as follows:
StartingMRR = Σ for c in C0 of MRR_start(c)
ChurnedMRR = Σ for c in C0 and fully churned in P of MRR_lost(c)
ContractionMRR = Σ for c in C0 of max(MRR_start(c) − MRR_end(c), 0) excluding full churn
In strict GRR, ExpansionMRR is tracked separately but contributes 0 to the formula itself.
Cohort rules
GRR is a fixed-cohort metric. The starting cohort is locked at the beginning of the period and cannot be replaced with an end-of-period customer set.
- New logo revenue acquired during
Pis excluded completely. - Only customers already in
C0can contribute to churn or contraction. - The recurring revenue policy used for
StartingMRR,ChurnedMRR, andContractionMRRmust be identical.
Once the cohort is changed or expansion is allowed to offset losses, the result is no longer strict GRR.
Exclusion rules
Exclude the following from GRR calculations:
- Expansion MRR, upgrade revenue, or seat growth.
- New customer MRR acquired after the period starts.
- One-time fees and non-recurring services.
- Taxes, pass-through charges, and hardware.
- Cash collection timing differences with no recurring revenue change.
If expansion is added back into the numerator, the metric becomes NRR rather than GRR.
Edge cases
- Full churn: count the lost recurring amount in
ChurnedMRR, not in both churn and contraction. - Partial downgrade: count only the recurring delta in
ContractionMRR. - Downgrade followed by upgrade in the same period: the downgrade still belongs in
ContractionMRR; the offsetting upgrade is excluded from GRR. - Pauses or temporary credits: classify them under a stable recurring revenue policy before using them in retention reporting.
- FX translation: foreign-exchange rules must be stable or GRR will reflect currency movement instead of retention quality.
Worked example
Suppose the starting cohort has StartingMRR = 100,000. During the period:
ChurnedMRR = 8,000ContractionMRR = 4,000ExpansionMRR = 15,000
Then the strict GRR formula is:
GRR(P) = (100,000 − 8,000 − 4,000) / 100,000
GRR(P) = 88,000 / 100,000 = 0.88
GRR%(P) = 88%
The additional ExpansionMRR = 15,000 improves NRR, but it changes GRR by exactly 0.
Strict summary
GRR measures gross retention of a fixed starting recurring revenue base. It subtracts churn and contraction, and it refuses to let expansion hide those losses.
If expansion is blended into the formula, or if the cohort or MRR policy shifts between components, the result is not strict GRR.
Related Reading
Core metric pages: