All notesAnalysis7 min read

Your COD Store's ROAS Is Lying. Here's the Real Math

اقرأ النسخة العربية
Short answer

Reported ROAS counts orders at checkout, not orders delivered and paid. In cash-on-delivery markets roughly 25% of orders are refused or returned, and rejected orders still cost outbound shipping. Your real ROAS is reported ROAS multiplied by your delivery rate, minus COGS, two-way shipping, and collection fees. A store showing 3.0 ROAS at a 75% delivery rate is effectively at 2.25 — often below break-even. Track cost per delivered order instead.

Key takeaways
  • 01Real ROAS = reported ROAS × delivery rate. Start every analysis there.
  • 02Rejected orders don't return zero — they return negative, via outbound shipping.
  • 03Calculate break-even per product, never for the store as a whole.
  • 04Cost per delivered order is the only metric tied to cash in the bank.
  • 05Reconcile three sources: Meta spend, store orders, courier delivery status.

If you sell cash on delivery and you make decisions from the ROAS column in Ads Manager, you are optimising against a number that isn't yours.

Meta isn't wrong. Meta is measuring something different from what you need. It counts the order the moment it is placed. You get paid when the order is delivered and collected. A meaningful share of value disappears between those two events.

Gap one: delivery rate

Across Egyptian and Gulf COD accounts, cancellation and return rates run between 15% and 40% depending on category, price point, and creative quality. The common average sits near 25%.

So a reported 3.0 ROAS is really 2.25. In a category with a 60% delivery rate, it's 1.8.

Gap two: return shipping

A refused order doesn't return zero. It returns negative. The courier bills the outbound leg regardless, and in many contracts the return leg as well.

That means for every 100 orders placed, roughly 25 cost you full shipping with no revenue attached. This line item appears in no ad report and in no default Shopify report.

Gap three: collection fees

Couriers charge 1–3% on collected cash. Small in month one, material once spend reaches the hundreds of thousands.

Working the real break-even

Take a product selling at 1,000 EGP:

LineAmount (EGP)
Selling price1,000
COGS-350
Outbound shipping-80
Collection fee (2%)-20
Contribution before ads550

That looks healthy — until you add the refused orders. At a 75% delivery rate, every four placed orders produce three deliveries and one 80 EGP shipping write-off.

So: (3 × 550) − 80 = 1,570 EGP across four placed orders, which is 393 EGP of contribution per placed order. That is your ceiling on cost per placed order. Anything above it loses money, no matter how good Ads Manager looks.

25%
Typical orders that never land
393 EGP
True break-even CPA in this example
2.55
Reported ROAS needed to break even

The metric to run on

Replace ROAS with cost per delivered order. It is the only number that connects ad spend to money actually collected.

Producing it requires three sources in one place: spend from Meta, orders from the store, and delivery status from the courier. Every client I work with gets a dashboard that joins those three and refreshes every 30 minutes, so decisions are made on delivered orders rather than placed ones.

Do this week

  1. Pull a 90-day delivery-rate report from your courier, split by product.
  2. Calculate break-even per product, not per store.
  3. Compare Meta's order count to the store's for the same day.
  4. Move optimisation to a 7-day click attribution window.
  5. Start reporting cost per delivered order as the headline metric.

The short version

ROAS isn't a wrong number — it's a partial one, and in COD the missing part is about a third of the picture. Brands that scale steadily aren't working with better numbers. They're working with honest ones.

Frequently asked

Why is my Shopify revenue lower than my Meta reported revenue?
Meta counts revenue at checkout while your store's paid revenue reflects delivered and collected orders. In cash-on-delivery markets around 25% of placed orders are cancelled or returned, so reported revenue overstates collected revenue by a similar margin.
How do I calculate break-even ROAS for a COD store?
Subtract COGS, outbound shipping, and collection fees from the selling price to get contribution, multiply by your delivery rate, then subtract the shipping cost lost on refused orders. Divide the selling price by the resulting contribution per placed order to get your break-even ROAS.
What is a normal delivery rate for COD ecommerce in Egypt?
Between 60% and 85% depending on category, price point, and creative quality, with roughly 75% being common. Products consistently delivering below 60% usually need to be discontinued rather than optimised.
What should I track instead of ROAS?
Cost per delivered order. It ties ad spend directly to collected cash and requires joining three data sources: ad platform spend, store orders, and courier delivery status.
About the author
Seif Gomaa

Seif Gomaa is a performance media buyer based in Cairo. He runs Meta, Google, TikTok and Snapchat accounts for 40+ Egyptian and Arab ecommerce brands and has managed over 15M+ EGP in ad spend. Every client gets a live dashboard that refreshes every 30 minutes.

Want this run on your account?

Tell me what your brand sells and how the last two months performed. I answer within 24 hours.

Read next
WhatsApp