Net revenue retention (NRR), or net dollar retention, is the share of recurring revenue you keep from existing customers after upgrades, downgrades and cancellations, as a percentage of what they paid at the start.
NRR = (MRR at start + Expansion − Contraction − Churned) ÷ MRR at start × 100
On the sample data below, six months come to 96.18%.
Why it matters
NRR above 100% means existing customers grow revenue on their own, before any new sale. It is the single number subscription investors look at most.
Worked example
The table shows the columns this metric needs from six months of a made-up subscription brand. Add each column up over the six months, then put the totals into the formula:
| Month | MRR at start of month | Expansion MRR | Contraction MRR | Churned MRR |
|---|---|---|---|---|
| 2026-01 | ₹1,80,000 | ₹6,000 | ₹3,500 | ₹9,000 |
| 2026-02 | ₹1,95,500 | ₹7,200 | ₹4,100 | ₹10,200 |
| 2026-03 | ₹2,12,900 | ₹6,800 | ₹3,900 | ₹11,800 |
| 2026-04 | ₹2,30,000 | ₹7,400 | ₹4,600 | ₹12,900 |
| 2026-05 | ₹2,41,400 | ₹8,100 | ₹4,200 | ₹12,100 |
| 2026-06 | ₹2,60,400 | ₹8,600 | ₹4,800 | ₹13,400 |
| Total | ₹13,20,200 | ₹44,100 | ₹25,100 | ₹69,400 |
(₹13,20,200 + ₹44,100 − ₹25,100 − ₹69,400) ÷ ₹13,20,200 × 100 = 96.18%
Add up first, then divide. Averaging the six monthly figures gives a slightly different answer, because it counts a small month the same as a large one.
Month by month
| Month | Net revenue retention |
|---|---|
| 2026-01 | 96.39% |
| 2026-02 | 96.37% |
| 2026-03 | 95.82% |
| 2026-04 | 95.61% |
| 2026-05 | 96.60% |
| 2026-06 | 96.31% |
NRR calculator
How to read it
NRR is usually reported for a year. Monthly NRR here is close to 100% by nature; small differences compound into large yearly ones.
Common mistakes
- Do not include new customers' revenue; NRR is about the customers you already had.
- A price rise lifts NRR once, without customers valuing the product more.
- Monthly NRR to the twelfth power approximates yearly NRR only if the rate is steady.
Calculate net revenue retention in Excel, SQL or Python
The quickest version, for the sample sheet laid out as in the CSV (headers in row 1, months in rows 2 to 7):
=(SUM(AA2:AA7) + SUM(AC2:AC7) - SUM(AD2:AD7) - SUM(AE2:AE7)) / SUM(AA2:AA7)- Net revenue retention in Excel and Google Sheets — per-month formula and zero-safe version
- Net revenue retention in SQL — query by month and for the period
- Net revenue retention in Python (pandas) — pandas script with expected output
Related metrics
- Gross revenue retention (GRR)
- Gross revenue churn rate
- Expansion MRR rate
- Customer retention rate (CRR)
See all business metrics, or the statistics methods that sit behind them.
Questions people ask
- What is net revenue retention?
- Net revenue retention (NRR), or net dollar retention, is the share of recurring revenue you keep from existing customers after upgrades, downgrades and cancellations, as a percentage of what they paid at the start.
- How do you calculate net revenue retention?
- NRR = (MRR at start + Expansion − Contraction − Churned) ÷ MRR at start × 100. For example, with six months of sample data: (₹13,20,200 + ₹44,100 − ₹25,100 − ₹69,400) ÷ ₹13,20,200 × 100 = 96.18%.
- What is the NRR formula in Excel?
- With the sample data laid out as in the downloadable CSV, =(SUM(AA2:AA7) + SUM(AC2:AC7) - SUM(AD2:AD7) - SUM(AE2:AE7)) / SUM(AA2:AA7) gives the figure for the whole period (format the cell as a percentage). For one month, use =(AA2 + AC2 - AD2 - AE2) / AA2 and fill it down.
- What is a good net revenue retention?
- There is no figure that is right for every business: it depends on your products, prices and channels. NRR is usually reported for a year. Monthly NRR here is close to 100% by nature; small differences compound into large yearly ones.
Check how stable it is
A metric moves for ordinary reasons as well as real ones. These methods separate the two: the spread shows what a normal month looks like, the moving average smooths it, the z-score flags a month that is out of line and the trend line shows the direction.
Guides
About the data on this page
The figures come from a small made-up dataset, printed above in full so you can check every number by hand. Download it as monthly.csv. The results are computed from those rows when the page is built, and the Excel formulas, SQL and Python on these pages are run against the same rows before publishing, so the code and the answers agree.
To get these numbers from your own data without writing formulas, try AnalyzeIt: ask in plain words and it shows the working behind every figure.
Legal entity
Devansh Yadav
Moradabad, Uttar Pradesh
Governing law: Courts at Moradabad, Uttar Pradesh
Phone: +91 8433475698
Legal: legal@analyzeit.in