DEV Community

Kun Shen
Kun Shen

Posted on

Deriving Break-Even ROAS from Contribution Margin (Instead of Guessing a Target)

Direct answer: Break-even ROAS is attributable sales divided by the maximum ad spend the order can absorb before profit reaches zero. Compute that ad budget only after VAT, platform fees, product cost, fulfilment, creator commission and expected return loss are represented on the correct bases.

Teams often inherit a rule such as “never run below 3× ROAS.” That threshold may be sensible for one SKU and disastrous for another. The correct threshold is an output of the unit economics.

Define the variables

Let:

  • G = attributable gross sales shown by the ad measurement system;
  • V = VAT amount embedded in G, when applicable;
  • P = platform commission;
  • C = product and inbound cost;
  • F = fulfilment, packaging and delivery cost;
  • A = affiliate/creator cost;
  • R = expected return loss;
  • T = target profit per attributed order.

Then:

Maximum ad spend = G - V - P - C - F - A - R - T

For pure break-even, set T = 0.

Break-even ROAS = G / maximum ad spend

This ratio is valid only if G uses the same sales definition as the observed ad-platform ROAS. If the platform reports tax-inclusive gross sales, the numerator should match that definition while VAT remains a cost bridge below it.

A hypothetical test case

Suppose the ad platform attributes EUR 119 of tax-inclusive sales to one order. Assume:

  • VAT estimate: EUR 19;
  • platform commission: EUR 10.71;
  • product and inbound cost: EUR 35;
  • fulfilment and packaging: EUR 8;
  • affiliate cost: EUR 5;
  • expected return loss: EUR 3.

The maximum break-even ad spend is:

119 - 19 - 10.71 - 35 - 8 - 5 - 3 = EUR 38.29

The gross-sales break-even ROAS is:

119 / 38.29 = 3.11

This is an illustrative scenario, not a benchmark. Change any input and the threshold changes.

Implementation sketch

type Economics = {
  attributedGrossSales: number;
  vatAmount: number;
  platformCommission: number;
  productAndInbound: number;
  fulfilment: number;
  affiliate: number;
  expectedReturnLoss: number;
  targetProfit: number;
};

function breakEvenRoas(x: Economics): number | null {
  const maxAdSpend =
    x.attributedGrossSales -
    x.vatAmount -
    x.platformCommission -
    x.productAndInbound -
    x.fulfilment -
    x.affiliate -
    x.expectedReturnLoss -
    x.targetProfit;

  if (maxAdSpend <= 0) return null;
  return x.attributedGrossSales / maxAdSpend;
}
Enter fullscreen mode Exit fullscreen mode

Returning null when pre-ad contribution is zero or negative is intentional. The product cannot buy its way to break-even with more advertising. Showing “0” would hide the failure state.

Tests worth keeping

  1. No headroom: pre-ad contribution is zero; output is not a finite ROAS.
  2. Higher target profit: break-even threshold rises.
  3. Higher expected returns: break-even threshold rises.
  4. Different VAT rate: sales and tax bases remain internally consistent.
  5. No affiliate attribution: creator cost is zero only when evidence supports it.
  6. Rounding: monetary lines round at the documented stage, not opportunistically.

Connect campaign and finance data carefully

Ad dashboards, order exports and settlement reports may use different time zones and attribution windows. A useful diagnostic keeps both the marketing definition and the finance definition. Do not force them into false precision; label late refunds and attribution uncertainty.

Add a target-profit ROAS, not just break-even

Break-even is a boundary, not necessarily an operating target. If a product needs EUR 10 contribution after advertising to fund overhead or inventory risk, include targetProfit: 10 in the same function. The available ad budget shrinks and the required ROAS rises. Reporting both values is useful:

  • break-even ROAS answers, “At what measured efficiency does contribution reach zero?”
  • target ROAS answers, “At what measured efficiency does the order preserve the chosen contribution?”

The difference creates a safety buffer for delayed refunds and attribution noise. Teams can alert before the mathematical loss line instead of after it.

Do not average away SKU economics

Campaign-level ROAS can hide a profitable hero SKU subsidising a loss-making product. Calculate the threshold per SKU or economically equivalent group, then compare observed performance on the same attribution definition. A blended number is useful for portfolio reporting only after the underlying thresholds are visible.

An interactive break-even ROAS model can help test the variables, but its defaults are planning assumptions. Account-specific rates, product VAT treatment and actual settlement data remain authoritative.

Sources verified 17 August 2026:

Disclosure: I work on TokMargin. This article was prepared with AI-assisted editing and manually checked against the cited primary sources.

Top comments (0)