KPIHelm — Your KPIs. Our insight. Your future.
All articles

Your ROAS looks healthy. So why is there no money at the end of the month?

ROAS answers exactly one question: how much revenue an ad brought back for what you spent on it. It says nothing about how much of that revenue you kept. Two stores can run the same campaign at the same 3x ROAS and finish the month in opposite places, because everything that decides profit — what the goods cost, what shipping costs, what comes back as a return — happens where the ad platform cannot see it. This guide works out the ROAS your store actually needs, and what to check when sales look active and the bank balance doesn't move. If the problem is that ROAS itself fell, that is a different diagnosis — start with Your ROAS dropped on Shopify.

Step 1: Work out what one order really leaves you

Take a typical order and subtract everything it drags along with it:

  • What the goods cost you — the price you actually paid your supplier, not the list price.
  • Payment and platform fees — a few percent of every order, easy to forget because nobody sends you an invoice for them.
  • Shipping you cover — including whatever your free-shipping threshold quietly absorbs.
  • Packaging and fulfilment — small per order, not small per month.
  • Returns and refunds — spread last month's returns across last month's orders; every order carries a share of them, not just the ones that came back.
  • The discount actually given — not the price on the product page.

What remains is what an order leaves you before a single unit of ad spend. Everything below depends on this number, so it is worth getting roughly right rather than precisely wrong: an estimate built from last month's real figures beats a careful calculation built on list prices.

Step 2: Turn that into your own break-even ROAS

Say 40 out of every 100 in sales stays with you after those costs. Then an ad has to bring back 2.50 in sales for every 1 it spends just to return your money. Below 2.5x you are buying revenue at a loss. Above it, the difference is yours.

That number belongs to your store and nobody else's. A "good ROAS" quoted in a case study or an industry benchmark is meaningless without the margin standing behind it — at 60 left in every 100, break-even sits at about 1.7x and a 2x campaign is comfortable; at 25 left, break-even is 4x and that same 2x campaign is losing money on every order it brings in.

Two habits follow. Know your number before you judge a campaign, so the verdict is arithmetic instead of instinct. And recalculate it whenever costs move: a supplier price rise, a new shipping rate, a change to your discount policy all shift it, and none of them will announce themselves in the ads dashboard.

Step 3: Why a healthy ROAS can still end the month in the red

Returns arrive after the report does. The sale counts on the day it happens; the refund lands one to three weeks later, in a different reporting period. That makes a campaign's ROAS look best exactly when it is youngest, and it means a category with a high return rate can beat a low-return one on the dashboard while losing to it in the bank. Where your data allows it, look at returns per product and per campaign, not only as a store-wide average.

Product mix moves profit without moving ROAS. Same spend, same ratio, different products — a completely different result. Ad delivery pushes toward whatever converts most easily, and the easiest sale is often the cheapest item with the thinnest margin. A rising ROAS driven by a shift toward low-margin products is not good news.

Discounts and free-shipping thresholds shave margin silently. They change what an order leaves you without changing anything the ad platform reports. Step 4 is about the size of that effect, which is usually underestimated.

Fixed costs sit outside the ratio entirely. Subscriptions, apps, salaries, rent — ROAS does not know they exist. A campaign can clear its own break-even and still leave the store short, because break-even ROAS measures whether an ad paid for itself, not whether the business did.

Buying the first order at a loss is a strategy only if it was a decision. It is a legitimate one when customers come back and you know your repeat rate. Discovering it at month end, without that number, is not a strategy — it is a leak with a story attached.

Step 4: Check the price before you set it, not after the month closes

Take that same item: it sells at 100 and leaves you 40, so break-even is 2.5x. Now run it at 20% off. Revenue per order drops to 80, the costs behind it barely move, and what the order leaves you falls to 20. Break-even ROAS is now 4x.

Read that again, because the intuition is wrong: a 20% discount did not cost 20% of the margin, it cost half of it — and it raised the bar the campaign has to clear by 60%. (Only the fees that scale with price soften this, and they are small.) The same arithmetic decides a bundle, a free-shipping threshold, a marketplace fee or a new product's price. Working it out before the price goes live takes a few minutes. Finding it afterwards takes the month.

Step 5: Read profit at two levels — the store, then the campaign

Ask the store-level question first: after everything, including the costs no campaign is responsible for, did the month leave money? Then ask the campaign- and product-level question: which ones cleared their own break-even, and which were carried by the rest.

You need both, because each one hides what the other shows. A profitable month can conceal two campaigns funding a third. A weak month can conceal one product that is working and deserves more budget rather than less. When the two answers disagree, believe them both — they are measuring different things.

Then act the way any diagnosis should end: rank what you found by the size of the leak, fix the biggest one on its own, and judge the result by how much new data has accumulated rather than by how many days have passed.

Next in this series: if the month does leave money and you still suspect one campaign is being carried by another, the next number to stop trusting is the average across platforms. That is the subject of Your blended ROAS looks fine. One of your channels is losing money..


KPIHelm covers both halves of this. Check a single price before you set it, or read a whole month after it closes — Price Check and Period Profit put what an order leaves you next to the ad performance that produced it, instead of leaving it spread across a spreadsheet, a supplier invoice and three dashboards. Install it free on the Shopify App Store or see a sample report.