The arithmetic
Part one of the monetization playbook. These are identities and laws, not opinions — every pricing scheme is a choice of variables inside them, and each holds no matter what you believe.
The trouble is that your intuition runs in straight lines. Show it two months of a number and it draws the third by extending the line — that’s the free extrapolation brains do by default. Almost nothing below is a line. These systems compound, multiply, saturate, and flip at thresholds: a steady change in the input produces an output that lurches, stalls, or changes character entirely. So each law comes with the shape of its curve, because the curve is usually where the trap is.
Written for the default case: one founder, bootstrapped. Where funding or a team flips an answer, a “Not solo?” callout says how.
The vocabulary, once:
- ARPU — average revenue per user: what one customer pays you per month (unless stated otherwise).
- Variable cost / COGS — what serving one more user costs (inference, storage, support); the cost that scales with users, unlike rent or salaries.
- Gross margin (GM) — the fraction of each revenue dollar left after variable cost.
- Churn (c) — the fraction of customers who leave per month.
- LTV — lifetime value: the gross-margin dollars (not revenue) one customer produces across their whole time with you. That time is ~
1/churnmonths, so LTV = ARPU × GM ÷ churn — derived under Lifetime value below. - CAC — customer acquisition cost: total sales-and-marketing spend ÷ new customers won. The numerator includes everything spent chasing people who never bought, so a channel full of tire-kickers shows a high CAC even when the few who converted were individually cheap.
- NRR — net revenue retention: net, not new — this year’s revenue from last year’s customers only (new customers excluded on purpose), after their upgrades, downgrades, and cancellations net out. It isolates one question: does the existing base grow on its own?
- WTP — willingness to pay.
Margin is the only real money
margin per user = ARPU − variable cost
Everything else — acquisition, salaries, profit — is paid out of that difference. Revenue at 95% margin and revenue at 40% margin (AI-heavy products) are different substances. Every equation below scales by it.
Churn
“Probability of churn” sounds abstract, but you read it straight off a cohort. Take everyone who signed up in the same month (that’s the cohort — group by join-date, or new signups mask the losses and every number lies). Then anchor each person’s clock to their own signup date, not the calendar. Whoever joined on the 1st is checked on the 31st; whoever joined on the 29th is checked four weeks after that — not on the same day as the early joiner. Score everyone against one fixed calendar date instead and the late joiner is judged on less time than the early one: same cohort, unequal clocks, meaningless number. Count survivors at each person’s own one-month mark: 100 joined, 92 still paying → you lost 8, so c ≈ 8%/month. One guard — don’t read a cohort until its youngest member has cleared a full month, or the freshest joiners look loyal purely because they haven’t had time to quit yet (that undercount is censoring, and it flatters every young cohort). Average a few complete cohorts.
The SQL, if you want to run it on your own data
Postgres; assumes a subscriptions table with a started_at and a nullable canceled_at. The two load-bearing lines are flagged — the personal anchor, and the censoring guard:
with subs as (
select
user_id,
started_at,
canceled_at, -- null = still paying
date_trunc('month', started_at) as cohort
from subscriptions
)
select
cohort,
count(*) as joined,
count(*) filter (
where canceled_at is null
or canceled_at >= started_at + interval '1 month' -- ANCHOR: their own signup + 1 month, not a calendar date
) as retained_m1,
round(
1.0 * count(*) filter (
where canceled_at < started_at + interval '1 month'
) / count(*), 3
) as churn_m1
from subs
where cohort + interval '2 months' <= current_date -- CENSORING GUARD: youngest member has had a full month
group by cohort
order by cohort;For month-N churn, swap interval '1 month' → 'N months' and the guard → 'N+1 months'. Run it for N = 1, 2, 3… and you’ve plotted your retention curve.
Real churn isn’t one flat number — it’s highest in the first weeks and settles as the flakes leave. So run the measurement out to months 2, 3, 6 and look at the shape. A cohort’s retention curve does one of two things: decays toward zero, or flattens onto a plateau — and the plateau’s height, not the early slope, decides whether you have a business. A curve that flattens at 40% is a durable base that compounds with every new cohort. A curve that sags to zero is a leaky bucket no amount of acquisition can fill; you’re renting users. You can usually read where it will flatten from the first few months — so judge a product by its plateau, not its month-one number. A modest month one that flattens high beats a flashy month one that decays to nothing; the second is a mirage that acquisition spending will chase forever. For the equations below, a single c is a working simplification of that curve.
Lifetime value
With a c in hand: a customer stays 1/c months on average (8% a month → ~12 months), so summing the monthly margin over that decaying cohort gives:1
LTV = ARPU × GM / c
Churn is in the denominator, and nothing else in this playbook matters as much: 1/c is a hyperbola, not a line. Cut monthly churn from 4% to 2% and LTV doubles. Cut it from 2% to 1% and it doubles again. The lower churn already is, the more a tiny absolute improvement is worth — the opposite of where your effort instinct sends you. No pricing lever has this shape. Below a few percent monthly, retention work out-earns everything else in this playbook, and no roadmap ever files it under monetization.
The churn ceiling
The same c caps your size. Add A customers a month, lose fraction c of the base a month, and you do not grow forever — you climb toward a hard ceiling and stop there: A / c users. Add 100 a month at 5% churn, and you climb, and climb, and stop at 2,000. Not for a while. Forever.
The shape is what makes it cruel: the first year looks great, because climbing toward an asymptote feels like a straight line up. Then it bends and flattens, and it reads like acquisition broke. Nothing broke — your losses grew alongside your size until they caught up with your adds. The ceiling was fixed the day A and c were, long before you felt the bend. Raise it by lifting acquisition or cutting churn, and churn moves it more: it’s the denominator again.
Payback
payback (months) = CAC / (ARPU × GM)
How many months of a customer’s margin it takes to earn back what you spent getting them. This — not the LTV/CAC ratio — is what constrains you. LTV/CAC of 5 with a 30-month payback is a fine business for someone with a Series B and a lethal one for you: it means financing 30 months of acquisition out of savings.
Solo rule: payback under ~3 months or the channel is closed to you, regardless of LTV. This is why near-zero-CAC channels — content, SEO, word of mouth — dominate the solo portfolio. Accepting lower LTV for lower CAC isn’t a lifestyle preference; it’s the arithmetic.
Not solo? Funding exists to buy this constraint away. A funded company tolerates 12–18-month paybacks and tests LTV/CAC ≥ 3 instead — which opens paid channels (ads, outbound) that are suicide when paid from savings. Same equations, different variable doing the constraining.
The payback delay has a second, nastier consequence: you can grow yourself bankrupt. You pay CAC today and collect margin over the months that follow, so at any moment you’re carrying a crowd of customers who haven’t yet paid back what they cost — and the faster you grow, the bigger that crowd and the deeper your cash trough, even with pristine unit economics. Healthy LTV/CAC doesn’t save you from this; it guarantees the trough, because every good new customer is cash out now for cash back later. Companies profitable per customer die of growth every year. Model it before you scale spend — roughly new customers per month × CAC × payback months in flight at once. This is the real reason funded companies raise: not to prove the model, but to fund the trough the model itself creates.
What a free user costs
Call it m: the monthly cost of one free user — inference, storage, support. For fifteen years m was roughly zero, which is the only reason “give it away” was ever coherent. AI put it back: $0.50–$5/month per active free user is now common.
A free tier is a marketing expense, and its budget is computable:
free tier is rational ⇔ m × months-they-stay-free < P(convert) × LTV + referral value
Each free user is a lottery ticket with a known price. If you can’t estimate the right side of that inequality, you haven’t decided to have a free tier — you’ve decided not to look at a cost.
Not solo? A funded company in a winner-take-most market can run this inequality negative on purpose — buying share with investor money before the market tips. That’s a financing decision wearing a pricing costume. Make it explicitly, with a burn budget, or not at all.
The right price is higher than you think
Price is the strongest profit lever you own, mechanically: a price increase flows straight to profit, while a volume increase arrives dragging its variable costs behind it.2
Elasticity is how sharply demand falls when price rises: if a 1% raise loses you 2% of buyers, elasticity is 2. Two facts from the standard math, both of which founders get wrong:
- Revenue peaks where a 1% raise loses exactly 1% of buyers. Profit peaks at a strictly higher price — because the buyers you lose were also costing you variable cost. If you optimize signup conversion × price, you’re optimizing revenue, and systematically underpricing.
- When software had no variable cost, “raise until you lose 1% per 1%” was the whole rule. AI costs push the right price higher still. After adding an expensive AI feature, the correct instinct is to raise the price, not eat the margin — the math says so before any market research does.
How do you actually know your elasticity? You don’t look it up — you probe it:
- No users yet: you can’t probe demand, so probe the substitute. Customers already pay for their current alternative, in money or hours; that’s the neighborhood your price lives in. Then run the fake door at two or three prices — same landing page, split traffic, real-looking checkout. Click-through per price is a crude demand curve. It costs a weekend.
- With users: test on new customers only — they have no reference price with you, so there’s no fairness event. Raise the new-customer price 20% and watch signup conversion. The operational test needs no Greek: if a 20% raise drops conversion by less than 20%, you were underpriced. Raise again. Repeat until the drop bites. Most founders never run this loop once, which is why most software is underpriced for years.
One price captures one rectangle under the demand curve. Everything in tiering (Decision 7) is the art of building more rectangles.
Expansion
NRR = (what last year's customers pay this year) / (what they paid last year)
Below 100%, you’re on a treadmill whose speed is churn — every year starts with a hole to fill. Above 100%, the existing base grows by itself and every new customer adds to a compounding series. NRR above 100% is the only way revenue grows while you sleep. It requires a price that scales with something that grows as the customer succeeds (Decision 3). Flat per-account pricing caps NRR at 100% by construction — nothing can expand; only churn can happen.
The SQL for NRR (the metric most people compute wrong)
The two ways to get it wrong: letting new customers into the numerator, or dropping churned ones. You want one fixed set — whoever was paying a year ago — and their revenue today, with churns counted as zero. Assumes a monthly snapshot table mrr_by_month (customer_id, month, mrr):
with base as ( -- the ONLY customers we track: those paying 12 months ago
select customer_id, mrr as mrr_then
from mrr_by_month
where month = date_trunc('month', current_date) - interval '12 months'
and mrr > 0
),
today as (
select customer_id, mrr as mrr_now
from mrr_by_month
where month = date_trunc('month', current_date)
)
select
round(sum(coalesce(today.mrr_now, 0)) / sum(base.mrr_then), 3) as nrr
from base
left join today using (customer_id); -- LEFT JOIN: churned accounts count as 0; new logos never enter (not in base)Expansion and contraction need no special handling — an account that upgraded has mrr_now > mrr_then and lifts the ratio by itself. Above 1.0, the base grows without a single new customer.
Not solo? Teams get a second expansion engine: humans. Account managers can push NRR above 100% even on flat pricing by selling more into the base. Solo, expansion must be automatic — the metric grows because the customer grew, no conversation required.
Compounding is invisible up close
NRR above 100% compounds, and compounding is the curve linear intuition handles worst — in both directions.
Up close, it’s invisible. Constant growth is value = start × (1+r)ᵗ, but week to week, at any healthy rate, it looks almost flat — you can’t tell it from a straight line. The famous hockey-stick “knee” is an illusion of scale: plot the same curve on a log axis and there’s no knee at all; every point looks the same. You’re never at the knee — you only spot one later, looking back, once the axis has compressed. And to hold a growth rate, your absolute additions must grow exponentially too: $10M added to a $100M company is 10% growth; the same $10M added to a $1B company is 1%. Growth rates must decay as you scale — not because anything broke, but because that’s the arithmetic. Track absolute adds next to the rate, and stop reading a falling rate as failure.
At a distance, small gaps diverge without bound. Rule of 72: something growing at r% per period doubles in about 72/r periods.3 Two things compounding at 5% and 7% look nearly identical for a stretch — then separate without limit. 7% doubles every ~10 periods, 5% every ~14; run it out 40 periods and the 7% line is roughly 2.5× ahead and still pulling away. A small, durable edge in a compounding rate — growth, retention, NRR — beats a large one-time boost, given enough periods. It’s why 120% NRR is a superpower: the existing base roughly doubles every four years with zero new customers, silently.
Funnels multiply; invites compound
End-to-end conversion is the product of every step’s rate, never the average. Five steps that each convert a perfectly respectable 80% deliver 0.8⁵ = 33% overall. Inspected alone, each step looks fine; multiplied together, the funnel collapses — faster with every step you add. So the leverage is your single worst step, not the average across steps: dragging one 50% step up to 80% beats nudging four 80% steps to 85%. Find the floor, not the mean.
Retention decays exponentially — after t months, (1−c)^t of a cohort remains. Virality runs the other way: if every N users bring in k×N more, then total users = N/(1−k). Even k = 0.5 — every two users recruit one — means every acquisition counts double, which halves your effective CAC. (k above 1 means growth without acquisition; almost nobody sustains that. The amplifier is the realistic prize.)
Where the paywall sits enters both equations. The funnel is a chain of rates: visit → activate → share → convert → pay. A gate placed before the share moment means only payers can trigger invites — usually a 10–50× cut to the viral term. A gate placed after the value moment but before habitual dependence maximizes payment without touching spread. That one sentence is the entire theory of paywall placement; Decision 6 is the details.
Network effects flip at a threshold
When a product’s value rises with the number of users,4 you don’t get one smooth curve — you get two qualitatively different states separated by a critical mass. Below it, the product is genuinely worth little: there’s no one to connect to, so it churns everyone and dies. Above it, value and retention flip positive and growth feeds itself. Same product, opposite fate, on either side of one line.
So never launch a network product broad and thin — spread across a whole market, you’re below critical mass everywhere, and it feels dead everywhere. Go absurdly narrow: pick one corner and subsidize, concierge, or hand-fake the density until that corner tips, then move to the next. Density in a niche beats reach across a market.
The flaw of averages
One law about all the others. For anything nonlinear, the average of the outputs is not the output of the average input — avg(f(x)) ≠ f(avg(x)).5 Plans built on average inputs are therefore systematically wrong in exactly the systems above. The statistician’s version: a man drowns crossing a river that is, on average, four feet deep.
Never plan on a single average for anything nonlinear — churn, conversion, queue lengths, capacity, runway, load. The average hides the variance, and in nonlinear systems the variance is what kills you. Model the distribution, or at least the bad tail; the middle was never the risk.
The thread through all of it: your intuition is linear, and this system isn’t. Wherever it compounds, multiplies, saturates, or flips at a threshold, the straight line in your head is lying to you — confidently, and in a direction you can now name. When a number surprises you, ask which of these curves you were quietly drawing as a line.
Next: 2 — The psychology — the other force: how humans actually decide to pay.
Footnotes
-
Each month a customer survives with probability
1−c, so expected lifetime is the geometric series1 + (1−c) + (1−c)² + … = 1/cmonths. ↩ -
Hermann Simon built a consulting firm on this one observation — at typical software margins, a 1% price improvement beats a 1% volume gain every time. Confessions of the Pricing Man is the book. ↩
-
The exact figure is
ln(2) ≈ 69.3; 72 survives because it divides cleanly by 2, 3, 4, 6, 8, 9, and 12. ↩ -
Metcalfe’s
n²overstates it, but the direction is real. ↩ -
Jensen’s inequality, if you want its name. ↩