The Hidden Costs Eating Your ROAS: Mapping Every Variable Cost From MSRP to Doorstep

I'll admit something that probably costs founders more money than any single ad decision they make. Most of the breakeven ROAS numbers I get quoted are fiction.

Not because the founder is sloppy. Because they did the obvious sum. They took the sale price, knocked off what the factory charges, and called the rest margin. Then they handed that margin to me and said "so we're profitable above a 2 ROAS, right?"

In reality, no. There's a whole stack of costs sitting between the price on your site and the box landing on a doorstep, and almost none of them show up in that quick mental sum. Each one is small. Together they quietly eat a third of the margin you thought you had, which means the real ROAS you need to break even is a fair bit higher than the one you've been buying against.

So here's the exercise I run with every new account. We walk a single unit from the factory floor to the customer's front step and we name every cost it picks up on the way. Here's my take on each, with the rough ranges I see and how much each one moves your true breakeven.

Let's use one product to keep the maths honest. A homewares item, sells for $100, and you pay the factory $30 to make it. Quick sum says 70% margin. Watch what's left by the end.

1. The freight to get stock into your warehouse

Your $30 cost of goods is the factory gate price. It is not the cost of having that stock sitting on your shelf ready to sell.

You've still got to ship it from the manufacturer to your warehouse or 3PL, and on a per-unit basis that's real money, especially on anything heavy or bulky. Call it $2 to $4 a unit on a product like this once you spread the container cost across the run.

People skip this because it's paid upfront in big lumps, so it doesn't feel like a per-order cost. It is one. Spread it across units and add it to your landed cost. We're at $33 in real product cost now, not $30.

2. Break-bulk and receiving

When that pallet arrives, your 3PL usually charges to take it apart and put your units onto the shelf. This is the break-bulk or receiving fee and it's easy to forget because it happens once, in the background, before a single order ships.

Roughly a dollar a unit on most goods. Small on its own. But it's the first of several "the warehouse touched it" fees, and they add up faster than founders expect.

3. Payment processing

Someone buys the product. The card processor or PayPal takes their cut of the order, usually around 2% to 3% depending on your mix of cards, wallets and buy-now-pay-later.

On a $100 order that's $2 to $3 gone. Here's the bit that catches people out. Buy-now-pay-later providers often charge more like 5% to 6%, so if a big slice of your orders go through one of those, your blended processing cost is higher than the 2% you've got in your head.

4. The pick fee

Now the warehouse has to physically pick your item off the shelf and get it ready to pack. That's another per-order charge, usually around a dollar a unit, sometimes more if the order has multiple lines.

I call this and the receiving fee the "handling tax". Nobody notices a dollar here and a dollar there. But on a $100 order with thin-ish margins, two dollars of handling is two full points of margin you're not counting.

5. Pick-pack and the box itself

Then it gets packed. Boxes, void fill, tape, the labour to assemble it all. Some 3PLs roll this into the pick fee, some bill it separately, and your own branded packaging sits on top.

Budget $1 to $3 a unit depending on how nice your unboxing is. And this is the one place I'll gently push back on founders. That gorgeous custom mailer with the tissue and the sticker feels like brand. It's also a cost that has to clear the same margin bar as everything else. Lovely packaging is fine. Just count it.

6. The outbound shipping label

Now you actually pay the carrier to move the box. This is the big one, and it scales with weight and distance.

On a heavier homewares item, realistically $8 to $12 a parcel. Sometimes the customer covers it, sometimes you eat it to keep conversion up with free shipping. Either way you need to know which, because "free shipping" is never free. It's a cost you've chosen to carry, and it comes straight off this unit.

I'll call it $10 here. This single line does more damage to your breakeven than any other on the list.

7. Platform and app fees

There's a thin layer of cost that rides on every transaction that isn't your processor. Your Shopify plan takes a slice, any revenue-share apps take theirs, and depending on your setup there can be more skimming off the top with each order.

Call it half a percent to 2% blended. Small per order, but it's a percentage of revenue, so it grows exactly as you do. Worth knowing rather than ignoring.

8. Returns

This is the one that quietly does the most damage, because it doesn't hit the order you're looking at. It hits the average.

Say you run a 15% return rate. That means for every hundred units sold, fifteen come back. You're often refunding the full $100, eating the return shipping, and the unit may not even be resellable. Spread that pain across all your orders and it's a real haircut on every single sale, not just the returned ones.

On a 15% rate, I'd model something like $10 to $15 of return cost averaged across each unit sold, depending on whether you can restock and who pays return postage. It's the single most underestimated number in this whole list. Founders quote me their gross return rate like it's a customer-service stat. It's a margin stat.

What's actually left

Let's add it up on our $100 homewares unit.

  • Cost of goods: $30
  • Inbound freight: ~$3
  • Receiving: ~$1
  • Payment processing: ~$3
  • Pick fee: ~$1
  • Pick-pack and packaging: ~$2
  • Outbound shipping: ~$10
  • Platform and app fees: ~$1
  • Returns, averaged: ~$12

Add the costs and you're at roughly $63 gone before you've spent a cent on ads. That leaves about $37 of true margin on a $100 sale. Not the $70 the quick sum promised. The real figure is barely half of it.

That $37 is the only money you have to go and buy a customer with. I call it the margin you've actually got to spend, because everything above it is already committed before Meta enters the picture.

Turning that into a real CPA ceiling

Here's where it pays off. Your breakeven CPA is simply the margin you have left, minus whatever profit you want to keep per order.

If you're happy to break even purely to acquire, your ceiling is that full $37. Spend $37 to land a customer and you net zero on the first order. But almost nobody wants to break even on order one, so pick a net target. Say you want $15 of profit per new customer.

True margin of $37, minus a $15 net target, gives you a CPA ceiling of $22.

Now flip it into the ROAS language everyone actually buys against. A $22 CPA on a $100 order is a breakeven-with-profit ROAS of about 4.5. Compare that to the "2 ROAS and we're fine" the founder started with. The gap between 2 and 4.5 is the difference between thinking you're scaling profitably and slowly bleeding out.

This is exactly why I won't set a target ROAS off a margin number someone worked out in their head. The number's almost always too generous, the real CPA ceiling is lower than they think, and they end up scaling spend into orders that lose money on contribution while the dashboard looks green.

Where to from here

Run the walk yourself. Take your best-selling SKU, line up every cost it collects from the factory to the doorstep, and see what's genuinely left to spend on acquisition. Most founders are quietly shocked by how much smaller that number is than the margin they've been quoting.

If you'd rather not do it alone, this is one of the first things we map in a Signal/Noise Audit. We rebuild your real per-unit margin from the ground up, then set CPA and ROAS targets off that, not off a round number that feels about right. It's a quick way to find out whether the targets you're scaling against are real, or whether you've been buying customers at a loss without knowing it.

Ethan To
CEO @ Pigeon Digital