Meta ROAS vs Delivered ROAS: Why Your Ads Look Profitable but Your Bank Disagrees

Quick answer

Meta ROAS counts orders the moment they are placed, including some that never existed and parcels that come back. Delivered ROAS divides the revenue from parcels actually delivered by your total ad spend. For COD brands in Pakistan, delivered ROAS is the number that matches your bank, and it is usually well below what Ads Manager shows.

Key takeaways
  • Ads Manager records a purchase when the order is placed; it never hears that the parcel was refused.
  • Delivered revenue = store revenue × (1 − RTO rate). Delivered ROAS = delivered revenue ÷ total ad spend.
  • Example: Rs 24 lakh booked on Rs 9 lakh spend is 2.67x on Meta, but with 20% returns it is 2.13x delivered.
  • The 15-minute check: compare Meta purchases (A), store orders (B) and delivered parcels (C). Most accounts show A > B > C.
  • Delivered ROAS still isn't profit: product, courier and COD fees come out after it.

You open Ads Manager and see 4.0x ROAS. You feel good, so you spend more. Then the month ends, the courier settles, and the money in the bank doesn’t look anything like 4x.

Nobody lied to you, exactly. The 4.0x just answers a different question from the one you’re asking. This article explains what Meta’s ROAS really counts, why it runs especially high for COD brands in Pakistan, and how to work out the number that matches your bank.

What Meta’s ROAS actually counts

ROAS is revenue divided by ad spend. The catch is in the word “revenue”. The purchase value Meta reports can include three things that never turned into cash for you.

1. People who never clicked your ad

By default, Meta credits a sale to your ad if someone clicked it in the last 7 days or just saw it in the last day. That second part is called view-through.

Imagine Bilal scrolls past your ad without stopping. Six hours later he opens your site directly and buys. Meta counts that as its sale. Did the ad cause it? Maybe he half-noticed it. Maybe he was going to buy anyway. Meta can’t tell, and neither can anyone else.

In the accounts we audit, view-through and engage-through usually make up 15–30% of reported purchases. You can see your own share: in Ads Manager, open Columns → Compare Attribution Settings and compare click-only with the default.

Look at the comparison, but don’t change the attribution setting on live campaigns. Narrowing it reduces the signal Meta optimises on and can push ad sets back into the learning phase.

2. Orders that were placed, but never paid for

This is the big one for COD. Meta records a purchase the moment the order is placed. It never hears that the parcel was refused at the door three days later.

With roughly one in five COD parcels returned in Pakistan, that means about 20% of the revenue on your dashboard was never collected. You paid for the ad, the packing and the courier both ways on every one of those orders.

3. Sales that would have happened anyway

Repeat customers, people who came from Instagram organic or WhatsApp, and people who already knew your brand. Some of them get counted as ad sales too.

The three-number check (15 minutes)

You don’t need any tools for this. Pick the last 30 days, ending at least a week ago so most parcels have arrived or come back.

  1. A: total purchases in Ads Manager
  2. B: total orders in Shopify or WooCommerce for the same dates
  3. C: parcels the courier actually delivered in the same dates

Then:

  • A − B is over-counting: purchases Meta claims that don’t even exist as orders.
  • B − C is your returns: orders that existed but never became cash.
  • C ÷ A is how efficient your ad account really is.

Almost every Pakistani account we look at shows A > B > C. Most owners have never seen those three numbers side by side.

🚨 If Meta’s reported revenue is higher than your store’s total revenue from every source, something is broken: usually a purchase event firing twice. Fix the tracking before you trust any number.

How to work out your delivered ROAS

Here’s the number that involves no guessing:

Delivered revenue  = Store revenue × (1 − RTO rate)
Delivered ROAS     = Delivered revenue ÷ Total ad spend (all platforms)

Use total store revenue and total ad spend, not Meta’s attributed figures. Then you’re not relying on anyone’s attribution rules at all. It’s what landed in your bank, divided by what you spent.

A quick example. Your store booked Rs 24 lakh this month on Rs 9 lakh of ad spend. That’s 2.67x. Your courier report shows 20% of parcels came back, so delivered revenue is Rs 19.2 lakh. Delivered ROAS is 2.13x.

The gap between 2.67x and 2.13x isn’t a rounding error. For a lot of brands it’s the gap between profit and loss.

Delivered ROAS still isn’t profit

Delivered ROAS tells you how much revenue arrived. Whether that’s enough depends on your margin: product cost, packaging, courier both ways, COD fees. That’s where break-even ROAS comes in: the ROAS below which every order loses money. We’ve written a separate guide on calculating it, with a calculator you can fill in with your own numbers.

What to do with this

  1. Run the three-number check this week. It takes 15 minutes.
  2. Report delivered ROAS weekly, next to Meta’s number, so you can see the gap move.
  3. Judge campaigns and agencies on delivered numbers. Anyone can make Meta’s ROAS look good. Delivered revenue comes from your courier and your bank, so it can’t be dressed up.

That last point is why we report delivered numbers to every client. If you’d like us to run this check on your account, the free profit-leak check is below.

Frequently asked questions

What is delivered ROAS?

Delivered ROAS is the revenue from orders that were actually delivered and paid for, divided by your total ad spend. It leaves out returned and fake orders, so it reflects the money that reaches your bank.

Why is my Meta ROAS higher than my real results?

Meta counts a purchase when the order is placed, uses its own attribution windows, and can double-count if the pixel fires twice. It never learns about refused COD parcels, so its ROAS is almost always higher than delivered results.

How do I calculate delivered ROAS?

Take your total store revenue for a period, multiply it by one minus your return rate to get delivered revenue, and divide by your total ad spend across all platforms for the same period.

What if Meta reports more revenue than my whole store made?

Then tracking is broken, usually a purchase event firing twice. Fix the pixel and Conversions API set-up before trusting any number in Ads Manager.

Find out where your money is leaking

Send us your brand and we'll record a short video on your own ad account: what Meta over-counts, where returns cost you, and the first thing we'd fix. Free, with view-only access.

Tayyab Jamil, Founder, AdgroveTayyab Jamil founded Adgrove in 2022 and leads every profit-leak diagnostic himself. He works inside the Meta ad accounts, courier reports and stores of Pakistani COD brands. Profile →