1. Scope
The Unit Economics Calculator turns monthly ARPU, gross margin, average customer lifespan, monthly churn, and CAC into the core per-customer ratios: lifetime value (LTV), CAC payback, and the LTV:CAC ratio. LTV is built from the average lifespan you enter directly; the churn input is used only to cross-check that lifespan for consistency. It is the aggregate version of the model — cohort-level unit economics need timestamped purchase data the tool does not ingest.
2. Inputs and outputs
Inputs: monthly ARPU (average revenue per user), gross margin (%), average customer lifespan (months), monthly churn rate (%), and CAC (blended acquisition cost per paying customer). Outputs: monthly contribution (ARPU × margin), LTV, LTV:CAC ratio, CAC payback months, unit profit (LTV − CAC), the lifespan implied by churn (a consistency check), and a verdict band from fixed LTV:CAC thresholds — Unsustainable (< 1), Marginal (< 3), Healthy (< 5), Excellent (≥ 5).
Engine source: src/lib/unit-economics/engine.ts.
3. Formula / scoring logic
monthly_contribution = ARPU * (gross_margin_percent / 100)
LTV = monthly_contribution * avg_lifespan_months
CAC_payback = CAC / monthly_contribution
LTV_CAC_ratio = LTV / CAC
unit_profit = LTV - CAC
# Consistency check only — does NOT feed LTV
implied_lifespan = 1 / (monthly_churn_percent / 100)
# warns when implied_lifespan differs from avg_lifespan_months by > 20%
LTV here is the gross-profit form — margin included — over the lifespan you enter. A common alternative, LTV = ARPU / churn, both skips margin and forces lifespan to equal 1 / churn. This tool keeps lifespan as its own input and flags it only when it drifts from what churn implies.
4. Assumptions
- Lifespan is a direct input. LTV multiplies monthly contribution by the average lifespan you enter. Churn is not used to compute LTV; it only triggers a warning when 1 / churn diverges from your lifespan by more than 20%. Real retention curves are often steeper early and flatter later, so a single average lifespan can under-state the sticky tail.
- Blended ARPU and blended CAC. Cohort-level variance is hidden. A business with 80% self-serve (low CAC) and 20% sales-led (high CAC) customers needs to compute two separate unit-economics profiles.
- Gross margin is customer-variable-cost margin. Include: inference, hosting, auth, payment-processing fees. Exclude: headquarters overhead, founder salary, general R&D.
- No expansion revenue. If NDR > 100%, the LTV formula under-states lifetime. Use the MRR/ARR Growth Calculator with NDR input for a more accurate figure.
- ARPU is MRR-equivalent. Usage-priced products need to be normalised to monthly.
5. Data sources
- OpenView SaaS Benchmarks 2024 — LTV:CAC percentiles by stage and GTM motion.
- Paddle SaaS Benchmarks 2024 — churn percentiles by B2B vs B2C and stage.
- SaaS Capital Annual Survey — CAC payback and gross-margin norms for bootstrapped and capital-efficient SaaS.
6. Known limitations
- Small-sample instability. Fewer than ~300 customer-months of data produces a churn rate with wide confidence intervals. A 3% measured churn can be 1–6% true churn; LTV scales by 6× between those extremes.
- Revenue-churn vs logo-churn. We use revenue-churn by default because LTV is a revenue metric. If your product has heavy seat expansion or contraction, logo and revenue churn diverge and aggregate LTV misleads.
- The 3:1 LTV:CAC rule of thumb is lore, not law. The widely-cited target comes from David Skok's 2009 blog series. OpenView 2024 data shows bootstrapped SaaS clusters at 5:1–10:1 at the median, while venture-stage SaaS routinely accepts 1:1–2:1 during growth. Use the band appropriate to your stage and GTM motion.
- No account for customer heterogeneity. The aggregate LTV hides the fact that 20% of customers may deliver 80% of revenue — a healthier insight for acquisition strategy than the aggregate number.
7. Reproducibility
Input
ARPU = $50, gross_margin = 80%, avg_lifespan = 25 months, monthly_churn = 4%, CAC = $150.
Expected output
monthly_contribution = $40 (= $50 × 0.80). LTV = $1,000 (= $40 × 25). CAC payback = 3.75 months (= $150 / $40). LTV:CAC ≈ 6.67× → Excellent band (≥ 5). Unit profit = $850. Churn of 4% implies a 25-month lifespan, matching the input, so no consistency warning fires.
8. Change log
- 2026-04-24methodology page first published.
Worked example
Run live against the same engine this site ships
(/engines/unit-economics-calculator.js).
The inputs and outputs below are recomputed on every build and
independently re-verified in CI — they are never hand-authored.
Input
- tool
- unit_economics
- cac
- 150
- monthly_arpu
- 49
- gross_margin_percent
- 75
- avg_lifespan_months
- 24
- monthly_churn_percent
- 3
Output
- ltv
- 882
- ltvCacRatio
- 5.88
- cacPaybackMonths
- 4.08
- monthlyContribution
- 36.75
- unitProfit
- 732
- impliedLifespanFromChurn
- 33.33
- verdict
- Excellent
- verdictColor
- blue
- warnings[0]
- Churn rate implies a lifespan of 33.3 months, but you entered 24 months. Your LTV projection may be optimistic.
- assumptionsEcho.cac
- 150
- assumptionsEcho.monthly_arpu
- 49
- assumptionsEcho.gross_margin_percent
- 75
- assumptionsEcho.avg_lifespan_months
- 24
- assumptionsEcho.monthly_churn_percent
- 3
Frequently asked questions
- What does the Unit Economics Calculator compute?
- It turns monthly ARPU, gross margin, average customer lifespan (a direct input), and CAC into per-customer viability ratios: lifetime value (LTV = monthly contribution × lifespan months), CAC payback, and the LTV:CAC ratio. Monthly churn is only used to flag when the entered lifespan looks optimistic.
- Does it do cohort-level analysis?
- No. It is the aggregate version of the model — for cohort-level unit economics you need timestamped purchase data the tool does not ingest.
- Can I verify it with a worked example?
- Yes. With ARPU = $50, gross_margin = 80%, avg_lifespan = 25 months (a 4% monthly churn implies the same), CAC = $150: monthly contribution = $40, LTV = $1,000, CAC payback = 3.75 months, LTV:CAC ≈ 6.7×.