SaaS metrics are the language the business runs on, and most teams get at least one of them subtly wrong. A founder counts a one-time setup fee as MRR, an operator includes payment-processing fees in gross margin, an analyst divides by the wrong denominator in NDR. The numbers drift, the board deck drifts, and decisions get made on a picture that isn't quite true. This post is the working reference we hand to engineering and finance teams when they wire metrics into a dashboard for the first time — every definition, every formula, the healthy range we'd defend to an investor in 2026, and a runnable SQL snippet that computes MRR from a Stripe-shaped subscriptions table.
The metrics that actually matter
The SaaS metric zoo is larger than it needs to be. Eleven numbers cover almost everything a board, an investor, or an operator cares about. Learn these, compute them consistently, and the rest are derivations.
| Metric | What it measures | 2026 healthy range |
|---|---|---|
| MRR | Normalized recurring revenue per month | Growth 15–25% MoM early, 5–10% at scale |
| ARR | MRR × 12, or sum of annual contract values | Same growth shape as MRR |
| ARPU / ARPA | Average revenue per user or account | Trends up as you move upmarket |
| Gross margin | Revenue minus cost to deliver service | 75%+ for pure SaaS, 55–70% for AI-heavy |
| CAC | Fully-loaded cost to acquire a customer | Depends on ACV; look at payback |
| CAC payback | Months to recover CAC from gross profit | Under 12 strong, 12–18 median, >24 worrying |
| LTV | Gross profit from a customer over lifetime | LTV:CAC of 3:1 to 5:1 |
| Gross dollar retention (GDR) | Retention excluding expansion | 90%+ for mid-market, 95%+ for enterprise |
| Net dollar retention (NDR) | Retention including expansion | Median 108% public co., 120%+ top tier |
| Quick ratio | (New + expansion) / (churn + contraction) | Above 4 is healthy growth |
| Magic number | Net new ARR / prior-period S&M spend | Above 1.0 means sales efficiency is working |
MRR and ARR — the denominator for everything else
MRR is the normalized monthly recurring revenue across all active subscriptions on a given date. Annual plans divide by 12. Quarterly plans divide by 3. One-time fees, implementation charges, and usage overages that aren't part of the subscription contract do not count. ARR is either MRR × 12 or the sum of annualized contract values for annual-plan customers — pick one convention and stick to it.
The single most common MRR mistake: counting setup fees, one-time services, and non-recurring overages. MRR is recurring. If a charge won't repeat next month without customer action, it isn't MRR. Move it to a separate 'other revenue' line.
Computing MRR from a Stripe subscriptions table
Most teams running Stripe sync subscription and subscription_item rows into their warehouse. MRR on any given date is a sum over active subscriptions with their recurring amounts normalized to a month. A minimal Postgres query looks like this.
-- Active MRR on a given date, normalized to monthly
-- Assumes one price per subscription_item; extend for multi-item subs
WITH active_items AS (
SELECT
s.id AS subscription_id,
s.customer_id,
si.price_id,
si.quantity,
p.unit_amount, -- cents
p.currency,
p.recurring_interval, -- 'month' | 'year' | 'week' | 'day'
p.recurring_interval_count -- usually 1
FROM subscriptions s
JOIN subscription_items si ON si.subscription_id = s.id
JOIN prices p ON p.id = si.price_id
WHERE s.status IN ('active', 'trialing', 'past_due')
AND s.current_period_end >= '2026-02-01'
AND s.current_period_start <= '2026-02-01'
)
SELECT
SUM(
(unit_amount * quantity) / 100.0
/ CASE recurring_interval
WHEN 'year' THEN 12.0 * recurring_interval_count
WHEN 'month' THEN 1.0 * recurring_interval_count
WHEN 'week' THEN (1.0 / 4.345) * recurring_interval_count
WHEN 'day' THEN (1.0 / 30.4) * recurring_interval_count
END
) AS mrr_usd
FROM active_items
WHERE currency = 'usd';Two refinements almost every real-world implementation needs. First, handle discounts — a subscription with a 20% recurring coupon should have its MRR reduced by 20%, not its list price. Second, handle trials explicitly — include trialing subscriptions in a 'committed MRR' metric if your board reports it, exclude them from a 'paying MRR' metric if it doesn't.
CAC, payback, and LTV — the unit economics triangle
CAC is every dollar of sales and marketing spend in a period divided by the number of new customers acquired in that period. 'Every dollar' means salaries, tooling, paid media, agency fees, and the fully-loaded cost of your SDRs — not just the ad spend column from the paid traffic dashboard. Half the CAC arguments in the industry happen because two people are comparing a blended CAC to a paid-only CAC.
CAC payback is the more actionable number. It answers: how many months of gross profit from a new customer does it take to recover what we spent to acquire them? Formula: CAC divided by (ARPA times gross margin). If CAC is 2,400 dollars, ARPA is 200 per month, and gross margin is 80%, payback is 2,400 / (200 × 0.80) = 15 months. The 2026 public-SaaS median sits around 15 months; under 12 is strong, over 24 is usually a signal to either raise prices or cut acquisition spend.
LTV in its simplest form is ARPA × gross margin / monthly churn rate. This formula is fine for a stable mature business and misleading for an early-stage one. Early-stage churn is noisy, sample sizes are small, and a single churned whale can swing the ratio by 50%. Under a billion in revenue, most operators compute LTV cohort-by-cohort and report it as a range.
NDR, GDR, and why NDR is the metric investors care about most
Net dollar retention is the single most-cited SaaS metric in 2026 board decks, and for a reason: it captures how much revenue a cohort grows or shrinks without any new customers at all. The formula across a cohort from period T to T+12 months:
NDR = (starting ARR + expansion − contraction − churn) / starting ARR
Worked example for a cohort of customers with 1,000,000 starting ARR:
expansion from upgrades: +180,000
contraction (downgrades): −40,000
churn (canceled fully): −60,000
NDR = (1,000,000 + 180,000 − 40,000 − 60,000) / 1,000,000
= 1,080,000 / 1,000,000
= 108%Gross dollar retention is the same calculation without the expansion term — it tells you how much of existing ARR you keep before any upsell. GDR above 90% is table stakes for mid-market SaaS; enterprise SaaS typically targets 95% or higher. NDR above 100% means the installed base grows revenue on its own; above 120% means investors will value the company at a multiple premium. Median public SaaS NDR has compressed from a 2022 peak near 125% to around 108% in early 2026, so anything above 110% is genuinely strong right now.
NDR is measured over cohorts, not total ARR. If you divide current ARR by ARR twelve months ago, you're computing a growth rate, not retention — the number will be inflated by every new customer you signed in the interim.
Quick ratio and magic number — efficiency at a glance
The quick ratio is the growth-accounting shortcut everyone should know: (new MRR + expansion MRR) divided by (churned MRR + contraction MRR) over a period. A quick ratio of 4 means every dollar of lost revenue is replaced by four dollars of new or expanded revenue — strong growth. Below 1, the bucket is draining faster than it fills.
The magic number is the investor's thumbnail for sales efficiency: net new ARR in a quarter divided by sales and marketing spend in the previous quarter, annualized. A magic number above 1.0 generally justifies continued investment in the go-to-market engine; below 0.5 usually means something is broken in acquisition or retention and needs fixing before more dollars go into the machine.
Common mistakes we still see in 2026
- Counting setup fees, one-time migration costs, or professional services as MRR. Recurring means recurring.
- Treating annual-plan cash collected as MRR without dividing by 12. Cash isn't MRR — cash is cash.
- Measuring churn on customer count when the dollar weight is what matters. A 2% logo-churn month with a lost whale can be a 15% dollar-churn month.
- Computing NDR against total ARR instead of a cohort. The denominator is starting ARR for a specific cohort, not today's book.
- Excluding SDR salaries from CAC because 'they aren't ad spend'. Fully-loaded means fully-loaded.
- Using list-price ARPA when half your customers sit on discounts. Report effective ARPA, net of contracted discounts.
Wiring metrics into a dashboard
The cheapest durable setup in 2026 is: Stripe as the source of truth, nightly sync into a Postgres or a warehouse, a views layer that defines each metric exactly once, and a BI tool reading those views. Define each metric in one SQL view, reference that view everywhere, and when finance asks why two dashboards disagree, the answer is always 'they don't, because they read the same view.' That single-source-of-truth discipline is worth more than any metric definition you'll copy from a blog post, this one included.
Store a 'metric_definitions.md' file in the same repo as the SQL views, with the exact formula and any convention choices the team has made (what counts as MRR, how trials are handled, which currency rates to use). Every new hire reads it on day one.
Key takeaways
- Eleven metrics — MRR, ARR, ARPU, gross margin, CAC, CAC payback, LTV, GDR, NDR, quick ratio, magic number — cover almost every real operating question.
- MRR means recurring. Setup fees, one-time services, and non-contracted overages belong on a separate line.
- CAC payback is the most actionable unit-economics number. Target under 12 months; investigate anything over 18.
- NDR is the metric that most predicts 2026 SaaS valuations. Median public NDR is around 108%; 120%+ trades at a premium.
- Define each metric in one SQL view. Every dashboard reads from the view. No more 'our dashboards disagree' meetings.