Quick reference.
The whole standard in five minutes: what each term means, how it is computed, and what the defaults are.
v1.0 Updated Sep 18, 2026 JSON Print edition
FoundationsWho is a customer, what counts as recurring, and the base measures everything else is built on.
| № | Term | In plain terms | Formula | Defaults | Bounded |
|---|---|---|---|---|---|
| 01 | Customer — the measured unit | A customer is the commercial relationship, resolved from its billing accounts, and only paying customers are counted. | customer = the resolved parent entity behind one or more billing identifiers | comped excluded (locked) · related-party flagged, not excluded | n/a |
| 02 | Revenue types | Only committed subscription revenue is recurring. Usage, services and one-time fees are real revenue, but never MRR. | MRR = Σ lines typed recurring_subscription; every other type stays out | 7 locked types · a file with no type column stops and asks | closed enumeration |
| 03 | Monthly recurring revenueMRR | MRR is what a customer's subscription pays per month, taken at month end, if nothing changes. | MRR = the month-end recurring rate, normalized to monthly, held through qualifying pauses | 3-month reactivation window · comped excluded (locked) · monthly-average FX | ≥ 0 |
| 04 | Annual recurring revenueARR | ARR is this month's MRR times twelve: a run rate, not a forecast and not last year's revenue. | ARR = MRR × 12 | run_rate basis · committed ARR and contracted-not-yet-live reported separately | ≥ 0 |
Movement and retentionHow revenue moves month to month, and what the base is worth now versus then.
| № | Term | In plain terms | Formula | Defaults | Bounded |
|---|---|---|---|---|---|
| 05 | The movement taxonomy | Every change in a customer's MRR is exactly one of five movements, and they add up to the closing balance without a plug. | closing = opening + new + expansion + reactivation + contraction + churn | 5 locked types · net per customer-month · sub-tags cross_sell, ramp_step, fx_driven | identity holds exactly |
| 06 | Pause, churn, and the reactivation window | A short billing gap that closes is a pause. A long one is churn and a win-back. A gap still open at the cutoff is judged separately. | gap within the window → pause, MRR held · gap beyond the window → churn at the gap start, reactivation on return · gap open at the cutoff → trailing-gap policy | reactivation_window_months = 3 · trailing_gap_policy = churn_at_gap_start | n/a |
| 07 | Net revenue retentionNRR | NRR asks what last year's customers are worth this year, expansion included and new customers excluded. | TTM compounded = product of twelve monthly ratios, each = Σ revenue this month of customers active last month ÷ Σ their revenue last month | ttm_compounded · usage-inclusive (locked) · reactivation-inclusive · no smoothing | no ceiling · 100% = base flat |
| 08 | Gross revenue retentionGRR | GRR is NRR with every customer capped at what it paid at the start, so growth cannot hide leakage. | GRR = Σ min(revenue now, revenue at base) ÷ Σ revenue at base — the cap applied per customer | same as NRR · cap applied per customer | ≤ 100% by construction |
| 09 | Cohort retention | Cohort retention follows each vintage of customers on its own curve, measured at the end of each period against what they paid when they joined. | cell = Σ cohort MRR at the period end ÷ Σ cohort MRR in the joining month — net, gross-capped, and by logo | cohort = first MRR month · MRR-only basis (usage excluded) · period-end anchoring · comped excluded (locked) | gross ≤ 100% · net has no ceiling |
| 10 | Churn analytics | Churn is counted in the first month a customer pays nothing, and reported four ways: by logo, by dollar, by tenure, and by survival. | logo churn = churned logos ÷ last month’s active logos · dollar churn = churned MRR ÷ last month’s MRR · survival = surviving ÷ observable, at each tenure | first-zero-month timing · 3-month window · churn_at_gap_start · seasonality flag at 2σ | ≥ 0 |
Structure and qualityHow revenue is distributed, whether it ties, and how much the number depends on the rule.
| № | Term | In plain terms | Formula | Defaults | Bounded |
|---|---|---|---|---|---|
| 11 | Concentration | Concentration measures how much of the business depends on how few customers, on resolved parents, by top-N share and HHI. | top-N share = Σ MRR of the largest N customers ÷ total MRR · HHI = Σ share² · effective customers = 1 ÷ HHI | MRR basis · resolved parents · comped excluded · warn at top-10 > 40%, top-20 > 60%, HHI > 0.15 | HHI between 1/n and 1 |
| 12 | Growth accounting | Growth accounting shows how a business grew, not just how fast: the quick ratio and the mix of new, expansion and reactivation. | quick ratio = (new + expansion + reactivation) ÷ (contraction + churn) · mix = each addition type ÷ gross additions | quarterly · reactivation counted as an addition · constant-currency comparison alongside | undefined when losses are zero · 1.0 = replacing exactly what is lost |
| 13 | ACV and ARPA | ARPA is average revenue per account. The standard reports the whole distribution, because the average describes almost no customer. | ARPA = total MRR ÷ active customers · new-business ARR per logo = new MRR × 12 ÷ new logos · plus the deciles of MRR × 12 | MRR basis · comped excluded · ACV bands 5K / 25K / 100K / 500K (locked) | ≥ 0 |
| 14 | Foreign exchange | Revenue converts at the month's average rate, and currency-driven movements are tagged so the constant-currency view can remove them. | base-currency amount = native amount × the month’s average rate · constant currency = native amount × the base period’s rate | fx.flow_rate = monthly_average (locked) · fx.fallback = nearest_prior · base period = 12 months before the cutoff | n/a |
| 15 | Revenue tie-out | The customer file counts only once its recognized revenue agrees with the P&L, month by month, with billing timing shown separately. | gap = reported − recognized · billing timing = billed − recognized | warn when the gap exceeds 2% of reported · pause-held MRR isolated | n/a |
| 16 | Definitional sensitivity | The same data yields a family of NRRs. The spread between them is a finding about the business, not an error. | spread = the highest NRR variant − the lowest, in percentage points | six NRR variants computed · warn when the spread exceeds 5 points | ≥ 0 |
| 17 | The register | Every assumption applied and every anomaly found is logged, so a reader can argue with a premise instead of discovering it later. | entries = assumptions (a default was applied) + exceptions (the data was anomalous), each keyed, with a severity of info, warn or blocking | every threshold feeds a finding · blocking stops the computation · reviews append-only | n/a |