Chart · LTV

Realized LTV per customer for subscription apps: how to calculate it

Realized LTV per customer is the revenue a period's new customers paid within a set window after they joined, divided by all those new customers, including the ones who never paid. RevenueDot subtracts refunds recorded in the window. You pick the window: day 0, 7, 14, 30, 60, 90, 180 or 365 days, or unbounded.

Formula

Realized LTV per customer = revenue from the period's new customers in their first N days, minus refunds in that window ÷ new customers in the period

Shape

A series by cohort date; recent cohorts are still maturing

API name

ltv_per_customer

Measures

Realized LTV per Customer (USD)

Filter and segment by

App, Store, Product, Product duration, Offering, Country, Platform, App version

The Realized LTV per Customer chart in the RevenueDot dashboard, with demo data, its chart rail, plot and table
Captured from the RevenueDot dashboard with demo data.

Definition

How RevenueDot calculates Realized LTV per Customer

Each customer belongs to the period that holds their cohort date, the earlier of when they were first seen and their first transaction, and aliases of one customer count once. The window runs from the start of that UTC day through day N, so day 0 is the cohort day and a 30-day window covers day 0 through day 30. The customer_lifetime selector sets N and defaults to 30 days.

Revenue is purchases, renewals and one-time purchases inside the window, minus refunds recorded inside it, in US dollars at the purchase-date rate. Free trials carry no money. Ad revenue is not included, and sandbox purchases, granted access and Family Sharing purchases are excluded. The denominator is all new customers in the period, paying or not. The table also lists Revenue and New Customers, which are not plotted.

The number is realized, so it counts money already received and does not project the rest. A period stays incomplete until every customer's window has passed, so the newest points are understated. A product, store or offering filter narrows the revenue but not the count of new customers. You can also filter or segment by app, country, platform and app version, at day, week or month resolution.

Find it in the dashboard under Analytics > Charts, or call GET /v2/projects/{project_id}/charts/ltv_per_customer with selectors such as {"customer_lifetime":"90_days"}. The response has the same shape as RevenueCat's Charts API.

Worked example

Realized LTV per Customer, step by step

Illustrative numbers for one cohort and a 30-day window.

ItemValue
New customers in the cohort1,000
Purchases and renewals, day 0 to day 30$4,200
Refunds recorded in that window−$200
Revenue in the window$4,000

Realized LTV per customer (30 days) = $4,000 ÷ 1,000 = $4.00.

Why it matters

What Realized LTV per Customer tells you

Realized LTV per customer sets the most you can pay to get a customer. If the 90-day value is $3.00, paying $5.00 per install will not pay back inside 90 days. It is the number to hold against your cost per install, channel by channel and country by country.

It also scores changes. A new paywall, price or trial length changes the LTV of the customers who join after it, so compare cohorts before and after on the same window. Use LTV per Paying Customer for what a payer is worth.

How to read it

  • The average includes people who never pay, so it is low. That is the point: it is what one install is worth.
  • Always compare the same window. A 7-day value and a 365-day value are different numbers.
  • The newest cohorts are incomplete. Do not read the last points as a fall in value.
  • A refund reduces the cohort's revenue only when it falls inside the window.
  • It is not a forecast. Use Prediction Explorer to estimate months that have not happened.

API

Get Realized LTV per Customer from the Charts API

Same path and response shape as RevenueCat's Charts API, so existing scripts keep working.

Requestshell
curl "https://api.revenuedot.app/v2/projects/$PROJECT_ID/charts/ltv_per_customer?resolution=day" \
  -H "Authorization: Bearer $SECRET_KEY"   # sk_... with charts_metrics:charts:read

Reference: Charts guide · REST API v2

FAQ

Realized LTV per Customer: questions people ask

How do you calculate LTV for a subscription app?

Add the revenue a group of new customers paid in a fixed window, net of refunds, and divide by the number of customers. RevenueDot calls this realized LTV because it counts only money already received.

What is the difference between realized LTV and predicted LTV?

Realized LTV counts money already paid. Predicted LTV estimates money still to come. RevenueDot's Prediction Explorer shows both for cohorts.

Does LTV include free users?

Yes. Realized LTV per customer divides by all new customers, including those who never paid. LTV per paying customer divides only by customers who paid.

What is the customer lifetime window?

The number of days after a customer's first day over which revenue is counted: day 0, 7, 14, 30, 60, 90, 180, 365 days, or unbounded. The default is 30 days.

Does LTV include ad revenue?

No. It counts purchases, renewals and one-time purchases, minus refunds. Ad revenue is not part of realized LTV in RevenueDot.

Get started

See your Realized LTV per Customer in minutes.

Connect your app to RevenueDot Cloud, free up to $10,000 a month in tracked revenue, and all 43 charts fill from your store history after import.

Already have an account? Sign in · Prefer your own servers? Self-host free