Unit Economics That Actually Matter: Calculating True LTV When Your Mobile App Has Both Subscription and IAP Revenue Streams
TL;DR
Most mobile teams calculate a single blended LTV number, then use it to justify acquisition spend. This is dangerous. Subscription revenue and IAP (in-app purchase) revenue have different retention curves, margin profiles, and refund rates. When you lump them together, you inflate LTV by 20-40%, overspend on user acquisition, and wonder why your payback period keeps stretching. What follows is a cohort-based model that separates these streams, applies proper decay functions, and gives you a number you can actually underwrite against.
The problem: one LTV number hiding two businesses
Paul Graham has written about how investors pattern-match on metrics without understanding the underlying mechanics. The same thing happens inside product teams. You pull an “LTV” from your analytics dashboard, divide by CAC, and declare victory if the ratio exceeds 3:1.
But a subscription user and an IAP-heavy user are not the same customer. They retain differently, monetize on different curves, and refund at different rates.
| Metric | Subscription revenue | Consumable IAP revenue |
|---|---|---|
| Revenue pattern | Predictable, recurring | Sporadic, power-law distributed |
| Retention curve shape | Logarithmic decay | Steeper early drop, long tail of whales |
| Typical Month-12 retention | 15-25% | 8-12% (active purchasers) |
| Refund rate | 5-10% (trial abuse) | 2-4% |
| Margin after platform fees | ~52% (after 15-30% store cut) | ~52% (same store cut) |
| Predictability | High | Low, driven by top 1-2% of spenders |
When you blend these into a single LTV, the recurring predictability of subscriptions masks the volatility of IAP. Your high-spending IAP whales pull the average up, making every user look more valuable than they actually are. That’s the real problem.
The model: cohort-based LTV with separated streams
Calculate LTV as the sum of two independent components:
LTV_total = LTV_subscription + LTV_iap
Step 1: subscription LTV
Use a geometric retention model. For a monthly subscription at price P_sub, with month-over-month retention rate r_sub:
LTV_sub = P_sub × (r_sub / (1 - r_sub)) × (1 - refund_rate_sub)
Step 2: IAP LTV
IAP is harder because revenue per user follows a power-law distribution. Use cohort-level ARPU (average revenue per user) decay, not individual retention:
LTV_iap = Σ (ARPU_iap_month_n × survival_rate_month_n) × (1 - refund_rate_iap)
Sum over your observed cohort window (typically 12-18 months), then apply a conservative tail estimate beyond that.
Step 3: blend at the cohort level
LTV_total = LTV_sub + LTV_iap
Never average these across cohorts. Each acquisition channel produces different mixes of subscriber-dominant vs. IAP-dominant users.
Worked example: the 35% inflation trap
Let’s run real numbers. Assume a fitness app with a $9.99/month subscription and consumable workout pack IAPs averaging $4.99.
| Input | Value |
|---|---|
| Monthly subscription price | $9.99 |
| Subscription MoM retention | 72% |
| Subscription refund rate | 7% |
| IAP ARPU Month 1 | $1.20 |
| IAP ARPU decay rate | ~40% MoM |
| IAP refund rate | 3% |
| Cohort size | 1,000 users |
Subscription LTV:
LTV_sub = $9.99 × (0.72 / 0.28) × 0.93 = $9.99 × 2.571 × 0.93 = $23.90
IAP LTV (12-month sum with decay):
| Month | ARPU_iap | Survival | Contribution |
|---|---|---|---|
| 1 | $1.20 | 100% | $1.20 |
| 2 | $0.72 | 68% | $0.49 |
| 3 | $0.43 | 50% | $0.22 |
| 4-12 | Diminishing | Diminishing | $0.41 (cumulative) |
| Total | $2.32 |
After refund adjustment: $2.32 × 0.97 = $2.25
True blended LTV: $23.90 + $2.25 = $26.15
Now, the trap. If you instead calculate a single blended ARPU by dividing total revenue by total users and applying a single retention curve, you’d typically get an LTV around $35-36. The IAP whale spending gets smoothed across the subscriber retention curve, which is longer. That’s a 35% inflation over the real number.
At a $12 CAC, the blended approach tells you the LTV:CAC ratio is 3.0:1. The separated model shows it’s actually 2.2:1. Still viable, but a completely different story for how aggressively you can spend on paid acquisition.
Why this matters for acquisition decisions
The teams that get burned are the ones who use inflated LTV to justify scaling paid channels from $50K/month to $200K/month. The unit economics look fine on the dashboard. Then six months later, the cohort data catches up and the actual payback period is 14 months instead of the projected 8. I’ve watched this happen more than once.
The separation also reveals channel quality. You might find that TikTok campaigns drive IAP-heavy users (short-lived revenue spikes) while organic search drives subscription-dominant users (longer, predictable revenue). Same blended LTV. Wildly different business quality.
What to do with this
Separate your LTV calculation by revenue stream. Subscription and IAP revenue have different retention curves and refund profiles. Calculate each independently, then sum them. Never apply a single retention rate to blended ARPU. This sounds obvious written out, but I still see teams skipping it.
Run this analysis per acquisition channel. The mix of subscriber vs. IAP users varies dramatically by source. A channel that looks profitable on blended metrics may be underwater when you decompose the revenue streams.
Use the conservative number for spend decisions. Blended LTV consistently overstates true value by 20-40%. Set your CAC targets against the separated model, and treat any surplus as margin of safety, not budget to deploy.