EnableYourData.com

KPI · Abonnementen en SaaS

Bruto omzetretentie (GRR): formule en voorbeeld.

Bruto omzetretentie (GRR) is de MRR van bestaande klanten na een periode, zonder uitbreiding, gedeeld door hun MRR aan het begin, in procenten. Alleen inkrimping en opzeggingen tellen mee; upgrades en extra gebruikers laat je buiten beschouwing. GRR laat zien hoe goed je de omzet die je al hebt vasthoudt, en kan daardoor nooit boven 100% uitkomen.

Formule voor bruto omzetretentie (GRR)

(Begin-MRR − inkrimping − churn) ÷ begin-MRR × 100%

Rekenvoorbeeld

De klanten die op 1 oktober 2025 actief waren bij de abonnementsdienst van Acme, waren samen € 36.000 MRR waard. Een jaar later is € 1.080 verloren door inkrimping en € 2.520 door opzeggingen. De GRR is (€ 36.000 − € 1.080 − € 2.520) ÷ € 36.000 × 100% = € 32.400 ÷ € 36.000 × 100% = 90%.

Fictieve cijfers van Acme Groothandel.

Zo lees je deze KPI

Een hogere GRR betekent dat je minder bestaande omzet verliest; het is een zuivere maat voor klantbehoud omdat uitbreiding het verlies niet kan verbergen. Vergelijk GRR met NRR: een groot verschil betekent dat je groei sterk leunt op uitbreiding bij een deel van de klanten. Volg GRR per segment en abonnementsvorm, en kijk bij een daling naar de redenen van opzegging en downgrade.

Valkuilen bij bruto omzetretentie (GRR)

  • Uitbreiding per klant niet begrenzen, waardoor een klant die upgradet het verlies van een andere klant compenseert.
  • Klanten die in de periode zijn gestart meenemen in de begin-MRR.
  • Een tijdelijke pauze van een abonnement als opzegging tellen, of juist een definitieve opzegging als pauze.

SQL & DAX

Bruto omzetretentie (GRR) berekenen in SQL en DAX

Twee voorbeelden op een fictief datawarehouse van Acme Groothandel: een query in PostgreSQL en een measure voor een Power BI-model. Pas tabel- en kolomnamen aan je eigen model aan.

SQL · PostgreSQL
WITH per_customer AS (
  SELECT customer_id,
         SUM(mrr) FILTER (WHERE started_at <= current_date - interval '1 year'
           AND (ended_at IS NULL OR ended_at > current_date - interval '1 year')) AS start_mrr,
         SUM(mrr) FILTER (WHERE started_at <= current_date
           AND (ended_at IS NULL OR ended_at > current_date)) AS end_mrr
  FROM subscriptions
  GROUP BY customer_id
)
SELECT SUM(start_mrr) AS start_mrr,
       SUM(LEAST(COALESCE(end_mrr, 0), start_mrr)) AS retained_mrr,
       ROUND(100.0 * SUM(LEAST(COALESCE(end_mrr, 0), start_mrr)) / NULLIF(SUM(start_mrr), 0), 1) AS grr_pct
FROM per_customer
WHERE start_mrr > 0;
DAX · Power BI
GRR (12 months) % =
VAR StartDate = EDATE(MAX('Date'[Date]), -12)
VAR Window = DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -12, MONTH)
VAR Cohort =
    CALCULATETABLE(VALUES(MrrMovements[customer_id]), REMOVEFILTERS('Date'), MrrMovements[month] <= StartDate)
VAR StartMRR = CALCULATE([MRR], DATEADD('Date'[Date], -12, MONTH))
VAR Lost =
    CALCULATE(SUM(MrrMovements[amount]), Window, Cohort, MrrMovements[movement_type] IN {"contraction", "churn"})
RETURN
    DIVIDE(StartMRR - Lost, StartMRR)

In ENABLE

Deze KPI volgen in ENABLE

Vragen in gewone taal

Vraag naar bruto omzetretentie (GRR) per maand, klant of product in de SQL Explorer met AI. De AI schrijft de SQL, jij ziet de query en voert hem zelf uit; de AI krijgt alleen metadata.

Lees meer →

In je Power BI-dashboard

Leg de KPI vast als measure in je Power BI-model en toon hem in het portaal, met "Laatst ververst" erbij. Toegangsprofielen en optioneel row-level security bepalen wie welke cijfers ziet.

Lees meer →

Eigen dashboards (pilot)

Zet de KPI als tegel in een eigen dashboard, met vergelijking met vorig jaar. De Dashboard Builder is een pilot en per klant aan te zetten.

Lees meer →

Doelen per maand

Met de ingebouwde app Targets leg je per maand een doel voor de KPI vast, zodat je realisatie en doel naast elkaar ziet.

Lees meer →

FAQ

Veelgestelde vragen

Hoe bereken je gross revenue retention?

Je neemt de MRR van de klanten die aan het begin van de periode actief waren, trekt daar inkrimping en opzeggingen van af en deelt het resultaat door de begin-MRR. Uitbreiding tel je niet mee. Bij € 80.000 begin-MRR en € 6.400 verlies is de GRR 92%.

Waarom kan GRR niet boven 100% komen?

Omdat je uitbreiding bij bestaande klanten niet meetelt, kan de MRR van de groep alleen gelijk blijven of dalen. Per klant tel je hooguit de oorspronkelijke MRR mee. Een GRR van 100% betekent dat je geen enkele euro bestaande omzet hebt verloren.

Wat zegt het verschil tussen GRR en NRR?

Het verschil tussen NRR en GRR is de bijdrage van uitbreiding bij bestaande klanten. Een NRR van 108% bij een GRR van 90% betekent dat uitbreiding 18 procentpunt toevoegt. Hoe groter het verschil, hoe meer je groei afhangt van upsell aan een deel van de klanten.

AI gebruiken op je eigen data. Veilig, en zonder hoofdpijn.

In een online demo laten we zien hoe ENABLE je data veilig beschikbaar maakt en hoe je erop bouwt: een app beschrijven in de AI Builder, vragen in gewone taal, dashboards en API's. En hoe wij het voor je inrichten en beheren.