{"product_id":"saas-metrics","title":"SaaS Lifetime Value Calculator","description":"\u003cstyle\u003e\n.sm-calculator {\n  --ink: #0f172a;\n  --muted: #475569;\n  --border: #e2e8f0;\n  --surface: #ffffff;\n  --tint: #f8fafc;\n  --primary: #1d4ed8;\n  --accent: #c2410c;\n  --accent-hover: #9a3412;\n  --chart-1: #1e40af;\n  --chart-2: #0d9488;\n  --chart-3: #7c3aed;\n  --chart-4: #be185d;\n  --chart-5: #334155;\n  container-type: inline-size;\n  width: 100%;\n  max-width: 1200px;\n  margin: 0 auto;\n  color: var(--ink);\n  background: var(--tint);\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  padding: 24px;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n  font-size: 15px;\n  line-height: 1.55;\n  box-shadow: 0 1px 2px rgba(15, 23, 42, .06);\n  overflow-wrap: anywhere;\n}\n.sm-calculator,\n.sm-calculator *,\n.sm-calculator *::before,\n.sm-calculator *::after {\n  box-sizing: border-box;\n}\n.sm-calculator .sm-header,\n.sm-calculator .sm-toolbar,\n.sm-calculator .sm-workspace,\n.sm-calculator .sm-breakdown,\n.sm-calculator .sm-chart,\n.sm-calculator .sm-table,\n.sm-calculator .sm-education,\n.sm-calculator .sm-panel,\n.sm-calculator .sm-results,\n.sm-calculator .sm-inputs,\n.sm-calculator .sm-chart-card,\n.sm-calculator .sm-table-card,\n.sm-calculator .sm-breakdown-cluster,\n.sm-calculator .sm-chart-layout,\n.sm-calculator .sm-legend,\n.sm-calculator .sm-callout,\n.sm-calculator .sm-table-wrap,\n.sm-calculator .sm-field,\n.sm-calculator .sm-field-grid,\n.sm-calculator .sm-result-grid,\n.sm-calculator .sm-pills {\n  min-width: 0;\n}\n.sm-calculator .sm-header {\n  margin-bottom: 16px;\n}\n.sm-calculator .sm-header h2 {\n  margin: 0;\n  font-size: 24px;\n  line-height: 1.25;\n  font-weight: 700;\n  letter-spacing: -.02em;\n}\n.sm-calculator .sm-lede {\n  margin: 8px 0 0;\n  color: var(--muted);\n  max-width: 780px;\n}\n.sm-calculator .sm-pills {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n  margin-top: 16px;\n}\n.sm-calculator .sm-pill {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  min-height: 32px;\n  padding: 4px 10px;\n  border: 1px solid var(--border);\n  border-radius: 999px;\n  background: var(--surface);\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n  white-space: nowrap;\n}\n.sm-calculator .sm-pill strong {\n  color: var(--ink);\n  font-variant-numeric: tabular-nums;\n}\n.sm-calculator .sm-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: 8px;\n  margin: 0 0 16px;\n}\n.sm-calculator .sm-button {\n  min-height: 44px;\n  border-radius: 6px;\n  border: 1px solid var(--border);\n  padding: 10px 16px;\n  font: inherit;\n  font-weight: 650;\n  cursor: pointer;\n  transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease;\n}\n.sm-calculator .sm-button:focus-visible,\n.sm-calculator input:focus-visible,\n.sm-calculator select:focus-visible,\n.sm-calculator summary:focus-visible,\n.sm-calculator a:focus-visible {\n  outline: 3px solid rgba(29, 78, 216, .35);\n  outline-offset: 2px;\n}\n.sm-calculator .sm-button:hover {\n  box-shadow: 0 2px 5px rgba(15, 23, 42, .12);\n}\n.sm-calculator .sm-button:active {\n  transform: translateY(1px);\n}\n.sm-calculator .sm-download {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  padding: 12px 18px;\n  border-color: var(--accent);\n  background: var(--accent);\n  color: #ffffff;\n  white-space: nowrap;\n}\n.sm-calculator .sm-download:hover,\n.sm-calculator .sm-download:active {\n  border-color: var(--accent-hover);\n  background: var(--accent-hover);\n}\n.sm-calculator .sm-download-icon {\n  width: 18px;\n  height: 18px;\n  display: inline-block;\n  flex: 0 0 18px;\n}\n.sm-calculator .sm-reset {\n  background: var(--surface);\n  color: var(--ink);\n}\n.sm-calculator .sm-workspace {\n  display: grid;\n  gap: 16px;\n  align-items: start;\n}\n.sm-calculator .sm-panel,\n.sm-calculator .sm-chart-card,\n.sm-calculator .sm-table-card,\n.sm-calculator .sm-education {\n  background: var(--surface);\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  box-shadow: 0 1px 2px rgba(15, 23, 42, .06);\n}\n.sm-calculator .sm-panel,\n.sm-calculator .sm-chart-card,\n.sm-calculator .sm-table-card {\n  padding: 16px;\n}\n.sm-calculator .sm-section-title {\n  margin: 0 0 12px;\n  font-size: 18px;\n  line-height: 1.35;\n  font-weight: 650;\n}\n.sm-calculator .sm-section-subtitle {\n  margin: -4px 0 16px;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-field-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));\n  gap: 16px;\n}\n.sm-calculator .sm-field {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n.sm-calculator .sm-label {\n  display: block;\n  margin-bottom: 6px;\n  color: var(--ink);\n  font-size: 14px;\n  font-weight: 600;\n}\n.sm-calculator .sm-input,\n.sm-calculator .sm-select {\n  width: 100%;\n  min-height: 44px;\n  border: 1px solid #cbd5e1;\n  border-radius: 6px;\n  background: var(--surface);\n  color: var(--ink);\n  padding: 10px 12px;\n  font: inherit;\n  font-size: 15px;\n  font-variant-numeric: tabular-nums;\n}\n.sm-calculator .sm-input:hover,\n.sm-calculator .sm-select:hover {\n  border-color: #94a3b8;\n}\n.sm-calculator .sm-help,\n.sm-calculator .sm-error {\n  min-height: 40px;\n  margin: 6px 0 0;\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 1.45;\n}\n.sm-calculator .sm-help {\n  color: var(--muted);\n}\n.sm-calculator .sm-error {\n  color: #9f1239;\n}\n.sm-calculator .sm-error:empty {\n  display: none;\n}\n.sm-calculator .sm-mode-row {\n  display: flex;\n  align-items: flex-start;\n  gap: 10px;\n  padding: 12px;\n  margin-bottom: 16px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  background: var(--tint);\n}\n.sm-calculator .sm-mode-row input {\n  width: 18px;\n  height: 18px;\n  margin: 2px 0 0;\n  accent-color: var(--primary);\n  flex: 0 0 18px;\n}\n.sm-calculator .sm-mode-copy {\n  min-width: 0;\n}\n.sm-calculator .sm-mode-copy label {\n  display: block;\n  font-size: 14px;\n  font-weight: 600;\n  cursor: pointer;\n}\n.sm-calculator .sm-mode-copy span {\n  display: block;\n  margin-top: 2px;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-derived-fields[hidden],\n.sm-calculator .sm-direct-field[hidden] {\n  display: none;\n}\n.sm-calculator .sm-primary-result {\n  padding: 16px;\n  border: 1px solid #bfdbfe;\n  border-radius: 8px;\n  background: #eff6ff;\n}\n.sm-calculator .sm-primary-label {\n  margin: 0;\n  color: #1e3a8a;\n  font-size: 13px;\n  font-weight: 650;\n  text-transform: uppercase;\n  letter-spacing: .04em;\n}\n.sm-calculator .sm-primary-value {\n  margin: 4px 0 0;\n  color: #172554;\n  font-size: 30px;\n  line-height: 1.2;\n  font-weight: 700;\n  font-variant-numeric: tabular-nums;\n  overflow-wrap: anywhere;\n}\n.sm-calculator .sm-primary-context {\n  margin: 6px 0 0;\n  color: #1e3a8a;\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-result-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(145px, 1fr));\n  gap: 12px;\n  margin-top: 12px;\n}\n.sm-calculator .sm-result-card {\n  padding: 12px;\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  background: var(--surface);\n}\n.sm-calculator .sm-result-card span {\n  display: block;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-result-card strong {\n  display: block;\n  margin-top: 4px;\n  color: var(--ink);\n  font-size: 20px;\n  line-height: 1.25;\n  font-weight: 700;\n  font-variant-numeric: tabular-nums;\n  overflow-wrap: anywhere;\n}\n.sm-calculator .sm-formula {\n  margin: 12px 0 0;\n  padding: 10px 12px;\n  border-left: 3px solid var(--primary);\n  background: var(--tint);\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-breakdown,\n.sm-calculator .sm-chart,\n.sm-calculator .sm-table {\n  margin-top: 16px;\n}\n.sm-calculator .sm-breakdown-cluster {\n  display: grid;\n  gap: 24px;\n  align-items: center;\n  justify-items: center;\n  max-width: 720px;\n  margin: 0 auto;\n}\n.sm-calculator .sm-donut-wrap {\n  width: min(100%, 320px);\n  display: grid;\n  place-items: center;\n}\n.sm-calculator .sm-donut {\n  width: min(100%, 280px);\n  aspect-ratio: 1;\n  display: block;\n}\n.sm-calculator .sm-donut-center {\n  fill: var(--ink);\n  font-size: 18px;\n  font-weight: 700;\n  text-anchor: middle;\n  dominant-baseline: middle;\n  font-variant-numeric: tabular-nums;\n}\n.sm-calculator .sm-donut-center-label {\n  fill: var(--muted);\n  font-size: 13px;\n  font-weight: 600;\n  text-anchor: middle;\n}\n.sm-calculator .sm-legend {\n  display: grid;\n  gap: 10px;\n  width: 100%;\n  max-width: 420px;\n}\n.sm-calculator .sm-legend-row {\n  display: grid;\n  grid-template-columns: 14px minmax(0, auto) auto auto;\n  align-items: baseline;\n  justify-content: start;\n  gap: 8px 12px;\n  padding: 8px 0;\n  border-bottom: 1px solid var(--border);\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-legend-row:last-child {\n  border-bottom: 0;\n}\n.sm-calculator .sm-swatch {\n  width: 12px;\n  height: 12px;\n  border-radius: 3px;\n  align-self: center;\n}\n.sm-calculator .sm-legend-name {\n  color: var(--ink);\n}\n.sm-calculator .sm-legend-value,\n.sm-calculator .sm-legend-percent {\n  color: var(--muted);\n  font-variant-numeric: tabular-nums;\n  white-space: nowrap;\n}\n.sm-calculator .sm-callout {\n  margin-top: 16px;\n  padding: 10px 12px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  background: var(--tint);\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-empty {\n  width: 100%;\n  padding: 12px;\n  border: 1px dashed #cbd5e1;\n  border-radius: 6px;\n  background: var(--tint);\n  color: var(--muted);\n  text-align: center;\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-chart-layout {\n  display: grid;\n  gap: 16px;\n}\n.sm-calculator .sm-plot-wrap {\n  width: 100%;\n}\n.sm-calculator .sm-line-chart {\n  display: block;\n  width: 100%;\n  min-height: 310px;\n  max-height: 420px;\n}\n.sm-calculator .sm-chart-legend {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: 12px 20px;\n  margin-top: 16px;\n}\n.sm-calculator .sm-chart-legend-item {\n  display: inline-grid;\n  grid-template-columns: 14px auto auto;\n  align-items: center;\n  gap: 8px;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-chart-legend-item strong {\n  color: var(--ink);\n  font-variant-numeric: tabular-nums;\n  white-space: nowrap;\n}\n.sm-calculator .sm-chart-summary {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0;\n}\n.sm-calculator .sm-safe-stack .sm-breakdown-cluster,\n.sm-calculator .sm-safe-stack .sm-chart-layout {\n  grid-template-columns: 1fr;\n  row-gap: 24px;\n  justify-items: center;\n}\n.sm-calculator .sm-safe-stack .sm-chart-legend {\n  margin-top: 20px;\n}\n.sm-calculator .sm-safe-stack .sm-callout {\n  margin-top: 20px;\n}\n.sm-calculator .sm-table-wrap {\n  width: 100%;\n  overflow-x: auto;\n  overflow-y: visible;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n}\n.sm-calculator table {\n  width: 100%;\n  min-width: 720px;\n  border-collapse: collapse;\n  font-size: 13px;\n  font-variant-numeric: tabular-nums;\n}\n.sm-calculator th,\n.sm-calculator td {\n  padding: 10px 12px;\n  border-bottom: 1px solid var(--border);\n  text-align: right;\n  white-space: nowrap;\n}\n.sm-calculator th:first-child,\n.sm-calculator td:first-child {\n  text-align: left;\n}\n.sm-calculator thead th {\n  background: #172554;\n  color: #ffffff;\n  font-weight: 650;\n}\n.sm-calculator tbody tr:hover {\n  background: var(--tint);\n}\n.sm-calculator tbody tr:last-child td {\n  border-bottom: 0;\n  font-weight: 650;\n}\n.sm-calculator .sm-table-note {\n  margin-top: 16px;\n  padding: 10px 12px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  background: var(--tint);\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.sm-calculator .sm-safe-table-stack .sm-table-note {\n  margin-top: 24px;\n}\n.sm-calculator .sm-education {\n  margin-top: 16px;\n  padding: 24px;\n}\n.sm-calculator .sm-education h2 {\n  margin: 28px 0 10px;\n  font-size: 18px;\n  line-height: 1.35;\n  font-weight: 650;\n}\n.sm-calculator .sm-education h2:first-child {\n  margin-top: 0;\n}\n.sm-calculator .sm-education h3 {\n  margin: 20px 0 8px;\n  font-size: 16px;\n  line-height: 1.4;\n  font-weight: 650;\n}\n.sm-calculator .sm-education p,\n.sm-calculator .sm-education ul {\n  margin: 0 0 12px;\n  color: #334155;\n}\n.sm-calculator .sm-education ul {\n  padding-left: 22px;\n}\n.sm-calculator .sm-education li {\n  margin: 6px 0;\n}\n.sm-calculator .sm-education a {\n  color: var(--primary);\n  font-weight: 600;\n  text-decoration-thickness: 1px;\n  text-underline-offset: 2px;\n}\n.sm-calculator .sm-education a:hover {\n  color: #1e3a8a;\n}\n@container (min-width: 640px) {\n  .sm-calculator .sm-breakdown-cluster {\n    grid-template-columns: minmax(240px, 300px) minmax(0, 420px);\n    justify-items: stretch;\n  }\n}\n@container (min-width: 900px) {\n  .sm-calculator .sm-workspace {\n    grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);\n  }\n}\n@container (max-width: 639px) {\n  .sm-calculator {\n    padding: 16px;\n  }\n  .sm-calculator .sm-panel,\n  .sm-calculator .sm-chart-card,\n  .sm-calculator .sm-table-card,\n  .sm-calculator .sm-education {\n    padding: 16px;\n  }\n  .sm-calculator .sm-field-grid {\n    grid-template-columns: 1fr;\n  }\n  .sm-calculator .sm-result-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n  .sm-calculator .sm-line-chart {\n    min-height: 280px;\n  }\n  .sm-calculator .sm-legend-row {\n    grid-template-columns: 14px minmax(0, 1fr) auto;\n  }\n  .sm-calculator .sm-legend-percent {\n    grid-column: 2 \/ -1;\n  }\n}\n@container (max-width: 379px) {\n  .sm-calculator .sm-result-grid {\n    grid-template-columns: 1fr;\n  }\n  .sm-calculator .sm-button {\n    width: 100%;\n    justify-content: center;\n  }\n  .sm-calculator .sm-pill {\n    width: 100%;\n    justify-content: space-between;\n  }\n}\n@media (prefers-reduced-motion: reduce) {\n  .sm-calculator .sm-button {\n    transition: none;\n  }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"sm-calculator\" data-calculator-root\u003e\n  \u003cheader class=\"sm-header\"\u003e\n    \u003ch2\u003eSaaS Lifetime Value Calculator\u003c\/h2\u003e\n    \u003cp class=\"sm-lede\"\u003eEstimate gross-margin-adjusted customer lifetime value from monthly ARPA, churn, and account expansion, then inspect the value build-up over the expected customer lifetime.\u003c\/p\u003e\n    \u003cdiv class=\"sm-pills\" aria-label=\"Live SaaS metric summary\"\u003e\n      \u003cspan class=\"sm-pill\"\u003eLTV \u003cstrong data-sm-pill-ltv\u003e$4,062.50\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"sm-pill\"\u003eLifetime \u003cstrong data-sm-pill-life\u003e25.00 mo\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"sm-pill\"\u003eARPA \u003cstrong data-sm-pill-arpa\u003e$250.00\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"sm-pill\"\u003eGross profit\/mo \u003cstrong data-sm-pill-profit\u003e$162.50\u003c\/strong\u003e\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/header\u003e\n\n  \u003cdiv class=\"sm-toolbar\" aria-label=\"Calculator actions\"\u003e\n    \u003cbutton class=\"sm-button sm-download\" type=\"button\" data-sm-download\u003e\n      \u003csvg class=\"sm-download-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath fill=\"currentColor\" d=\"M11 3h2v10.17l3.59-3.58L18 11l-6 6-6-6 1.41-1.41L11 13.17V3ZM5 19h14v2H5v-2Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cspan\u003eDownload Excel\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cbutton class=\"sm-button sm-reset\" type=\"button\" data-sm-reset\u003eReset\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"sm-workspace\"\u003e\n    \u003csection class=\"sm-panel sm-inputs\" aria-labelledby=\"sm-inputs-title\"\u003e\n      \u003ch3 class=\"sm-section-title\" id=\"sm-inputs-title\"\u003eOperating assumptions\u003c\/h3\u003e\n      \u003cp class=\"sm-section-subtitle\"\u003eAll values are monthly. Results update as you type.\u003c\/p\u003e\n\n      \u003cdiv class=\"sm-mode-row\"\u003e\n        \u003cinput type=\"checkbox\" id=\"sm-derive-arpa\" data-sm-derive\u003e\n        \u003cdiv class=\"sm-mode-copy\"\u003e\n          \u003clabel for=\"sm-derive-arpa\"\u003eDerive ARPA from MRR and customer count\u003c\/label\u003e\n          \u003cspan\u003eUse this when your subscription mix makes a direct average difficult to estimate.\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sm-direct-field\" data-sm-direct-field\u003e\n        \u003cdiv class=\"sm-field\"\u003e\n          \u003clabel class=\"sm-label\" for=\"sm-arpa\"\u003eAverage revenue per account (ARPA)\u003c\/label\u003e\n          \u003cinput class=\"sm-input\" id=\"sm-arpa\" data-sm-input=\"arpa\" data-sm-mask=\"currency\" type=\"text\" inputmode=\"decimal\" value=\"$250.00\" autocomplete=\"off\"\u003e\n          \u003cp class=\"sm-help\"\u003eAverage recurring revenue earned from one active account each month.\u003c\/p\u003e\n          \u003cp class=\"sm-error\" id=\"sm-arpa-error\" data-sm-error=\"arpa\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sm-derived-fields\" data-sm-derived-fields hidden\u003e\n        \u003cdiv class=\"sm-field-grid\"\u003e\n          \u003cdiv class=\"sm-field\"\u003e\n            \u003clabel class=\"sm-label\" for=\"sm-mrr\"\u003eMonthly recurring revenue (MRR)\u003c\/label\u003e\n            \u003cinput class=\"sm-input\" id=\"sm-mrr\" data-sm-input=\"mrr\" data-sm-mask=\"currency\" type=\"text\" inputmode=\"decimal\" value=\"$6,250.00\" autocomplete=\"off\"\u003e\n            \u003cp class=\"sm-help\"\u003eTotal recurring subscription revenue for the current month.\u003c\/p\u003e\n            \u003cp class=\"sm-error\" id=\"sm-mrr-error\" data-sm-error=\"mrr\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"sm-field\"\u003e\n            \u003clabel class=\"sm-label\" for=\"sm-customers\"\u003eActive customer accounts\u003c\/label\u003e\n            \u003cinput class=\"sm-input\" id=\"sm-customers\" data-sm-input=\"customers\" data-sm-mask=\"number\" type=\"text\" inputmode=\"decimal\" value=\"25\" autocomplete=\"off\"\u003e\n            \u003cp class=\"sm-help\"\u003eUse accounts, not seats, unless each seat is billed as a separate account.\u003c\/p\u003e\n            \u003cp class=\"sm-error\" id=\"sm-customers-error\" data-sm-error=\"customers\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sm-field-grid\"\u003e\n        \u003cdiv class=\"sm-field\"\u003e\n          \u003clabel class=\"sm-label\" for=\"sm-margin\"\u003eGross margin\u003c\/label\u003e\n          \u003cinput class=\"sm-input\" id=\"sm-margin\" data-sm-input=\"margin\" data-sm-mask=\"percent\" type=\"text\" inputmode=\"decimal\" value=\"65.00%\" autocomplete=\"off\"\u003e\n          \u003cp class=\"sm-help\"\u003eRevenue left after direct service-delivery costs. Enter 100% for revenue-only LTV.\u003c\/p\u003e\n          \u003cp class=\"sm-error\" id=\"sm-margin-error\" data-sm-error=\"margin\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"sm-field\"\u003e\n          \u003clabel class=\"sm-label\" for=\"sm-churn\"\u003eMonthly customer churn\u003c\/label\u003e\n          \u003cinput class=\"sm-input\" id=\"sm-churn\" data-sm-input=\"churn\" data-sm-mask=\"percent\" type=\"text\" inputmode=\"decimal\" value=\"4.00%\" autocomplete=\"off\"\u003e\n          \u003cp class=\"sm-help\"\u003ePercentage of customer accounts expected to cancel in a typical month.\u003c\/p\u003e\n          \u003cp class=\"sm-error\" id=\"sm-churn-error\" data-sm-error=\"churn\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"sm-field\"\u003e\n          \u003clabel class=\"sm-label\" for=\"sm-expansion\"\u003eMonthly account expansion\u003c\/label\u003e\n          \u003cinput class=\"sm-input\" id=\"sm-expansion\" data-sm-input=\"expansion\" data-sm-mask=\"currency\" type=\"text\" inputmode=\"decimal\" value=\"$0.00\" autocomplete=\"off\"\u003e\n          \u003cp class=\"sm-help\"\u003eFixed additional monthly ARPA from upgrades, add-ons, or usage growth.\u003c\/p\u003e\n          \u003cp class=\"sm-error\" id=\"sm-expansion-error\" data-sm-error=\"expansion\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"sm-panel sm-results\" aria-labelledby=\"sm-results-title\"\u003e\n      \u003ch3 class=\"sm-section-title\" id=\"sm-results-title\"\u003eLive results\u003c\/h3\u003e\n      \u003cdiv class=\"sm-primary-result\"\u003e\n        \u003cp class=\"sm-primary-label\"\u003eCustomer lifetime value\u003c\/p\u003e\n        \u003cp class=\"sm-primary-value\" data-sm-ltv\u003e$4,062.50\u003c\/p\u003e\n        \u003cp class=\"sm-primary-context\" data-sm-live aria-live=\"polite\"\u003eEstimated gross-profit value per account over 25.00 months.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"sm-result-grid\"\u003e\n        \u003cdiv class=\"sm-result-card\"\u003e\n\u003cspan\u003eCalculated ARPA\u003c\/span\u003e\u003cstrong data-sm-arpa\u003e$250.00\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"sm-result-card\"\u003e\n\u003cspan\u003eExpected lifetime\u003c\/span\u003e\u003cstrong data-sm-lifetime\u003e25.00 mo\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"sm-result-card\"\u003e\n\u003cspan\u003eRevenue LTV\u003c\/span\u003e\u003cstrong data-sm-revenue-ltv\u003e$6,250.00\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"sm-result-card\"\u003e\n\u003cspan\u003eGross profit \/ month\u003c\/span\u003e\u003cstrong data-sm-monthly-profit\u003e$162.50\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"sm-result-card\"\u003e\n\u003cspan\u003eBase subscription value\u003c\/span\u003e\u003cstrong data-sm-base-value\u003e$4,062.50\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"sm-result-card\"\u003e\n\u003cspan\u003eExpansion value\u003c\/span\u003e\u003cstrong data-sm-expansion-value\u003e$0.00\u003c\/strong\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"sm-formula\" data-sm-formula\u003eModel: lifetime = 1 ÷ monthly churn; LTV = gross margin × [ARPA × lifetime + expansion × lifetime × (lifetime − 1) ÷ 2].\u003c\/p\u003e\n    \u003c\/section\u003e\n  \u003c\/div\u003e\n\n  \u003csection class=\"sm-breakdown\" aria-labelledby=\"sm-breakdown-title\"\u003e\n    \u003cdiv class=\"sm-chart-card\" data-sm-chart-card=\"breakdown\"\u003e\n      \u003ch3 class=\"sm-section-title\" id=\"sm-breakdown-title\"\u003eLTV contribution breakdown\u003c\/h3\u003e\n      \u003cp class=\"sm-section-subtitle\"\u003eHow base subscription revenue and account expansion contribute to gross-margin-adjusted LTV.\u003c\/p\u003e\n      \u003cdiv data-sm-breakdown-content\u003e\u003c\/div\u003e\n      \u003cdiv class=\"sm-callout\" data-sm-breakdown-caption\u003eAt the current assumptions, the entire LTV comes from the starting subscription run rate.\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"sm-chart\" aria-labelledby=\"sm-chart-title\"\u003e\n    \u003cdiv class=\"sm-chart-card\" data-sm-chart-card=\"projection\"\u003e\n      \u003ch3 class=\"sm-section-title\" id=\"sm-chart-title\"\u003eLifetime value build-up\u003c\/h3\u003e\n      \u003cp class=\"sm-section-subtitle\"\u003eCumulative customer revenue compared with cumulative gross-profit value across the modeled lifetime.\u003c\/p\u003e\n      \u003cdiv class=\"sm-chart-layout\"\u003e\n        \u003cdiv class=\"sm-plot-wrap\" data-sm-plot\u003e\u003c\/div\u003e\n        \u003cdiv class=\"sm-chart-legend\" data-sm-chart-legend\u003e\u003c\/div\u003e\n        \u003cdiv class=\"sm-chart-summary\" data-sm-chart-summary\u003e\u003c\/div\u003e\n        \u003cdiv class=\"sm-callout\" data-sm-chart-caption\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"sm-table\" aria-labelledby=\"sm-table-title\"\u003e\n    \u003cdiv class=\"sm-table-card\" data-sm-table-card\u003e\n      \u003ch3 class=\"sm-section-title\" id=\"sm-table-title\"\u003eLifetime checkpoints\u003c\/h3\u003e\n      \u003cp class=\"sm-section-subtitle\"\u003eA compact projection that cross-foots to the headline revenue LTV and customer LTV.\u003c\/p\u003e\n      \u003cdiv class=\"sm-table-wrap\" data-sm-table-wrap\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\n            \u003ctr\u003e\n              \u003cth scope=\"col\"\u003eCheckpoint\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eElapsed months\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eARPA at point\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eCumulative revenue\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eCumulative gross-profit value\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eShare of final LTV\u003c\/th\u003e\n            \u003c\/tr\u003e\n          \u003c\/thead\u003e\n          \u003ctbody data-sm-table-body\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"sm-table-note\" data-sm-table-note\u003eCheckpoint values use the same arithmetic-growth model as the headline result. The final row equals the displayed totals.\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"sm-education\" aria-labelledby=\"sm-education-title\"\u003e\n    \u003ch2 id=\"sm-education-title\"\u003eWhat this SaaS LTV calculator estimates\u003c\/h2\u003e\n    \u003cp\u003eThis calculator estimates the gross-margin-adjusted lifetime value of one SaaS customer account. It starts with monthly average revenue per account, estimates an average customer lifetime from monthly churn, allows a fixed dollar amount of account expansion each month, and then applies gross margin. The result is a planning metric: the amount of gross profit an average account may contribute before it churns under a stable, simplified set of assumptions.\u003c\/p\u003e\n    \u003cp\u003eLTV is most useful as a unit-economics measure rather than a standalone target. It can help frame acquisition budgets, customer-success investment, pricing changes, and retention priorities. It is not a cash-flow forecast, valuation, or guarantee of realized customer behavior. For broader background, review the \u003ca href=\"https:\/\/stripe.com\/resources\/more\/saas-metrics\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eSaaS metrics overview from Stripe\u003c\/a\u003e and the \u003ca href=\"https:\/\/www.investopedia.com\/terms\/c\/customerlifetimevalue.asp\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ecustomer lifetime value explanation at Investopedia\u003c\/a\u003e.\u003c\/p\u003e\n\n    \u003ch2\u003eHow should each input be used?\u003c\/h2\u003e\n    \u003ch3\u003eAverage revenue per account (ARPA)\u003c\/h3\u003e\n    \u003cp\u003eARPA is the recurring revenue earned from one active customer account in one month. Enter the average amount before applying gross margin. Use a recent representative period and keep billing cadence consistent: this calculator assumes both ARPA and churn are monthly. A higher ARPA increases both revenue LTV and gross-profit LTV in direct proportion. Common mistakes include mixing annual contract value with monthly churn, using booked contract value instead of recognized recurring revenue, or averaging seats when the customer account is the actual billing unit.\u003c\/p\u003e\n\n    \u003ch3\u003eDerive ARPA from MRR and customer count\u003c\/h3\u003e\n    \u003cp\u003eEnable the derivation option when your business has several plans or usage tiers and a direct average is not readily available. Monthly recurring revenue should include recurring subscription components for the selected month and exclude one-time implementation fees, taxes, and pass-through charges. Active customer accounts should use the same period-end or average-period definition used for MRR. The calculator divides MRR by active accounts. Both fields are required in derived mode, and customer count must be above zero.\u003c\/p\u003e\n\n    \u003ch3\u003eGross margin\u003c\/h3\u003e\n    \u003cp\u003eGross margin is the share of revenue remaining after direct costs of delivering the service. SaaS cost of revenue may include hosting, third-party infrastructure tied to usage, support labor classified as cost of revenue, payment processing, and other direct service expenses. Enter 100% to view revenue-based LTV without a cost adjustment. A lower margin reduces customer LTV but does not change expected lifetime or revenue LTV. Use a consistent accounting definition and avoid substituting operating margin, which includes sales, marketing, research, and general overhead.\u003c\/p\u003e\n\n    \u003ch3\u003eMonthly customer churn\u003c\/h3\u003e\n    \u003cp\u003eCustomer churn is the percentage of accounts lost during a month relative to the relevant opening customer base. It is the most sensitive input because expected lifetime is calculated as one divided by the monthly churn rate. At 4% monthly churn, expected lifetime is 25 months; at 2%, it becomes 50 months. A zero churn rate would imply an unbounded lifetime in this simplified model, so the calculator requires churn above zero. For definitions and measurement cautions, see Investopedia’s \u003ca href=\"https:\/\/www.investopedia.com\/terms\/c\/churnrate.asp\" target=\"_blank\" rel=\"noopener noreferrer\"\u003echurn-rate guide\u003c\/a\u003e.\u003c\/p\u003e\n\n    \u003ch3\u003eMonthly account expansion\u003c\/h3\u003e\n    \u003cp\u003eExpansion is a fixed dollar increase in ARPA for each successive month, representing upgrades, add-ons, additional seats, or usage growth. Enter zero when you want a flat-ARPA model. Higher expansion increases value more strongly when churn is low because the customer remains long enough for repeated monthly increases to accumulate. This input is intentionally a dollar amount rather than a percentage; convert percentage-based expansion into an approximate monthly dollar increase before entering it. Do not enter company-wide expansion MRR here.\u003c\/p\u003e\n\n    \u003ch2\u003eHow are the results calculated and interpreted?\u003c\/h2\u003e\n    \u003cp\u003eExpected lifetime is the reciprocal of monthly churn expressed as a decimal. Revenue LTV begins with ARPA multiplied by expected lifetime. If expansion is present, the model adds an arithmetic series: the first month uses starting ARPA, each later month adds the fixed expansion amount, and the series runs across the expected lifetime. Gross-profit LTV applies the gross-margin percentage to that revenue total.\u003c\/p\u003e\n    \u003cp\u003eThe primary customer lifetime value is the gross-profit result. Revenue LTV shows the same modeled customer revenue before direct service costs. Gross profit per month is starting ARPA multiplied by gross margin; it is a starting-period contribution measure, not an average over the full lifetime when expansion is positive. Base subscription value isolates the contribution from starting ARPA. Expansion value isolates the incremental contribution from the monthly expansion assumption. These two components always sum to the displayed customer LTV.\u003c\/p\u003e\n    \u003cp\u003eThe contribution breakdown uses the same values as the result cards. When expansion is zero, the chart clearly identifies base subscription value as 100%. When expansion is positive, the chart shows how much of final LTV depends on future upgrades or usage growth. A large expansion share can be economically attractive but also signals greater forecast risk because more of the value depends on behavior that occurs after acquisition.\u003c\/p\u003e\n\n    \u003ch2\u003eHow should the chart and table be read?\u003c\/h2\u003e\n    \u003cp\u003eThe line chart plots cumulative revenue value and cumulative gross-profit value from the start through the expected lifetime. The gap between the two lines reflects direct cost of revenue. At 100% gross margin the lines overlap. If expansion is positive, both curves bend upward because later months carry higher ARPA. The checkpoint table exposes the exact values behind the chart, including elapsed months, estimated ARPA at each point, cumulative revenue, cumulative gross-profit value, and the share of final LTV reached.\u003c\/p\u003e\n    \u003cp\u003eThe final table row should match the headline totals. Intermediate rows are planning checkpoints, not a customer survival schedule. Real cohorts usually show uneven churn, onboarding effects, contract renewals, downgrades, reactivations, and expansion patterns. For operating decisions, compare this simplified estimate with cohort-based retention and realized gross-margin data.\u003c\/p\u003e\n\n    \u003ch2\u003ePractical benefits, tradeoffs, and common mistakes\u003c\/h2\u003e\n    \u003cul\u003e\n      \u003cli\u003eUse consistent periods. Monthly ARPA requires monthly churn; annualizing only one side can materially overstate or understate LTV.\u003c\/li\u003e\n      \u003cli\u003eUse customer churn rather than revenue churn unless you intentionally build a revenue-retention model. The two metrics answer different questions.\u003c\/li\u003e\n      \u003cli\u003eApply gross margin when evaluating acquisition economics. Revenue LTV can overstate the amount available to recover sales and marketing costs.\u003c\/li\u003e\n      \u003cli\u003eStress-test churn before expansion. Small churn changes can produce large lifetime changes, especially at already-low churn rates.\u003c\/li\u003e\n      \u003cli\u003eDo not treat LTV as immediate cash. Billing terms, collections, refunds, and working capital affect when value becomes cash.\u003c\/li\u003e\n    \u003c\/ul\u003e\n    \u003cp\u003eUse the exported workbook to document assumptions and compare scenarios. Revisit the inputs as customer mix, pricing, infrastructure cost, and retention change. The U.S. Small Business Administration’s \u003ca href=\"https:\/\/www.sba.gov\/business-guide\/manage-your-business\/manage-your-finances\" target=\"_blank\" rel=\"noopener noreferrer\"\u003efinancial-management guidance\u003c\/a\u003e provides additional context for maintaining current operating records and forecasts. This calculator provides general educational analysis and not individualized financial, tax, legal, or investment advice.\u003c\/p\u003e\n  \u003c\/section\u003e\n\u003c\/div\u003e","brand":"FinancialModelsLab","offers":[{"title":"Default Title","offer_id":49909480849651,"sku":"saas-metrics","price":0.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0522\/6191\/2762\/files\/saas-metrics.webp?v=1783935379","url":"https:\/\/financialmodelslab.com\/products\/saas-metrics","provider":"Financial Models Lab","version":"1.0","type":"link"}