Glossary
Contribution margin per order: the number your ad targets should be built on
Contribution margin per order is the price excluding VAT, minus unit cost, shipping you bear and payment fees. Adjusted for returns and divided by price, it is the margin a break-even ROAS is built on. Build a target on gross margin instead and it comes out too low, because shipping, fees and returns are left out.
Last checked · More glossary
The formula
Contribution margin has two forms: a money amount per order, and that amount divided by the price. The percentage, adjusted for returns, is the one a ROAS target needs, and it is different for every product you sell.
Step 1: Contribution per order
Price excluding VAT − unit cost − shipping you bear − (price × payment fee %).
Step 2: Returns-adjusted margin
Contribution per order × (1 − return rate) ÷ price excluding VAT.
Step 3: Break-even ROAS
1 ÷ returns-adjusted margin. Below it, the product loses money on average on each sale.
Step 4: Target ROAS
1 ÷ (returns-adjusted margin − the net margin you want to keep). If the two margins are close, the required ROAS runs away towards infinity: the product cannot deliver that profit at that price.
Unit cost is what you pay your supplier per unit, per variant rather than per product, plus inbound freight and packaging. A size or colour that costs more to buy is a different number, and averaging it is how a losing variant hides inside a winning product. In Shopify it is the cost-per-item field on the variant.
Shipping you bear is outbound delivery you do not charge through. If you charge shipping separately and it covers itself, leave it out of both sides rather than adding it to one.
Payment fees are usually a percentage of the order plus a fixed amount per transaction. Use the rates on your processor’s statement rather than a rule of thumb, and apply the percentage to the price excluding VAT.
The returns adjustment, and the assumption behind it
Multiplying by (1 − return rate) removes the contribution of the orders that come back. The assumption behind it: a returned order is fully refunded and earns nothing, so you lose that order’s contribution. Write the assumption on the sheet so the next person reading it knows which one you made.
Use each product’s own return rate, not a store-wide average. Apparel and electronics rarely resemble each other.
The simple version is generous where returned goods cannot be resold. A return usually costs you the revenue, the return shipping and, depending on the category, some or all of the unit cost. If the unit is written off and the outbound shipping is lost too, subtract return rate × (unit cost + outbound shipping + any return postage you pay) as well. In the example below, counting only the unit cost and outbound shipping moves the adjusted margin from 46.6% to 44.2% and break-even ROAS from 2.15× to 2.26×.
Strip VAT before you start
Every figure in the formula is excluding VAT, because tax collected for a government was never yours. Divide a VAT-inclusive price by one plus the rate: €49.95 at 20% VAT is €49.95 ÷ 1.20 = €41.63.
Skip this and the sheet counts a fifth more revenue than you keep. In the example below, using €49.95 as the price turns a 46.6% adjusted margin into 54.2%, and a 2.15× break-even into 1.84×. A product with a ROAS between those two figures would look profitable while losing money on average on each sale.
The ROAS you compare against must be on the same basis. If your conversion value reaches Google including VAT, every reported ROAS is inflated by the tax rate: in the example, the true 2.15× break-even appears as about 2.58× on VAT-inclusive values.
Worked example: from shelf price to break-even ROAS
Example figures, not benchmarks: a product sold at €49.95 including 20% VAT, with a €14.00 unit cost, €6.00 of shipping you bear, a 2.9% payment fee and a 5% return rate, has a returns-adjusted margin of 46.6% and breaks even at a ROAS of 2.15×.
Step 1: Price including VAT (example)
€49.95
Step 2: Price excluding VAT
€49.95 ÷ 1.20 = €41.63
Step 3: Unit cost
€14.00
Step 4: Shipping you bear
€6.00
Step 5: Payment fee at 2.9%
€41.63 × 0.029 = €1.21
Step 6: Contribution per order
€41.63 − €14.00 − €6.00 − €1.21 = €20.42, which is 49.1% of the price
Step 7: After a 5% return rate
€20.42 × 0.95 = €19.40
Step 8: Returns-adjusted margin
€19.40 ÷ €41.63 = 46.6%
Step 9: Break-even ROAS
1 ÷ 0.466 = 2.15×
Step 10: Target ROAS to keep 10% of revenue
1 ÷ (0.466 − 0.10) = 2.73×
Run it with your own figures
The free break-even ROAS calculator on this site runs the same arithmetic in your browser and asks for no email address. Enter the price excluding VAT (€41.63 for this example). The calculator’s own default price of €49.95 is treated as ex-VAT, so its default result (1.84×) is not this page’s example. Its fee field is a percentage only; if your processor also charges a fixed amount per transaction, add it to the shipping figure, since both come off every order.
Contribution margin vs gross margin vs net profit
The three answer different questions. Gross margin says what the goods earn, contribution margin says what one more order earns before advertising, and net profit says what was left after advertising over a period. Only contribution margin belongs under a ROAS target.
Gross margin
(Price − unit cost) ÷ price. Leaves out shipping, payment fees and returns. Example: (€41.63 − €14.00) ÷ €41.63 = 66.4%, which implies a 1.51× break-even — well under the 2.15× the product actually needs. Useful for pricing and supplier decisions.
Contribution margin
(Price − unit cost − shipping you bear − payment fees) ÷ price, then adjusted for returns. Example: 49.1% before returns, 46.6% after. The base for break-even and target ROAS, product by product.
Net profit
What is left over a period after the costs you count, advertising included. In Opteno’s dashboard: revenue − cost of goods − ad spend. Useful for ranking products and spotting the ones below the line, not for setting a target.
In the example, any ROAS between 1.51× and 2.15× looks profitable against gross margin and loses money against contribution margin. That band is where a target built on the wrong margin does its damage.
What Opteno’s net profit includes, and what it leaves out
Opteno’s dashboard net profit is revenue − cost of goods − ad spend. It does not subtract payment fees or shipping. Contribution margin is the number for the calculator and for your targets; the dashboard is for seeing which products sit below the line over rolling 7, 14, 30 and 60-day windows.
The dashboard’s inputs: revenue is gross sales minus refunds; cost of goods is the sum of each sold variant’s cost-per-item, or a store-wide percentage if you set one; ad spend is converted at each day’s own exchange rate. POAS is (revenue − cost of goods) ÷ ad spend on the same basis, so its 1.00× line means the goods and the advertising are paid for — not the shipping and fees.
So read the dashboard with contribution margin in mind: a product near zero net profit is likely losing money once payment fees and any shipping you bear are counted. Opteno’s gross margin figure is a separate catalogue figure, taken from the lowest-margin variant with a cost, not a period figure.
Questions
What is the difference between contribution margin and gross margin?
Gross margin subtracts only the unit cost from the price. Contribution margin also subtracts the shipping you bear and payment fees, and is usually adjusted for returns. In this page’s example that is 66.4% against 46.6% — the difference between a 1.51× and a 2.15× break-even ROAS.
Should contribution margin include VAT?
No. Work from the price excluding VAT and apply the payment fee percentage to that price. €49.95 at 20% VAT is €41.63; using the gross figure counts a fifth more revenue than you keep and makes every margin look better than it is.
Does the returns adjustment assume the item is resold?
Multiplying by (1 − return rate) treats a returned order as fully refunded and earning nothing, which is the same as losing that order’s contribution. It does not add the unit cost, outbound shipping or return postage you may also lose. If returned goods are written off, subtract the return rate × those costs as well; in the example that raises break-even from 2.15× to 2.26×.
My ROAS is already net of refunds. Do I still apply the return rate?
No, or you count returns twice. 1 ÷ returns-adjusted margin is the break-even for ROAS on gross revenue, as Google reports it. Against a ROAS whose revenue already has refunds taken off and excludes VAT, compare with 1 ÷ contribution margin before returns: 2.04× in the example. Opteno’s revenue is gross sales − refunds by default, so check it is on the same VAT basis before comparing.
Does Opteno calculate contribution margin?
The free break-even ROAS calculator shows contribution per order, plus the break-even and target ROAS built on the returns-adjusted margin, one product at a time, in your browser and without an email address. The dashboard reports net profit as revenue − cost of goods − ad spend and POAS as (revenue − cost of goods) ÷ ad spend; neither subtracts payment fees or shipping, so keep contribution margin for setting targets.
What return rate should I use?
Each product’s own, from your refund history, over a period long enough for returns to have arrived. A store-wide average hides the difference between categories, and one number applied everywhere puts the same wrong target on every product.
See which products are losing you money
Connect Shopify and Google Ads in under five minutes. From $14.99 a month, cancel whenever you want, and no change to your store or your campaigns without your approval.