Now with MCP · your agent can query commission, affiliates, and payouts. Read-only. Connect a client
← Blog

Affiliate Program ROI: Measuring Payback and Incrementality

A commission is a per-sale cost, not a fixed one. The formulas, cohort math and spreadsheet columns for measuring affiliate ROI and payback.

SSled13 min read
·Share on X

The usual affiliate ROI number is attributed revenue divided by commission paid. It is flattering, because it counts sales you would have made anyway, and incomplete, because it ignores the fee for the software that counted them. The honest version is three comparisons, built from contribution margin per customer, your commission rate, and the commissions paid in a period.

Charts and data, the raw material of a payback calculation

TL;DR

  • A commission is a variable cost, not a fixed one. No sale, no cost. It is only cheap if the rate sits below your contribution margin rate, otherwise volume makes the loss bigger.
  • Compare like with like. Affiliate cost against paid CAC over the same window, and against the tool fee per acquired customer.
  • For recurring commissions, think in payback months. Payback months = commission rate / (margin rate minus commission rate). Your price point does not enter it.
  • Commission on an existing customer is not the same transaction as commission on a new one. One buys a customer, the other pays rent on one you already own.
  • Attribution is not incrementality. Brand bidding, coupon leakage and last-click stealing all produce clean commissions on sales that were already coming.

A commission is a variable cost, not a fixed one

The tool is a fixed cost: the same line every month whether the program produces one customer or a hundred. The commission is the opposite. It exists because a sale happened, and it disappears with the sale.

That is the property behind the phrase low risk, and it is real. Nothing is spent in advance and no budget goes unspent. But variable is not the same as cheap, and this is where most ROI arguments break down. A commission is paid out of contribution margin, not revenue. Revenue per customer per month is the top line; contribution margin is what survives payment processing, hosting, API costs and support.

Net contribution per attributed customer per month = revenue per customer per month × (contribution margin rate minus commission rate)

Two consequences follow. If margin rate is above commission rate, the channel is contribution positive from the first payment. If margin rate is below commission rate, each attributed customer destroys contribution and growth makes it worse. That is a pricing problem, not a marketing one, and the fixes are moving the rate, restricting commission to annual plans, or capping commission at a number of payments rather than a lifetime.

The two comparisons that matter, and the one that does not

Attributed revenue divided by commission decides nothing on its own. Its shape is a return on ad spend, and so is its flaw: a ratio of outcomes to spend cannot say whether the spend caused them.

Against your paid channel. Ad spend divided by ad-attributable customers is your paid CAC, paid upfront. The affiliate equivalent is commissions paid divided by customers won in the same window. Because recurring commission keeps accruing, compare cumulative cost per customer at months one, three, six and twelve. The crossover is the payback window below.

Against the tool fee. The fee is fixed, so its cost per acquired customer is the fee divided by attributed customers won that month. On the $19/mo Pro plan, four attributed customers in a month puts tooling near $4.75 per customer on top of commission; one puts it at $19, which may exceed that customer's margin. Tools taking a cut of every commission make this worse as the channel succeeds: the fee arithmetic is here.

Input How to collect it
Revenue per customer per month Billing provider MRR / paying customers, or median first payment in the export
Contribution margin rate P&L: revenue minus per-customer costs, as a fraction of revenue
Commission rate Program settings; pre-tax versus gross matters more than the number
Commissions paid Dashboard payouts, reconciled against the export
Attributed customers First payment rows, grouped by customer so renewals cannot pose as new
Refunds Negative amount rows, since clawback reverses the commission
Tool fee $19/mo or $99/yr after a 10-day free trial

Payback in months for recurring commissions

The arithmetic gets simple once you notice revenue and cost move together. Call revenue per customer per month R, contribution margin rate m, and commission rate c.

  • Commission owed in one month: R × c
  • Net contribution in one month: R × (m minus c)
  • Cumulative commission after n months: n × R × c
  • Cumulative net contribution: n × R × (m minus c)

Setting the two cumulative expressions equal cancels both R and n:

Payback window in months = c / (m minus c)

Your price does not enter it. A $9/mo and a $900/mo product with the same margin and commission rates have the same payback window, because price changes both sides, not the crossing point.

Two shapes at the default 30 percent rate, to show sensitivity rather than a benchmark: at an 80 percent margin rate, payback is 0.30 / 0.50, or 0.6 months. At 40 percent, it is 3 months. At 25 percent the denominator goes negative, so there is no payback window at all and every month of the customer's life is contribution negative. Compare the window against median customer lifetime: longer means the channel adds contribution, shorter means the typical customer is a loss even though every individual commission looked affordable.

Cohorts, not totals

Monthly totals hide the question worth asking: how much of this month's profit came from customers acquired earlier. A program can post record attributed revenue and record commission while new customer count stays flat, and that pattern means the totals are renewals of a cohort you already paid for.

Build cohorts from the export: one row per conversion, bucket each customer by the month of their first payment, then track attributed revenue, commission owed and net contribution per cohort. You get a triangle showing whether later cohorts grow and whether earlier ones still carry their weight.

Two uses. Retention: if a later cohort buys fewer months than an earlier one, the blended payback window is stale. Budgeting: the triangle shows what you owe next month from business you already did, a liability a monthly ratio conceals. Keep refunds in the model, because clawback puts them in the customer's cohort rather than the month they processed.

If you are still choosing a payout structure, the same arithmetic drives the answer in recurring versus one-time commissions.

A commission on an existing customer is a different transaction

Two payments can carry the same commission rate and be entirely different transactions.

An acquisition commission buys a customer, judged against alternatives: paid CAC, affiliate CAC at the same point, and the payback window. Cheaper than the alternative, with the customer alive past payback, means a good purchase.

A continuity commission is paid on a customer you already have. Nothing is acquired. It answers a behaviour question: does paying it change what the affiliate does? If they keep advocating, it is a retention incentive, measured as retention lift against a comparable group. If they wrote one post two years ago and collect on it still, it is a tax on customers you already owned.

Credit lands on an existing customer three ways: a referral link clicked by someone already paying you, a code published on an aggregator and applied by a decided buyer, or a long cookie window claiming a purchase whose buyer was already in your funnel. All three are legitimate conversions, and none is an acquisition.

Program defaults are crude guard rails: a 90 day cookie window bounds how far back a claim reaches, self referral blocking removes the easy case, and disposable email blocking removes one class of abuse. None separates a first purchase by a new customer from a renewal by an existing one, which is what grouping rows by customer in the export does.

Dimension Acquisition commission Continuity commission
What you buy A customer you did not have Continued advocacy, or nothing
How to judge it Paid CAC and payback window Retention lift versus a comparable group
Failure shape Credited conversions up, total new customers flat Commission up, new customers flat
Cheapest test Exclude brand terms and aggregator coupons Cap the term, or a milestone bonus

If renewals are where the spending sits, the affiliate program audit walks rates, cookies and referral sources, and the commission rate guide covers how rate interacts with margin.

The failure mode: the sale that was already coming

The most expensive conversions are the ones you would have closed anyway, because the commission is pure waste.

Brand bidding. The affiliate buys ads on your product name, a searcher looking for you clicks that ad instead of your organic result, then converts. The commission is real, the customer is real, the incrementality is zero, and the click is a second cost.

Coupon leakage. Codes on aggregator sites get applied by people already at the pricing page. Sometimes the affiliate also gets link credit for a link that was never clicked, so you pay commission plus the promo discount for a purchase you were about to book at full price.

Last click stealing. An affiliate takes credit for the last click before checkout when the deciding touch was your newsletter, your docs or a search result. A hard link near the end of a popular article collects on someone else's marketing.

None of this is fraud in the ordinary sense. It means credit is not causation. The clean measurement is a holdout: switch the channel off for a slice of traffic, a geography or a product line, then compare total new customers in that slice against the rest. The difference is the incrementality.

Symptom Likely cause What to do
Conversions cluster on a discount term, coupon used, no click logged Coupon leakage Private codes, or pay only for link attribution
Conversions concentrate on terms containing your brand Brand bidding Exclude brand terms, then verify with a screenshot
Conversions land hours after your newsletter send Last click stealing Compare first and last touch, tighten the cookie window
Commission grows while new customers stay flat Continuity commission Split first payments from renewals, then cap or re-rate

Deliberately shady versions, from farmed links to click fraud signatures, are in the fraud tactics roundup.

A spreadsheet is the whole toolchain for this measurement

What to track in a spreadsheet from the export

One sheet, one row per conversion, a few derived columns. Export conversions from the dashboard, then build these once.

Column Where it comes from Why it matters
Payment date Export Cohort and month base
Affiliate code Export Rates the partner, not the program
Amount, pre-tax Export Revenue base, margin comparable
Commission owed Amount × rate Cost side of every ratio
First payment or renewal Grouping customer rows by date Acquisition versus continuity
Customer key Export One customer counted once
Refunds Negative amounts Nets cost down
Net contribution per customer Amount × margin minus commission Is the channel fundable
Effective CAC Commission / net new customers Versus your paid channel

Three habits keep it honest. Refresh on a fixed day each month from the export rather than keeping a second ledger. Reconcile the commission column against the payout view, since an adjustment that never reached the sheet flatters your ROI. Keep the net new flag current: a rough guess today beats a perfect estimate reconstructed later.

When a program is genuinely too small to measure

Small programs get stuck: ROI cannot be measured without more volume, and volume does not arrive because the measurement is unconvincing. The way out is noticing that two different things are being asked for.

Channel cost is measurable at any scale. Commissions and tool fees are ledger facts. Win two customers this month and you know what that cost per attributed customer.

Incrementality is not always measurable. It is the difference between what happened and what would have happened, and at low volume it is smaller than the ordinary month to month swing in your new customer count. Compute that swing from your last several months of total new customers, then compare it against attributed customers per month. If attributed customers sit inside the band, you cannot separate the channel from noise.

What to do instead:

  • Measure per-customer economics rather than program ROI. Payback and net contribution per customer need no control group, and they still say whether the channel is fundable.
  • Keep fixed cost low and flat while the channel is unmeasurable. A flat $19/mo with no per-affiliate or per-sale fee leaves the commission as the only cost that moves.
  • Replace attribution arguments with a deterministic offer. A landing page and private code per partner turns who gets credit into whether that partner's audience exists.
  • Write the decision rule before the data arrives. Since the cost side is exact, it reduces to whether net contribution per attributed customer per month is positive at a realistic churn assumption.

The trap is waiting for confidence you will not reach at that scale while tracking nothing in the meantime. Per-customer payback from day one costs one spreadsheet.

The three numbers worth reporting monthly

Cut the dashboard down. Three numbers, kept honest, will catch every problem above before it gets expensive.

1. Effective CAC including the fee. Commissions paid in the month plus the tool fee, divided by the distinct customers in that month who were net new. This is what you compare against your paid channel on the same basis, and what stops the fixed fee from hiding inside a flattering ratio.

2. Net contribution per attributed customer per month. Revenue per customer per month multiplied by margin rate minus commission rate. Its sign is the health check on the program, and because it moves when margin moves, it catches cost changes a revenue ratio hides.

3. Payback window in months, beside median customer lifetime. Commission rate divided by margin rate minus commission rate. Beside the median lifetime of the latest cohort, it answers the only question a recurring commission raises: does the typical customer stay long enough to pay for the commission they generated?

Everything else is context: attributable revenue, total payouts, active affiliate count. These three change decisions, and they come from one CSV export and one line from your P&L.

FAQ

Is a 30 percent commission too high? It depends entirely on your margin rate, which is why the test is a subtraction rather than a target. Take your contribution margin rate and subtract the commission rate. Comfortably positive, with a payback window shorter than median customer lifetime, means the rate is affordable. Close to zero or negative means the rate is the problem for your economics.

Should I pay commission on renewals at all? Pay it if the affiliate keeps doing something after the first sale, because then it is a retention incentive you can measure as one. Stop paying if the affiliate went quiet, because then it is a recurring cost on a customer you already own. The mechanical version of that decision is a time cap, a fixed number of payments, or a milestone bonus tied to retention rather than invoicing.

How do I know whether an affiliate's conversions were incremental? Not from attribution data, because attribution answers who gets credit, not whether the sale would have happened. Split first payments from renewals, look for brand term and aggregator coupon patterns, then run a holdout for a definitive answer: switch the channel off for a slice of traffic or a geography and compare total new customers in that slice against the rest.

Do I need a paid plan to measure any of this? No. Every input is either in your P&L or in the conversion export, and the export is available on every plan, the free trial included. The fixed cost of measurement is a flat tool fee, and the only cost that moves is the commission itself.


Want the numbers behind these formulas in one place? Sled attributes transactions for Polar.sh, Stripe and Paddle, exports conversions as CSV, claws commission back on refunds, and costs $19/mo after a 10-day free trial. See the payback math on real conversion data, or start a free trial.

Try Sled

Recurring commission on every renewal.

Polar-native affiliate tracking, with Stripe and Paddle handled the same way. 10-day trial, no card required, cancel anytime. Then $19/mo or $99/yr.

Keep reading

All posts →