Your P&L Is Lying About Your True Cost Per Order (and It's Wrecking Your CAC Targets)

It's 11pm, the Shopify app says you did A$92k last month, and the P&L your bookkeeper exported says you cleared barely anything. You're sitting there with two screens open, both apparently about the same business, and they can't agree on whether you had a good month. So you do what most founders do. You trust the dashboard, ignore the spreadsheet, and tell your media buyer to keep spending up to the CAC number you've been carrying in your head for a year.

That number is almost certainly wrong. And the spreadsheet, annoying as it is, is closer to the truth than the app.

I want to pull a standard ecommerce P&L apart and rebuild it, because the way most of them are laid out actively hides the one figure you need before you touch a Meta account: your true cost per order. Get that wrong and every CAC target downstream is built on sand.

The four numbers that all get called "revenue"

Here's the thing nobody warns you about. "Revenue" isn't one number. It's at least four, and which one you're looking at changes the story completely.

Shopify trained all of us to glance at the dashboard and read "total sales", because that's the big number on the home screen. But there's a stack of definitions sitting above and below it, and a marketer who can't see all of them is flying blind.

  • Gross sales - units sold times your list price. The headline before anything comes off.
  • Order revenue - gross sales minus discounts. This is where your promo habit shows up.
  • Total sales - order revenue minus returns. This is the Shopify number you've anchored to.
  • Net sales - total sales minus taxes and shipping collected. Closer to what actually belongs to the business.

I want all four laid out in a column, every month, because the gaps between them are the story. The gap between gross and order revenue is your discount rate. The gap between order revenue and total sales is your return rate. I've seen brands run a ~$80 AOV and quietly give away 22% in discounts without ever clocking it, because the only number they ever looked at was the one after the discount had already been taken. Discounting is the silent profit-killer in ecom, and a P&L that starts at "total sales" hides the body.

So step one of the rebuild: never let your income line be a single row called "sales". Make it four rows. You'll learn more about your margin in that one change than from a month of CPM tweaking.

The costs hiding below the line

Now the part that actually wrecks your CAC math.

Open a typical P&L and you'll see income at the top, then cost of goods sold, then a line called gross profit. Everything under that line gets dumped into one bucket your accountant labels SG&A or operating expenses. Above the line: "the cost of the product". Below the line: "running the business". Clean, tidy, and wrong for our purposes.

Because three of your biggest variable costs are sitting below that line, mixed in with rent and software and salaries:

  • Payment processing. Your Shopify Payments or Stripe fee is a couple of percent of every single order. It scales with revenue. It is not a fixed cost. But it almost always lands in SG&A as "bank charges".
  • Shipping and fulfilment. The cost of actually getting the box to the customer. Variable, per-order, and routinely buried 60 rows down the P&L as a separate "shipping" line that nobody connects back to cost per order.
  • Marketplace fees. If you sell any volume through Amazon, those referral and FBA fees are a variable cost of every Amazon order. They get parked below the line too.

Here's why that matters. Above the line you've got product cost and maybe freight-in. So your "gross margin" looks healthy. But the moment you add back the processing, the forward shipping, and the marketplace cut, your real cost of delivering one order is meaningfully higher than the COGS line suggests.

Common Thread Collective have a tidy name for fixing this. They call it cost of delivery: every variable cost involved in getting the product from your manufacturer into your customer's hands. Product cost, payment fees, freight and receiving, shipping and fulfilment. All of it, pulled above the line into one honest number.

Let me put rough figures on it so it's not abstract. Say you sell a homewares product at an A$85 AOV. Your landed product cost is A$25. On the standard P&L that's your COGS, so it looks like you keep A$60 to play with. But payment processing is ~$2.80, forward shipping and fulfilment runs ~$11, and freight-in adds another ~$3 per unit once you spread the inbound across the order. Add those in and your true cost of delivery is closer to A$42, not A$25.

That's not a rounding error. That's a third of your gross profit that was hiding below the line, and you were setting acquisition targets as if it didn't exist.

The row your P&L is missing: contribution margin

Once cost of delivery sits above the line where it belongs, there's one more row I want on every P&L, and most don't have it.

After revenue, after cost of delivery, after ad spend, you get contribution margin. Think of it as the dollars left from an order to cover all your fixed costs - the rent, the team, the software - before any of those fixed costs are touched. It's the number that tells you whether each order is actually feeding the business or just creating motion.

Most P&Ls jump straight from gross profit to net profit and never show you this. So founders set CAC targets off gross margin, which ignores ad spend and the buried variable costs, and they wonder why a "profitable" month on the dashboard turns into nothing in the bank.

Here's the order I want every line to run in:

  1. Revenue (all four definitions)
  2. Cost of delivery (every variable cost, above the line)
  3. Gross profit
  4. Ad spend (platform dollars only)
  5. Contribution margin
  6. Operating expenses (the genuinely fixed stuff)
  7. Net profit

Lay it out like that and the question "where did my money go this month" answers itself. You can see at a glance whether the problem is margin, ad spend, or a bloated fixed-cost base. Three different problems, three different fixes, and you can't tell them apart on a standard export.

What this does to your allowable CAC

Now the payoff, because this is the bit that touches the ad account.

Allowable CAC isn't a number you pick because it feels right or because a competitor mentioned theirs on a podcast. It falls out of the math above. It's the contribution you have per order before ad spend, set against the profit you're willing to give up to acquire a customer.

Take the homewares example. A$85 AOV, true cost of delivery of A$42. That leaves A$43 of contribution per order before you spend a cent on Meta. If you're acquiring at break-even on the first order to win the customer for later, your allowable CAC is around A$43, and your target ROAS is roughly 2.0x.

But run the lazy version, the one off the COGS line. A$85 minus the A$25 product cost reads as A$60 of "margin". Set your allowable CAC off that and you'll happily let the account spend up to A$60 to land an order, targeting a ~1.4x ROAS, thinking you're fine.

That ~$17 gap per order is the difference between a brand that compounds and one that scales itself broke. Spend to a CAC of A$60 on orders that only throw off A$43 of real contribution, and every new customer is quietly costing you A$17. The faster you scale, the faster you bleed, and the dashboard says total sales are up the whole time. Growth and going backwards look identical until the cash runs out.

This is exactly why I won't set a CAC target or a ROAS goal off a raw P&L export. The document has to be rebuilt first. Revenue split into its four parts, every variable cost lifted above the line into cost of delivery, contribution margin made its own row. Only then does the allowable CAC mean anything, because only then is it built on what an order actually keeps.

Where to from here

Pull your last month's P&L and try one thing tonight: find your payment processing, your shipping, and any marketplace fees, and add them to your product cost. That's your real cost of delivery per order. Then divide it into your AOV and see how much contribution you've genuinely got to spend on acquisition.

It's usually a smaller number than people expect, and it's almost always different to the CAC their account is running to.

If you'd like a fresh pair of eyes to run that rebuild properly - revenue definitions, costs lifted above the line, contribution margin worked out, and the corrected allowable CAC that falls out of it - that's the first thing we map in a Signal/Noise Audit, before anyone touches a single campaign. Where does your number land once the buried costs are back where they belong?

Ethan To
CEO @ Pigeon Digital