← Back to Blog
Quantitative MarketingPromo EconomicsFinancial EngineeringPython

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.

SPSantosh Paudel· July 30, 2026· 9 min read
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

ScenarioLTVBonus per sideCost per referrerValue createdNet 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.

Free resource

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.

No spam. Unsubscribe anytime.

Browse all free guides →

Want to implement this with guidance?

Santosh helps founders turn insights like this into real systems.

Promo Economics Audit

External Resources

Further Reading & Tools

Related Posts

01
9 min
Risk ManagementPromo Economics
TodayQuantitative Marketing

Value at Risk and Kill Switches for Live Promotions

A spend cap set at expected payout shuts down 46% of perfectly healthy campaigns. The right multiple is 1.52x. Sizing exposure limits and automated kill switches against a real payout distribution.

Read article
02
8 min
Incentive DesignBehavioral Economics
TodayQuantitative Marketing

The Line Between Motivating and Manipulating: An Incentive Design Ethics Test

Every mechanic in this series works because of a cognitive bias. That makes them powerful and makes some of them indefensible. A six-question test for which side of the line your design sits on, and what regulators have already acted against.

Read article
03
8 min
Price DiscriminationPricing
TodayQuantitative Marketing

Why Promo Codes Beat Sales: Price Discrimination in Practice

A blanket 20% discount earns $20,000 less than no discount at all. The same discount behind a code that only bargain hunters bother to find earns $64,000 more. The friction is the entire mechanism.

Read article