LTV to CAC ratio: how to calculate it honestly
CAC and LTV formulas for ecommerce, services and SaaS, paid vs fully loaded CAC, margin-based LTV, CAC payback in months, and why the 3:1 rule shouldn't be read literally.

LTV:CAC is probably the most quoted ratio in growth conversations, and also one of the most often botched. CAC gets counted on ad spend alone, while LTV gets counted in revenue over a "lifetime" a young company hasn't lived yet. Here's how to calculate both so you can actually rely on them.
CAC: customer acquisition cost
CAC = acquisition spend in the period / new customers in the period
What goes into the spend:
| Item | Paid CAC | Fully loaded CAC |
|---|---|---|
| Ad platforms | ✓ | ✓ |
| Marketplace/affiliate commissions on new customers | ✓ | ✓ |
| First-order discount | ✓ | |
| Agency and freelancer fees | ✓ | |
| Creative production | ✓ | |
| Marketing salaries, tools | ✓ |
You need both. Paid CAC is for optimising channels, fully loaded CAC is for understanding the business. Just don't mix them between reports.
Two more traps:
- count new customers only, because repeat purchases have nothing to do with CAC;
- lag: this month's ads partly bring in next month's customers, so CAC over short windows is noisy.
LTV: customer lifetime value
For repeat-purchase businesses, it's more practical to use LTV over a fixed horizon (6 or 12 months) than "lifetime", and to measure it in gross profit, not revenue:
LTV₁₂ = total gross profit from a cohort over 12 months / customers in the cohort
This comes straight out of cohort analysis as cumulative profit per customer by month.
The subscription formula (SaaS)
LTV = ARPA × gross margin / monthly churn
Take ARPA $50, 80% margin and 4% monthly churn: LTV = 50 × 0.8 / 0.04 = $1,000. The formula is very sensitive to churn (at 2%, LTV doubles), so on small volumes trust actual cohorts more than the formula.
CAC payback
Payback (months) = CAC / average monthly gross profit per customer
The more precise version: the month in which a cohort's cumulative LTV crosses CAC. For a cash-constrained business, payback matters more than the ratio. An LTV:CAC of 4 with a 30-month payback can sink a company through cash flow.
A worked example
Illustrative store data, March cohort.
| Month | Cumulative gross profit per customer |
|---|---|
| M0 | $14.50 |
| M1 | $17.00 |
| M3 | $21.00 |
| M6 | $25.50 |
| M12 | $32.00 |
Paid CAC was $19 and fully loaded CAC was $23.
- Paid CAC pays back in month 3, fully loaded CAC in month 6.
- LTV₁₂:CAC is 1.7 on paid CAC and 1.4 on fully loaded.
So the business does pay back its customers, just slowly. The levers are repeat frequency (email, assortment) and CAC in the most expensive channels.
By channel
| Channel | CAC | LTV₁₂ | LTV₁₂:CAC | Payback |
|---|---|---|---|---|
| Search | $15 | $35 | 2.3 | 2 mo |
| Meta | $21 | $31 | 1.5 | 5 mo |
| Influencers | $26 | $24 | 0.9 | not yet |
Illustrative. This table is the main thing to bring to a budget conversation. Attribution gives you the channel split, and the unit economics guide gives the wider context.
About the 3:1 rule
3:1 is often quoted as healthy for SaaS. Treat it as a reference point, not a target:
- it says nothing about how fast you pay back;
- it depends entirely on how CAC and LTV were calculated;
- companies in growth mode deliberately run lower when they have cash and confidence in retention;
- a very high ratio can mean you're under-investing in growth.
What to show on the dashboard
- paid and fully loaded CAC side by side, by month;
- LTV₆ and LTV₁₂ by cohort;
- a cumulative LTV chart with a CAC line;
- a channel table with ratio and payback;
- a note on what's included in CAC.
Checklist
- Paid vs fully loaded CAC components are defined
- CAC counts new customers only
- LTV is in gross profit over a fixed horizon
- Payback is tracked in months
- Results are split by first channel
- Refreshed monthly
Step by step: computing LTV from your own orders
Formulas like "AOV × purchase frequency × lifespan" are fine on a whiteboard, but they hide the shape of real retention. A sounder approach for stores and services is cohort-based:
- Group customers by the month of their first order (see cohort analysis).
- Sum contribution margin, not revenue, per cohort for each month since the first order.
- Divide by cohort size to get cumulative margin per customer at month 1, 3, 6, 12.
- Pick the horizon you actually manage to. Most small businesses use 6 or 12 months, not "lifetime".
- Use mature cohorts only. A cohort needs to be at least as old as the horizon you report.
WITH first AS (
SELECT customer_id, MIN(order_date) AS first_date,
ANY_VALUE(first_channel) AS channel
FROM clean.orders WHERE status = 'paid' GROUP BY 1
)
SELECT f.channel,
COUNT(DISTINCT f.customer_id) AS customers,
SUM(IF(DATE_DIFF(o.order_date, f.first_date, DAY) < 180, o.contribution_margin, 0))
/ COUNT(DISTINCT f.customer_id) AS ltv_180d_margin
FROM first f
JOIN clean.orders o USING (customer_id)
WHERE o.status = 'paid'
AND f.first_date < DATE_SUB(CURRENT_DATE(), INTERVAL 180 DAY) -- mature cohorts only
GROUP BY 1
ORDER BY ltv_180d_margin DESC;
Worked example: LTV:CAC and payback by channel
Illustrative results from a store, 180-day horizon, margin-based LTV:
| Channel | CAC | 180-day margin LTV | LTV:CAC | Months to pay back CAC |
|---|---|---|---|---|
| Google Search (non-brand) | 320 | 610 | 1.9 | ~2 |
| Meta prospecting | 260 | 340 | 1.3 | ~5 |
| TikTok | 210 | 190 | 0.9 | not within 6 months |
| Influencers | 450 | 720 | 1.6 | ~4 |
Reading it: TikTok has the cheapest CAC and is the only channel that doesn't recover it within the horizon. Influencers look expensive per customer but bring the most valuable ones. If budget moves only on CAC, it moves in exactly the wrong direction.
How payback is read: cumulative margin per customer crosses CAC at that month. For Meta: margin per customer reaches about 130 in month 1, 210 by month 3 and 260 by month 5, so payback is about 5 months.
SaaS version
For subscriptions, the common formulas are:
- CAC payback (months) = CAC / (ARPA × gross margin %)
- LTV ≈ ARPA × gross margin % / monthly revenue churn
Illustrative: ARPA 40, gross margin 80%, monthly revenue churn 3%. LTV ≈ 40 × 0.8 / 0.03 ≈ 1,067. With CAC 400, payback = 400 / 32 = 12.5 months and LTV:CAC ≈ 2.7. The churn-based formula assumes churn is constant, which it rarely is (early churn is usually higher), so cross-check it against cohort data once you have a year of history. More in SaaS metrics.
Common mistakes
| Mistake | Effect | Fix |
|---|---|---|
| Revenue-based LTV vs CAC | overstates profitability by the margin factor | use contribution margin |
| Including immature cohorts | LTV looks lower and lower for recent months | only cohorts older than the horizon |
| Blended CAC across channels | hides loss-making channels | CAC per first-order channel |
| CAC from platform conversions | double-counted customers | new customers from the backend |
| Organic and repeat customers in CAC denominator | CAC looks cheap | paid new customers only, with organic shown separately |
| Lifetime LTV with 6 months of data | guesswork dressed up as a number | report the horizon you can observe |
Updating the numbers
LTV and CAC aren't one-off calculations. Recompute them monthly from the same queries, and watch the trend per channel rather than the latest value. When a channel's LTV:CAC drifts down for three months in a row, act before it crosses 1. Also recompute after any change to pricing, shipping policy or product mix, because each shifts margin per order and therefore LTV.
FAQ
Which LTV horizon should I use?
Whatever horizon the business can afford to wait for payback. For most stores that's 6 and 12 months. For SaaS, use actual cohorts plus the formula as a sanity check.
How do I handle organic customers?
Track blended CAC (all new customers) and paid CAC (paid channels only). Organic lowers blended CAC but doesn't make your ads any better.
Should refunds reduce LTV?
Yes. LTV should be net of refunds and cancellations, or it's inflated.
How often should I recalculate?
Monthly is enough. Daily CAC is only useful as an operational check on spend.


