Break-even ROAS Calculator

Break-even ROAS is the return on ad spend at which a campaign neither earns nor loses. Above it you earn; below it you eat into your profit. This calculator works it out with two models and states the assumptions of each.

The whole calculation runs in your browser. No figure is sent to a server or stored.

Work out your number

The delivered order
The order that returned no money

The two equations

1. The basic model

It takes the contribution margin on the delivered order — revenue minus all variable costs other than ads — and inverts it:

Basic Break-even ROAS = 1 ÷ Contribution Margin %

Contribution Margin % = (Price − COGS − Shipping − Fees − Ops) ÷ Price

Its assumption: that every order you spend ads on turns into revenue. That holds in a prepaid market. With cash on delivery it does not, because some orders are refused after you have already paid to ship them.

2. The simplified COD-adjusted model

Simplified COD-adjusted Break-even ROAS
        = 1 ÷ (Contribution Margin % × Realized Revenue Rate)

Realized Revenue Rate = the share of orders actually delivered and collected. This form is clearer and easier to explain, and it is an approximation: it deducts the lost revenue, but it still does not charge the cost of the refused order.

3. The full model — the one the calculator above uses

A refused order has zero revenue, but it paid outbound shipping and usually return shipping and handling. The successful order has to carry that cost:

Contribution per delivered order = Price − COGS − Shipping − Fees − Ops
Failure cost per delivered order = Failed cost × (1 − r) ÷ r      // r = realized rate
Net contribution                 = Contribution − Failure cost

COD-adjusted Break-even ROAS = Price ÷ Net contribution

The model's limits: it assumes these costs vary with the order, that the collection rate is stable, and that you measure per order rather than per customer. If you have large fixed costs or repeat customers, this number is a floor for a single campaign — not a company profitability target.

A worked example

These figures are purely illustrative — not from a real store and not a market average. They only show how the equation works.

A hypothetical store: EGP 700 order, goods 380, shipping 70, fees 15, operations 10
Contribution margin225 ÷ 700 = 32.1%
Basic model1 ÷ 0.321 = 3.11×
Simplified adjusted (75% collected)1 ÷ (0.321 × 0.75) = 4.15×
Full (failure cost 110)225 − 36.7 = 188.3 → 700 ÷ 188.3 = 3.72×

Notice the full model came out lower than the simplified one here. That is because the simplified model deducts all the lost revenue, while the full model charges only the real cost of failure. Which one is closer to your case depends on what a refused order costs you — which is why the calculator asks rather than assumes.

The common mistake

A merchant takes a break-even ROAS from a foreign article or a rule of thumb like "3×" and applies it. That number depends on your margin and your collection rate, and both differ from store to store and from product to product. Worse, it gets calculated once and then used for months, while the collection rate changes with the season, the carrier and the governorate.

Common questions

Which model should I use?

If customers pay upfront, the basic model is enough. With cash on delivery, use the full model, because it is the only one that charges the cost of the order that came back.

Where do I get the collection rate?

Only from your orders that reached a final status — exclude those still in shipping or awaiting confirmation, because including them lowers the rate artificially. The method is explained under Finalized Delivery Rate.

Why is the ROAS Meta shows higher than this?

Because it is calculated on recorded orders and gross revenue, not on delivered orders and profit. The difference is explained under Real ROAS.

What next?

A calculator gives you the number once. The trouble is that it changes — the collection rate differs from one governorate to another and from one carrier to the next. Rabehni computes each order's net profit and your collection rate from your own store data as it happens.