EnableYourData.com

KPI · Subscriptions and SaaS

LTV:CAC ratio: formula and example.

The LTV:CAC ratio is a customer's lifetime value (LTV) divided by the cost of acquiring that customer (CAC). It shows whether your investment in marketing and sales pays for itself. A ratio below 1 means a customer brings in less than they cost to win.

LTV:CAC ratio formula

LTV ÷ CAC, where LTV = ARPA × gross margin % ÷ monthly revenue churn

Worked example

At Acme's subscription service, ARPA is €95 a month, gross margin is 80% and revenue churn averages 2.5% a month. LTV is €95 × 80% ÷ 2.5% = €76 ÷ 0.025 = €3,040. CAC is €950. The LTV:CAC ratio is €3,040 ÷ €950 = 3.2.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A higher ratio means each customer acquired brings in more relative to what they cost. A very high ratio can also mean you are under-investing in growth. Compare the ratio by acquisition channel and customer segment, and read it alongside CAC payback period, as a healthy ratio with a long payback still ties up a lot of cash.

Pitfalls with LTV:CAC ratio

  • Calculating LTV on revenue rather than gross margin, which flatters the ratio.
  • Counting only ad spend in CAC and forgetting marketing and sales salaries.
  • Using low churn from a short history, which makes LTV unrealistically high.

SQL & DAX

Calculating LTV:CAC ratio in SQL and DAX

Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.

SQL · PostgreSQL
WITH params AS (SELECT 0.80 AS gross_margin, 0.025 AS monthly_revenue_churn),
active AS (
  SELECT SUM(mrr) / NULLIF(COUNT(DISTINCT customer_id), 0) AS arpa
  FROM subscriptions
  WHERE started_at <= current_date AND (ended_at IS NULL OR ended_at > current_date)
),
acquisition AS (
  SELECT (SELECT SUM(amount) FROM marketing_costs
          WHERE month >= date_trunc('month', current_date) - interval '12 months')
         / NULLIF(COUNT(DISTINCT customer_id), 0) AS cac
  FROM subscriptions
  WHERE started_at >= date_trunc('month', current_date) - interval '12 months'
)
SELECT ROUND(a.arpa * p.gross_margin / p.monthly_revenue_churn, 0) AS ltv,
       ROUND(c.cac, 0) AS cac,
       ROUND(a.arpa * p.gross_margin / p.monthly_revenue_churn / NULLIF(c.cac, 0), 1) AS ltv_cac_ratio
FROM active a, acquisition c, params p;
DAX · Power BI
LTV =
DIVIDE([ARPA] * [Gross Margin %], [Revenue Churn %])

LTV:CAC Ratio =
DIVIDE([LTV], [CAC])

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for LTV:CAC ratio per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.

Read more →

In your Power BI dashboard

Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.

Read more →

Custom dashboards (pilot)

Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.

Read more →

Monthly targets

With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.

Read more →

FAQ

Frequently asked questions

How do you calculate the LTV:CAC ratio?

First calculate LTV, for example ARPA × gross margin ÷ monthly revenue churn, then divide it by the average acquisition cost per new customer. With LTV of €2,400 and CAC of €800, the ratio is 3. Use the same period and customer group for both.

Which costs belong in CAC?

CAC includes every cost of winning new customers: advertising, marketing tools, events and the salaries of marketing and sales staff insofar as they focus on new business. Divide the total by the number of new customers in the same period. Record what you include so the ratio stays comparable over time.

What is a good LTV:CAC ratio?

A rule of thumb is often quoted, but there is no fixed good value: it depends on your margin, cash position and growth ambitions. What matters more is that the ratio sits comfortably above 1, stays stable per channel and, together with payback period, fits the cash you have.

Use AI on your own data. Securely, and without the headache.

In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.