Product · Retention by vintage

Cohort and LTV by acquisition vintage

How much each vintage of customers pays and how long it stays, comparing only mature vintages and with the same vintage's CAC alongside.

UsageCommon
EffortMedium
ForGrowth, finance and CS teams that need to know what a new customer is worth and whether recent vintages are better or worse than older ones.
Source

Billing, ERP, CRM and paid media

Rule

Vintage at first payment, eligible cells only

Outcome

Retention, LTV and CAC by vintage and month

Activation

Acquisition dashboard, CRM and AI agent

What it solves

  • Each vintage is compared with the others at the same point in its life, so a new vintage does not look bad just for being new.
  • LTV sits next to the CAC of the same vintage, and acquisition spend is judged by both together.
  • This month's cancellations get context: did the customer leave early or after staying the expected time?

Business questions it answers

Ask your agent these questions once the case is live.

Which vintage of the last two years has the best 12-month LTV, comparing only mature vintages?
What percentage of the customers who joined in January are still active 6 months later?
Is this year's vintages' LTV/CAC better or worse than last year's?
Did the customers who cancelled this month leave early or were they already mature?
Which source channel brings customers who stay longer and pay more?

What you need

  • Billing, ERP or sales platform connected to Nekt, with payment history
  • A unique customer key (CNPJ root, CPF or account id)
  • Monthly media spend, if you want CAC per vintage

What you get

  • A customer x month table with vintage, status and recurring revenue
  • A vintage x month matrix with customer retention and cumulative revenue
  • Realized LTV, expected LTV and LTV/CAC per vintage, with a maturity flag
  • An AI agent that answers about vintages without comparing immature ones

Where to activate

Acquisition committee

Vintage x month matrix with LTV and CAC side by side, read by the slope of both and not by CAC alone.

Back to the CRM

Realized LTV, LTV band and reference month written to the company record, so sales and CS can prioritize the book.

AI agent via MCP

Answers about vintages with the maturity rule applied and warns when a comparison is not possible yet.

Ready to build?

The matrix itself is simple. The work is in fixing the vintage date, the customer key and what counts as recurring revenue. The detailed view has the business rules, the pitfalls and the acceptance test. Or send everything straight to your agent with the Nekt MCP.

The problem

The typical cohort sets the vintage by signup date, counts the same customer once per branch or per product, and shows 0% retention in months the vintage has not lived yet. Every new vintage looks worse than the old ones, and average LTV mixes customers with 2 months of life and customers with 3 years. Without the same vintage's CAC alongside, the conversation becomes just "CAC went up".

How it is usually done, and the rule

Each row is a mistake that already happened in practice.

The common wayThe rule
01
Vintage by signup date or billing cycle date.
The vintage is the month of the first confirmed payment

Set the vintage by the entity's first paid charge, not by account, contract or lead creation. Exclude orders still waiting for the first payment and use the plan in force at that first payment. Do not use the billing cycle start date: some billing systems rewrite that date forward when a subscription recovers from a failed charge, which pushes the customer into another vintage.

02
Counting CNPJ plus product, or each branch, as a customer.
The customer is the entity, not the billing line

Define a unique key before building the vintage. For companies, use the 8-digit root of the CNPJ (company tax ID) to merge headquarters and branches; for individuals, the full CPF (individual tax ID). 8 and 11 digits never collide. A customer paying for two products counts once, with the revenue of both. Groups with several CNPJs inflated the active customer count until they were consolidated under the main CNPJ.

03
Dividing by the whole vintage and showing 0% in months not yet reached.
Only those who had time enter the denominator

In month k since entry, the denominator is the vintage's customers who could already have reached k (vintage + k less than or equal to the last closed month). A cell with no eligible customer is NULL, never 0%. A customer is retained at k if the end of their life (today if active; otherwise the earlier of contract end and cancellation date) is after entry + k months.

04
Putting last month's vintage on the same 12m LTV chart as the old ones.
Compare mature vintages only

Flag on each vintage whether the window has closed (for example, ltv_12m_completo true only for vintages 13 months or older). LTV, repeat purchase and LTV/CAC are compared only across vintages with a complete window; customers, spend and CAC are final for any vintage. A sale still inside the refund guarantee (for example, 7 days, or 30 for a product with an extended guarantee) does not enter a mature churn or refund vintage.

05
Averaging the monthly rates.
Ratios are recomputed, never summed

Retention, LTV per customer, LTV/CAC and refund rate are ratios. To roll months into a quarter or year, sum numerators and denominators and divide again (summed 12m revenue / summed spend). Monthly is noisy because small vintages swing; for trends, aggregate by recomputing from the sums.

06
Summing all of a customer's billing as LTV.
Only the product's recurring revenue counts

Event tickets, sponsorship, onboarding fees, commissions and one-off sales go to a separate revenue line, outside cohort, LTV, churn and NRR. Annual and quarterly plans enter spread monthly by accrual period. Refunds leave the vintage's revenue by the sale's accrual date; if the tool has no refund date, the refund counts in the month of the sale.

07
Calling LTV sometimes the cash received, sometimes the projection.
Realized LTV and expected LTV are different numbers

Realized LTV is what the vintage's customers have actually paid to date (cash collected), divided by the vintage's customers. Expected LTV is ARPU times expected lifetime, computed as the sum of the retention curve or as 1 / customer churn. Show both under their own names and, for customers who already left, use mean and median.

08
Customers from every channel and spend from a single media account.
CAC and vintage in the same universe

The vintage's acquisition cost must cover the same channels as the vintage's customers. If marketplaces are excluded from the first sale, exclude them from revenue too. If the online store has its own media account, it goes into the cost: in a real base, the store's customers were in the denominator and its media was not, and the vintages' CAC was wrong until that was fixed.

09
Premature is anyone who left before the average lifetime.
Early churn by a fixed tenure scale

Classify those who left by fixed tenure bands, for example: early below 1 month, premature from 1 to 3 months, mature from 3 on. Comparing tenure against expected lifetime looks elegant, but in a real base it labeled almost every churn as premature and the indicator lost its power to discriminate.

Which date sets the vintage in each model

Always the first time the customer really paid, in the source that records the payment.

Subscription (SaaS, club, app)First paid charge, never the cycle startcharge succeeded, invoice.amount_paid > 0
Digital course with guaranteeSale accrual date, mature only after the guarantee
Education and tuitionFirst paid tuition of the enrollment
Service contract (agency, consulting)Start of the customer's first contract
B2B retail and distributionEntity's first invoiced sale (CNPJ root)
Lending and cash advanceFirst disbursement, with months on book (MoB)

Definitions

Vintage
month of the entity's first confirmed payment, frozen once written
Month since entry (k)
whole months between the vintage and the reference month; k = 0 is the entry month itself
Eligible at k
vintage customers with vintage + k less than or equal to the last closed month
Customer retention at k
vintage customers still active at k / eligible at k; NULL when there is no eligible customer
Cumulative revenue at k
sum of net recurring revenue received from the vintage's customers from month 0 to month k / vintage customers
12m LTV
revenue received within 365 days of the first sale / vintage customers; valid only for vintages 13 months or older
Expected LTV
month's ARPU x expected lifetime in months (sum of the retention curve, or 1 / monthly customer churn)
Vintage CAC
media spend in the vintage month / new customers in the vintage, with the same channel scope
12m LTV/CAC
sum of the vintage's 12m revenue / sum of the vintage's media spend

Pitfalls that already happened

Billing rewrote the activation date

The cycle start date moved forward when a subscription recovered from a failed charge. Activations already earned were undone and customers migrated to later vintages.

Anchor the vintage on the first successful payment transaction and write the date only once.

New vintage with 0% retention

Recent vintages showed 0% in months they had not reached yet, and the chart suggested a drop that did not exist.

Eligible denominator and a NULL cell when nobody has had time to get there.

A premature scale with no power to discriminate

Comparing the tenure of those who left with the expected lifetime (about 13 months) marked almost every churn as premature. The number did not change from one month to the next.

Fixed tenure bands, with expected lifetime only as a reference.

Events inflated LTV

Event tickets and sponsorship came in the same billing category as the monthly fee and were counted as recurring revenue.

Reclassify that revenue into a separate line, outside cohort, LTV and churn.

CAC with media missing

The online store's customers counted in the vintage, but the store's media account was not in the spend. The vintages' CAC was lower than reality for years.

Check that every media account for the vintage's channels is in the spend before comparing.

Mass cancellation erased the end

When an installment contract was cancelled early, the future installments never came to exist in the ERP, not even as cancelled. The last revenue month was wrong.

Use the cancelled installments to find the last revenue month and store each customer's end of life.

Acceptance test

The case is done when every item passes.

Agent package

Paste into Claude, ChatGPT or any client with the Nekt MCP connected.

Full Markdown
Cohort and LTV by vintage
- The vintage is the month of the entity's first confirmed payment. Do not use signup, contract or billing cycle start dates.
- The customer is the entity: CNPJ root (8 digits) for companies, full CPF for individuals. A customer with several products counts once.
- In month k since entry, the denominator is only the customers who have had time to reach k. With no eligible customer, the cell is NULL, never 0%.
- Compare LTV, repeat purchase and LTV/CAC only across vintages with a complete window. Say when a vintage is still immature.
- Retention, LTV per customer and LTV/CAC are ratios: to combine periods, sum the parts and divide again. Never average rates.
- Only the product's recurring revenue counts. Events, sponsorship, onboarding fees and one-off sales stay out.
- Realized LTV is what the vintage has already paid. Expected LTV is ARPU x expected lifetime. Always say which one you are using.
- Vintage CAC uses the same channel scope as the customers and the revenue.
- Early churn follows fixed tenure bands: early below 1 month, premature from 1 to 3, mature from 3 on.
Client exceptions:
- <client>: refund guarantee of <N> days on product <product>; sales within the guarantee do not enter a mature vintage.
- <client>: pipeline <name> excluded from the cohort because it is not a recurring product.

Variations

Repeat purchase in retail

Without a contract, retained at k means bought again within the window; track 12-month repeat rate and orders per vintage.

Lending vintage

Vintage by first disbursement, with revenue, risk and persistence by months on book (MoB).

Funnel cohort

Of the people who entered in a month, how many bought within 7, 30, 60 and 90 days, with the complete window flagged.