When a Referral Program Is Quietly a Money Loser
Same mechanics, same viral coefficient, same conversion rate. At $180 LTV the program earns $81.19 per referrer. At $40 LTV it loses $2.81 and looks identical in every dashboard.
Table of contents
Referral programmes are judged by the viral coefficient, and the viral coefficient says nothing about whether the programme makes money.
Two programmes with an identical k of 0.60 can differ by $84 per referrer in net value. The dashboards look the same. Only one of them should exist.
The short answer
A double-sided referral bonus costs you the referrer payout times the probability they convert at least one person, plus the referee payout times the number who convert. Compare that against the lifetime value of the users acquired. At 5 invites, 12% conversion and $25 per side, the programme nets $81.19 per referrer when LTV is $180 and loses $2.81 when LTV is $40. Breakeven bonus at that k and that LTV is $22.38 per side.
The cost structure people get wrong
The instinct is that a double-sided $25 bonus costs $50 per referral. It does not, for two separate reasons pointing in opposite directions.
The referrer bonus is paid once, not per conversion. If they convert three friends, you typically pay them once (or with a cap), so expected referrer cost is $25 times the probability of at least one conversion, not $25 times k.
The referee bonus is paid per conversion. That one scales with k directly.
With 5 invites at 12% conversion, k = 0.60 but the probability of at least one conversion is 1 - 0.88^5 = 0.4723. Those are very different numbers and using k for both overstates referrer cost by 27%.
Three programmes, one set of mechanics
| Scenario | LTV | Bonus per side | Cost per referrer | Value created | Net per referrer |
|---|---|---|---|---|---|
| B2B SaaS | $180 | $25 | $26.81 | $108.00 | +$81.19 |
| Consumer app | $40 | $25 | $26.81 | $24.00 | -$2.81 |
| Consumer app, bonus cut | $40 | $10 | $10.72 | $24.00 | +$13.28 |
Rows one and two have identical mechanics: same invites, same conversion rate, same k of 0.60, same bonus. The only difference is the lifetime value of the user being acquired. One earns $81.19 per referrer and one loses $2.81.
The second programme is the dangerous case, because it is not obviously broken. It generates real referrals, k looks healthy, the growth chart moves. It loses a small amount on every single referrer, forever, and the loss scales with success.
Row three is the same consumer app with the bonus cut from $25 to $10. Value created is unchanged at $24, because the bonus size was never what drove the conversion in this model. Cost falls to $10.72 and the programme turns profitable.
The model
def referral_ev(invites, conv, bonus_each, ltv):
k = invites * conv
p_any = 1 - (1 - conv) ** invites
cost = bonus_each * p_any + bonus_each * k
value = k * ltv
downstream = k / (1 - k) if k < 1 else float("inf")
eff_cac = (cost * (1 + downstream)) / downstream if downstream > 0 else float("inf")
return {
"k": k,
"p_at_least_one": p_any,
"cost_per_referrer": cost,
"value_created": value,
"net_per_referrer": value - cost,
"downstream_users_per_seed": downstream,
"effective_cac": eff_cac,
}
for label, args in [
("B2B SaaS", (5, 0.12, 25, 180)),
("Consumer, $25", (5, 0.12, 25, 40)),
("Consumer, $10", (5, 0.12, 10, 40)),
]:
r = referral_ev(*args)
print(f"\n{label}")
for key, val in r.items():
print(f" {key:26} {val:>10,.4f}")
Output:
B2B SaaS
k 0.6000
p_at_least_one 0.4723
cost_per_referrer 26.8080
value_created 108.0000
net_per_referrer 81.1920
downstream_users_per_seed 1.5000
effective_cac 44.6800
Consumer, $25
k 0.6000
p_at_least_one 0.4723
cost_per_referrer 26.8080
value_created 24.0000
net_per_referrer -2.8080
downstream_users_per_seed 1.5000
effective_cac 44.6800
Consumer, $10
k 0.6000
p_at_least_one 0.4723
cost_per_referrer 10.7232
value_created 24.0000
net_per_referrer 13.2768
downstream_users_per_seed 1.5000
effective_cac 17.8720
The viral loop, and its limit
When k is below 1, each seed user generates k / (1 - k) downstream users through the compounding chain. At k = 0.60 that is 1.50 users per seed, so the loop roughly multiplies your acquisition by 2.5 including the seed.
This is the part that makes referral programmes attractive and it is real. It is also where the arithmetic gets misused. Amplification multiplies cost as well as users. Effective CAC in the consumer case is $44.68 against an LTV of $40, and the loop does not change that ratio, it just applies it to more users. A loop around a negative unit economic is a machine for losing money faster.
At k above 1 the series does not converge and growth is unbounded, which does not happen in practice because k falls as the programme saturates the addressable network. Any model assuming stable k above about 0.7 for an extended period is describing something that has not been observed.
The breakeven bonus
The useful design question is not whether to run a referral programme but what to pay. Set net to zero and solve for the bonus:
bonus = k x LTV / (p_any + k)
At k = 0.60, p_any = 0.4723 and LTV = $40, that is $22.38 per side. Anything above that loses money. The programme was running at $25.
def breakeven_bonus(invites, conv, ltv):
k = invites * conv
p_any = 1 - (1 - conv) ** invites
return k * ltv / (p_any + k)
print(f"${breakeven_bonus(5, 0.12, 40):,.2f}")
Output:
$22.38
What to check in your own programme
Use contribution margin, not revenue, for LTV. Referral models built on revenue LTV are wrong by whatever your gross margin is, which is usually enough to flip the sign.
Discount the LTV. A referred user's value arrives over years and the bonus is paid today. Undiscounted LTV overstates the case, sometimes by 20% or more.
Measure incrementality. Some referred users would have found you anyway, and paying a bonus for them is the same subsidy problem that blanket discounts have. A holdout where referral rewards are suppressed for a random slice gives you the honest number.
Watch k over time rather than at launch. Early adopters refer at rates the general population will not match, and a programme sized on launch-cohort k will be underwater by the time it reaches the mainstream of your user base.
Get the Promo & Bonus Economics Workbook
Every formula for pricing a promo before you launch it: expected value, wagering cost, breakage, breakeven conversion. Worked examples with real executed numbers.
Browse all free guides →Want to implement this with guidance?
Santosh helps founders turn insights like this into real systems.
External Resources
Further Reading & Tools
Investopedia — Financial Engineering
Reference on the field, its three pillars, and its primary applications
CFA Institute — Refresher Readings
Curriculum material on derivatives valuation, probability, and risk measurement
QuantLib
Open-source quantitative finance library, reference for how pricing models are structured
arXiv q-fin
Preprints in quantitative finance covering pricing, risk management, and market microstructure