Sign in

Blog · Board and management reporting

Net revenue retention on ten customers: the whole arithmetic on one page

The complete net and gross revenue retention calculation on ten customers small enough to check by hand: ARR a year ago and now per customer, the four movements, expansion, contraction, churn and reactivation, per customer, the cohort split, gross retention capped and net uncapped, the reconciliation to the ARR bridge, and the identity that the movements sum, so a reader can reproduce every figure and then run it on their own subscription ledger.

The short answerTen customers with ARR twelve months ago and ARR now. Each customer's change is one movement: expansion if up, contraction if down, churn if now zero, reactivation if it was zero and returned. Gross retention is starting ARR less churn less contraction, over starting ARR, capped at 100 percent: here 81 percent. Net retention adds expansion and reactivation: 106 percent. Split into two cohorts, one is at 121 percent net and 88 gross, the other at 86 net and 72 gross. The movements sum to the ARR bridge for the year, and every number can be reproduced by hand.

Retention is a movement per customer and a sum, and on ten customers every movement can be read. This page works gross and net, the cohort split, the reconciliation to the bridge and the identity.

The customers

Customer Cohort ARR then ARR now Movement Amount
A 2024 $120,000 $150,000 Expansion +$30,000
B 2024 $80,000 $80,000 None 0
C 2024 $60,000 $0 Churn −$60,000
D 2024 $200,000 $260,000 Expansion +$60,000
E 2024 $40,000 $30,000 Contraction −$10,000
F 2025 $90,000 $70,000 Contraction −$20,000
G 2025 $110,000 $0 Churn −$110,000
H 2025 $50,000 $65,000 Expansion +$15,000
I 2025 $70,000 $70,000 None 0
J 2025 $0 (churned in 2025) $20,000 Reactivation +$20,000
Total $820,000 $745,000 −$75,000

J is a reactivation: it was a customer, churned before the start, and came back. It is not new business; its starting ARR is zero and its return is a reactivation line.

The movements, summed

Movement Amount
Expansion 30 + 60 + 15 = $105,000
Contraction 10 + 20 = $30,000
Churn 60 + 110 = $170,000
Reactivation $20,000
Net change 105 − 30 − 170 + 20 = −$75,000

Matches the total change. Identity holds.

Gross and net, all ten

Gross retained = 820,000 − 170,000 − 30,000 = $620,000; gross retention = 620,000 ÷ 820,000 = 75.6% Net retained = 620,000 + 105,000 + 20,000 = $745,000; net retention = 745,000 ÷ 820,000 = 90.9%

By cohort

Cohort Start Churn Contraction Gross Expansion Reactivation Net
2024 $500,000 $60,000 $10,000 86.0% $90,000 0 104.0%
2025 $320,000 $110,000 $20,000 59.4% $15,000 $20,000 70.3%
All $820,000 $170,000 $30,000 75.6% $105,000 $20,000 90.9%

The 2024 cohort is growing from its base. The 2025 cohort lost four tenths of its starting ARR in a year. The combined figure of 91 percent shows neither.

The reconciliation to the bridge

Bridge line, from the finance schedule Σ these customers Match
Expansion $105,000 Yes
Contraction $30,000 Yes
Churn $170,000 Yes
Reactivation $20,000 Yes
New business not a retention movement

Where it goes wrong, even at ten

J counted as new. Reactivation understated; new business overstated; the 2025 cohort's net reads 64 percent.

Gross uncapped. A's expanded $150,000 counted in gross; gross reads above what remained.

Company figure only. 91 percent, and the 2025 cohort at 70.

A customer in two cohorts. If D were listed under both, starting ARR would read $1,020,000 and every ratio would be wrong; the identity to the bridge would catch it.

From ten to ten thousand

The same movement per customer, summed per cohort, reconciled to the bridge. Covirage runs it on the subscription ledger every quarter. The net revenue retention guide covers the cohort table, and the gross and net guide covers reading the pair.

Questions people ask

Where do new customers go?

Not in retention. Retention is about the customers that were there at the start. New customers in the year are a separate bridge line, new business, and they join a cohort for next year's retention.

Why is gross capped?

Because gross asks how much of the starting ARR is still there, and the answer cannot exceed all of it. A customer that expanded contributes its starting ARR to gross retained, not its expanded ARR. The expansion goes to net.

How does this reconcile to the bridge?

The ARR bridge for the year has lines for expansion, contraction, churn, reactivation and new. The sum of each movement across these ten customers equals the bridge's line for it. If the bridge says churn was $400,000 and the customers sum to $350,000, a customer is missing or in two states.