EnableYourData.com

KPI · Subscriptions and SaaS

CAC payback period: formula and example.

CAC payback period is the number of months it takes for a new customer's gross margin to cover the cost of acquiring them. You divide CAC by the monthly gross margin per customer. The shorter the CAC payback period, the less cash you need to grow.

CAC payback period formula

CAC ÷ (ARPA × gross margin %)

Worked example

At Acme's subscription service, acquiring a customer costs €950 on average. A new customer pays €95 a month at an 80% gross margin, so €76 a month. CAC payback period is €950 ÷ €76 = 12.5 months.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A shorter payback period means your acquisition spend comes back sooner and you can grow with less cash. Compare it with how long customers stay on average: if they leave before they have paid back, you lose money on every new customer. Look at it by channel and segment, as larger customers often have a higher CAC but also a higher ARPA.

Pitfalls with CAC payback period

  • Using revenue instead of gross margin, which makes payback look shorter.
  • Using the ARPA of the whole customer base instead of new customers.
  • Ignoring early churn; customers who cancel early never pay back their CAC.

SQL & DAX

Calculating CAC payback period 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),
new_customers AS (
  SELECT COUNT(DISTINCT customer_id) AS n, SUM(mrr) AS new_mrr
  FROM subscriptions
  WHERE started_at >= date_trunc('month', current_date) - interval '12 months'
    AND started_at < date_trunc('month', current_date)
),
spend AS (
  SELECT SUM(amount) AS acquisition_cost
  FROM marketing_costs
  WHERE month >= date_trunc('month', current_date) - interval '12 months'
    AND month < date_trunc('month', current_date)
)
SELECT ROUND(s.acquisition_cost / NULLIF(n.n, 0), 0) AS cac,
       ROUND(n.new_mrr / NULLIF(n.n, 0), 2) AS arpa_new,
       ROUND(s.acquisition_cost / NULLIF(n.new_mrr * p.gross_margin, 0), 1) AS payback_months
FROM new_customers n, spend s, params p;
DAX · Power BI
CAC =
DIVIDE(SUM(MarketingCosts[amount]), [New Customers])

CAC Payback (months) =
DIVIDE([CAC], [ARPA] * [Gross Margin %])

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for CAC payback period 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 CAC payback period?

Divide the average acquisition cost per new customer by the monthly gross margin that customer generates. With CAC of €600 and €50 of gross margin a month, payback is 12 months. Use the ARPA of new customers, not the whole base.

What is a good CAC payback period?

It depends on how long customers stay, your cash position and your contract terms; there is no fixed good number. Payback should in any case be well below average customer lifetime. Businesses with annual contracts paid upfront can carry a longer payback than those on monthly plans.

What is the difference between CAC payback and LTV:CAC?

Payback period tells you how quickly you recover acquisition costs; LTV:CAC tells you how many times you recover them in the end. The first is about cash, the second about return. You need both to assess acquisition.

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.