URL: /revenue/net-revenue-retention · Id: `page:/revenue/net-revenue-retention`

# Net revenue retention: keep and grow, one number

> Net revenue retention reads what your Customers of 90 days ago pay today, beside logo churn and the gross line.

Net revenue retention is the ARR your [Customers](https://startupbuilder.dev/business/nouns/customer) of 90 days ago pay today, upgrades and downgrades included. It reads 85 % on leaseline.app.

## The number

```text title="Keep and grow, one number · Ask"
How much of last quarter’s ARR did our Customers keep and grow?
```

```ts title="Keep and grow, one number · SDK"
import { $ } from 'startup-builder'

const nrr = await $.Metric.query({ metric: 'net-revenue-retention', shape: 'retention', window: '90d' })   // the Customers earning on Jul 21, 90 days on
const churn = await $.Metric.query({ metric: 'logo-churn', shape: 'trend', window: '90d' })   // how many of them left
return await $.Metric.query({ metric: 'gross-revenue-retention', shape: 'retention', window: '90d' })   // the same, before upgrades and win-backs · Not live yet, gaps #4
```

```json title="Keep and grow, one number · Response · sample"
{
  "cohort": "2026-07-21",
  "customers": 13,
  "startArr": 4511,
  "moves": {
    "reactivatedArr": 0,
    "expansionArr": 694,
    "contractionArr": 0,
    "churnedArr": -1388,
    "oneTimeRolloffArr": 0
  },
  "endArr": 3817,
  "rows": [
    {
      "metric": "net-revenue-retention",
      "value": 84.6,
      "unit": "percent"
    },
    {
      "metric": "gross-revenue-retention",
      "value": 69.2,
      "unit": "percent"
    },
    {
      "metric": "logo-churn",
      "value": 30.8,
      "unit": "percent",
      "customers": 4
    }
  ]
}
```

`85 % net revenue retention · ■■□□ Early sign · n 13 Customers · 90 days`

`$.Metric.query({ metric: 'net-revenue-retention', shape: 'retention', window: '90d' })` · sample

| The Customers earning on Jul 21 | ARR then | ARR 90 days on | Kept and grown |
| --- | --- | --- | --- |
| `13` | `$4,511 ARR` | `$3,817 ARR` | `85 %` |

The hub defines it: [`net-revenue-retention`](https://startupbuilder.dev/agents/customer#net-revenue-retention). The CSM’s number is this reading on its own book; Head of customers reads it for the Startup.

## Beside it
| Reading | 90 days | What it counts |
| --- | --- | --- |
| [`logo-churn`](https://startupbuilder.dev/agents/customer#logo-churn) | `31 %` | 4 of 13 Customers left |
| The gross line, `gross-revenue-retention` (Not live yet, [gaps #4](/code/reference#not-live-yet)) | `69 %` | the same ARR before upgrades and win-backs: only Downgrades, Lost Customers and One-time sales ending |

All three are readings with no parent: none of them redefines a number in the tree.

## Its leaves
| Move | 90 days | Its page |
| --- | --- | --- |
| Won back | `$0 ARR` | [Won back](/revenue/reactivated-arr) |
| Upgrades | `+$694 ARR` | [Upgrades](/revenue/expansion-arr) |
| Downgrades | `$0 ARR` | [Downgrades](/revenue/contraction-arr) |
| Lost Customers | `−$1,388 ARR` | [Lost Customers](/revenue/churned-arr) |
| One-time sales ending | `$0 ARR` | [One-time sales ending](/revenue/one-time-rolloff-arr) |