
NRR 100%만 보면 이탈이 숨는다…GRR을 함께 봐야 하는 이유

NRR과 GRR의 차이는 기존 고객에게서 발생한 확장 매출을 더하느냐에 있다. Stripe의 NRR 설명에 따르면, NRR이 100%여도 업셀 매출이 해지·다운그레이드 손실을 메웠다면 고객 이탈이나 계약 축소는 계속 발생했을 수 있다. GRR은 확장을 제외하고 처음 있던 매출이 얼마나 남았는지 보여준다.
두 지표를 비교하려면 기간 시작일에 이미 유료였던 고객만 하나의 집단으로 고정한다. 그 고객들의 시작 월간 반복 매출(MRR)을 공통 분모로 쓰고, 같은 고객들이 기간 중 만든 확장·축소·해지 MRR을 각각 반영한다. 기간 중 처음 계약한 고객의 매출은 기존 고객의 유지 성과가 아니므로 어느 쪽 계산에도 넣지 않는다.
같은 고객군에서 확장 매출만 다르게 취급한다
NRR = (시작 MRR + 확장 MRR − 축소 MRR − 해지 MRR) ÷ 시작 MRR × 100이다. GRR = (시작 MRR − 축소 MRR − 해지 MRR) ÷ 시작 MRR × 100이다. 확장은 시작일에 있던 고객의 요금제 상향, 이용량 증가, 추가 상품 구매 등으로 늘어난 반복 매출을 뜻한다. 축소는 기존 고객이 낮은 요금제로 이동하거나 이용량을 줄여 사라진 MRR이고, 해지는 계약 종료로 없어지는 MRR이다.
ChartMogul의 GRR 산식은 시작 MRR에서 축소와 해지를 빼고, 신규 고객 매출과 확장 매출은 제외한다. 따라서 GRR은 100%를 넘을 수 있지만, 같은 고객군의 NRR은 확장 매출에 따라 100%를 넘을 수 있다. 두 지표에 동일한 분모와 손실 항목을 적용했다면 NRR과 GRR의 차이는 확장 MRR을 시작 MRR로 나눈 비율이다.
이 계산에서 ‘같은 기간’은 단순한 형식이 아니다. 시작 MRR은 월초 기준인데 손실은 분기 전체에서 가져오면 분자와 분모가 다른 시간 범위를 가리킨다. 월간 수치를 낼 때는 월초 고객군의 월초 MRR과 그 고객군의 월말 MRR 변동을 비교하고, 분기 수치를 낼 때는 분기 시작 고객군을 끝까지 따라가야 한다.
시작 MRR 1억원이면 어떻게 갈라질까
다음은 계산을 보여주기 위한 가상의 월간 사례다. 월초 유료 고객들의 시작 MRR은 1억원이다. 월말까지 이 고객군에서 업셀 등으로 늘어난 MRR은 1800만원, 다운그레이드로 줄어든 MRR은 700만원, 해지로 사라진 MRR은 1100만원이라고 가정한다. 새 고객이 낸 매출은 이 숫자들에 들어 있지 않다.
- 확장을 제외한 잔존 매출: 1억원 − 700만원 − 1100만원 = 8200만원
- GRR: 8200만원 ÷ 1억원 × 100 = 82%
- 확장을 포함한 기말 매출: 8200만원 + 1800만원 = 1억원
- NRR: 1억원 ÷ 1억원 × 100 = 100%
월말 기존 고객군의 MRR은 출발점과 같은 1억원이므로 NRR만 보면 매출이 유지된 듯하다. 그러나 원래 있던 매출 중 확장 없이 남은 금액은 8200만원이다. 두 지표의 18%포인트 차이는 새로 유치한 고객 덕분이 아니라 시작 고객군 안에서 발생한 1800만원의 확장 매출 때문이다.
같은 가상 사례에서 확장 MRR만 2000만원으로 늘리고 축소·해지 금액은 그대로 둔다면 NRR은 102%가 된다. GRR은 여전히 82%다. 기존 고객군의 순매출은 성장했지만, 처음 있던 매출 중 해지와 계약 축소로 빠져나간 금액은 줄어들지 않았다. NRR이 100%를 넘는다는 사실만으로 손실 항목이 개선됐다고 볼 수 없는 이유다.
GRR이 보여주는 손실과 보여주지 않는 손실
GRR은 확장을 걷어낸 뒤 시작 매출 중 남은 비중을 보여준다. 가상 사례의 82%는 시작 매출의 18%에 해당하는 MRR이 해지 또는 다운그레이드로 줄었다는 뜻이다. 반면 NRR 100%는 그 손실을 확장 매출이 정확히 메워 기존 고객군의 기말 MRR이 시작점과 같아졌다는 뜻이다.
GRR 하나로는 손실이 어디서 왔는지까지 구분할 수 없다. 사례에서는 해지 MRR 1100만원과 축소 MRR 700만원을 따로 적어야 계약을 완전히 잃은 금액과 규모가 작아진 계약의 금액이 드러난다. NRR과 GRR의 격차가 커졌을 때도 원인이 확장 증가인지 손실 증가인지 판단하려면 이 항목들을 함께 봐야 한다.
매출 유지율과 고객 수 유지율도 서로 다른 질문에 답한다. 큰 고객 한 곳의 해지는 고객 수에는 한 건으로 잡히지만 MRR 손실에는 크게 반영될 수 있다. 반대로 여러 소액 고객이 떠나도 남은 고객의 업셀이 NRR을 끌어올릴 수 있다. 떠난 고객의 수나 비율을 알고 싶다면 매출 유지율과 별도로 고객 수 기준 이탈률을 계산해야 한다.
신규 고객 매출은 분모와 분자에서 모두 제외한다
시작 고객군은 기간 첫날을 기준으로 확정한다. 월초에 유료였던 고객의 MRR만 시작 MRR에 합산하고, 월중 처음 유료 계약을 맺은 고객은 분모에 넣지 않는다. 같은 이유로 그 신규 고객의 월말 MRR도 기존 고객군의 기말 매출이나 확장 MRR에 섞지 않는다. 기존 고객의 추가 구매와 신규 고객의 첫 구매는 매출 증가라는 점에서는 같아도 유지율 계산에서는 서로 다른 항목이다.
앞의 가상 사례에 월중 신규 고객 매출 1500만원이 별도로 생겼다고 하자. 회사 전체의 월말 MRR은 1억1500만원이 될 수 있지만, 기존 고객군의 월말 MRR은 여전히 1억원이다. 전체 월말 MRR을 시작 고객군의 1억원으로 나누면 115%가 나오지만, 이는 신규 고객 확보와 기존 고객 유지를 한 식에 섞은 결과다. 두 유지율의 분자에는 기존 고객군에서 발생한 변동만 남겨야 한다.
MRR의 단위도 일관돼야 한다. 연간 계약의 월 환산 반복 매출을 쓰기로 했다면 시작과 종료 시점에 같은 방식으로 환산한다. 일회성 구축비나 청구 시점에만 생기는 금액을 한쪽에 넣으면 구독 계약에서 매달 반복되는 매출의 변화를 제대로 읽을 수 없다.
계산에 넣을 값을 확인하는 순서
FounderCalc의 유지율 계산기는 시작 MRR, 확장 MRR, 축소 MRR, 해지 MRR을 입력받아 NRR과 GRR을 함께 산출한다. 계산기의 입력칸에 값을 옮기기 전에 고객군과 기간을 맞추면 신규 고객 매출의 혼입을 막을 수 있다.
- 보고 기간의 시작일과 종료일을 정하고, 시작일에 유료였던 고객 계정을 고정한다.
- 그 계정들의 시작 MRR을 합산해 NRR과 GRR에 공통 분모로 사용한다.
- 같은 계정에서 늘어난 MRR은 확장, 줄어든 MRR은 축소, 계약 종료로 없어진 MRR은 해지로 분류한다.
- 기간 중 새로 들어온 계정의 MRR은 시작 고객군의 기말 MRR과 확장 MRR에서 제외한다.
- 두 유지율을 산출한 뒤 그 차이가 확장 MRR ÷ 시작 MRR과 일치하는지 확인한다.
한 계정에서 상품 추가와 일부 축소가 함께 일어났다면 동일한 변동을 양쪽에 중복 기록하지 않도록 계정별 시작·종료 MRR을 맞춰야 한다. 계약 종료 후 재가입처럼 분류가 달라질 수 있는 경우에도 보고 기간마다 같은 기준을 적용해야 비교가 가능하다. NRR과 GRR 옆에 확장·축소·해지 MRR을 각각 적으면 순매출이 유지된 이유와 처음 있던 매출에서 빠져나간 금액을 함께 볼 수 있다.
함께 읽기:
관련 기사
뉴스레터 구독
최신 Web3, AI, 암호화폐 뉴스를 이메일로 받아보세요.




