Strategy

Facebook Ads for COD Brands in India: RTO, Fake Orders and True CPA

Run Meta ads for a cash-on-delivery brand in India: cut RTO and fake orders, optimise for confirmed or prepaid orders, verify COD and calculate your true CPA.

Updated 8 min read Fly ROAS editorial team
A delivery rider standing beside his scooter hands a plain brown parcel to a smiling woman at the door of an Indian apartment building in warm evening light

Key takeaways

  • Ads Manager counts a purchase when a COD order is placed, so cancelled, fake and returned orders still sit inside your reported CPA and ROAS.
  • Judge Meta ads on cost per delivered order, including the shipping you lose on RTO, not on cost per purchase.
  • Verify COD orders before dispatch with OTP, WhatsApp or call confirmation, address checks and pincode rules.
  • Once you have enough volume, send a confirmed or prepaid order event through the Conversions API and optimise for it, so Meta learns from real buyers.
  • Nudge shoppers to prepaid with a small incentive, a COD fee or partial COD, and test the effect on both conversion rate and delivered orders.

Facebook ads work for cash-on-delivery brands in India when you measure and optimise for delivered orders, not placed ones. Ads Manager counts a purchase the moment a COD order is placed, so cancelled, fake and returned (RTO) orders still flatter your results. Verify COD orders before dispatch, judge campaigns on cost per delivered order, and once volume allows, optimise Meta for confirmed or prepaid orders.

Why do COD brands need a different approach?

Cash on delivery is how many Indian shoppers prefer to buy from a brand they don't know yet. Removing it often costs more first orders than it saves. But COD creates three problems that Meta's reporting can't see.

  1. Cancellations before dispatch. Shoppers change their minds, order twice by mistake or don't answer confirmation calls.
  2. Fake or low-intent orders. Pranks, competitors, made-up addresses and impulse orders the buyer never meant to accept.
  3. RTO (return to origin). The parcel is shipped, then refused or undeliverable, and comes back. You pay shipping both ways and the ad cost is already spent.

Ads Manager counts a Purchase when the order is placed. It doesn't know which of those orders later failed. A COD-heavy store can look profitable in Ads Manager while losing money in the bank.

How do you calculate your true CPA for COD?

Work backwards from the orders that actually reach a customer and pay.

True CPA = (ad spend + shipping lost on RTO) ÷ delivered orders

Worked example

These numbers are hypothetical, to show the method. Replace them with your own from your store and courier reports.

  • Meta ad spend for the month: ₹1,00,000
  • Purchases in Ads Manager: 400, so reported CPA is ₹250
  • Split: 240 COD orders and 160 prepaid orders
  • COD orders cancelled or rejected at confirmation: 24 (10%), never shipped
  • COD orders shipped: 216, of which 54 (25%) come back as RTO
  • Prepaid orders shipped: 160, of which 5 come back
  • Delivered orders: 162 COD + 155 prepaid = 317
  • Shipping lost on RTO, at ₹120 per returned parcel for both legs: 59 × ₹120 = ₹7,080

True CPA = (₹1,00,000 + ₹7,080) ÷ 317 ≈ ₹338, against the ₹250 Ads Manager shows. That's about 35% higher. If your break-even CPA is ₹300, this campaign looks profitable in Ads Manager and loses money in reality.

Break-even with COD and RTO included

Your break-even CPA is the contribution margin a delivered order leaves before ad spend. For COD brands, include the costs that only COD orders carry: COD handling fees from the courier or payment partner, the share of RTO shipping each delivered order must cover, and any packaging and product you can't resell after an RTO.

Our guide to calculating break-even ROAS walks through the full formula, and the break-even ROAS calculator does the arithmetic. Run it with delivered-order numbers, not placed-order numbers.

How do you cut RTO and fake orders?

The best lever depends on where your losses come from. Most COD brands combine several of these.

Lever How it works Trade-off
OTP at checkout The shopper confirms their phone number with a one-time code Adds a step, blocks typo and fake numbers
WhatsApp or call confirmation Each COD order is confirmed before dispatch, and unconfirmed orders are held Needs a tool or a person, delays dispatch slightly
Address quality checks Flag incomplete addresses, missing landmarks and mismatched pincodes Some genuine orders need a follow-up call
Pincode rules Block unserviceable pincodes, restrict COD in pincodes with very high RTO Loses some genuine buyers in those areas
Repeat-refuser list Block COD for phone numbers or addresses with past refusals Needs order history and clear rules
Prepaid incentive A small discount, free shipping or a free sample for paying online Costs margin on orders that would have prepaid anyway
COD fee A modest charge for COD, shown clearly before checkout Some shoppers drop off
Partial COD A small advance by UPI, the balance on delivery Adds friction, but filters out the least serious orders
COD limit on large orders Prepaid only above a set order value Protects the costliest RTOs
Fast NDR follow-up Act on non-delivery reports within a day: call, reschedule, correct the address Ongoing operations effort

Fix the ad as well as the checkout

Some RTO starts in the ad. Shoppers refuse parcels when what arrives doesn't match what they expected.

  • Show the price in the ad and on the first screen of the landing page, so nobody orders without knowing it.
  • Show the real product, its size and what's in the box. Our guide to product photos for ads covers how.
  • State delivery times honestly. A parcel that arrives a week after an impulse order is more likely to be refused.
  • Avoid offers that attract only bargain hunters, such as very deep discounts on a first order, if they produce high RTO.
  • Watch region-level results. If a few states or cities have far higher RTO, exclude them or restrict COD there.

Should you optimise for Purchase or for confirmed orders?

Meta's delivery system learns from the event you optimise for. If that event is every placed order, it learns to find people who place orders, including people who refuse them. If it's confirmed or prepaid orders, it learns to find people who follow through.

Optimisation event Volume Signal quality When it fits
Purchase at order placement Highest Includes fake and refused orders New accounts, low volume, low RTO
Confirmed order (COD confirmed + prepaid) Medium Removes most fake and cancelled orders Steady volume, confirmation in place
Prepaid purchase only Lowest Strongest intent High RTO, enough prepaid volume
Purchase with adjusted value Same as Purchase Better, if values reflect expected delivery Value optimisation with reliable data

How to send a confirmed order event

  1. Set up order confirmation so each COD order gets a confirmed or rejected status within a few hours.
  2. Send a custom event, such as ConfirmedPurchase, from your server to Meta through the Conversions API when an order is confirmed, and for every prepaid order at payment. Include the same customer details (hashed email and phone) and order value as the original purchase, so Meta can match it to the person who saw the ad.
  3. Send it quickly. Meta's Conversions API only accepts website events up to seven days after they happened, and attribution windows are short, so confirm and send within hours, not days. This is why a delivered-order event is usually too late to optimise for, as delivery can take a week.
  4. Create a custom conversion from the event in Events Manager, or select it directly as the conversion event in a new ad set.
  5. Check volume. Meta generally needs around 50 optimisation events a week per ad set to exit the learning phase. If confirmed orders fall well short, keep optimising for Purchase and report on confirmed orders until volume grows.

Many brands run both for a while: the existing Purchase-optimised campaign, and a new campaign optimising for confirmed orders, compared on true CPA over a few weeks.

Value adjustments

If you use value optimisation, some brands send a lower purchase value for COD orders than for prepaid ones, reflecting the share of COD orders that typically get delivered. Meta then learns that prepaid buyers are worth more. Only do this if your delivery rates are stable and well measured, and keep the method consistent, because changing values changes what Meta chases.

How should you report COD performance?

Ads Manager alone can't tell you whether a COD campaign is profitable. Build a simple weekly table that joins Meta spend with your store and courier data.

Metric Source Why
Ad spend Ads Manager The cost
Purchases (reported) Ads Manager What Meta thinks happened
Orders placed, COD share Store Real order count and mix
Confirmed orders Store or confirmation tool Orders worth shipping
RTO rate (by cohort) Courier Losses after dispatch
Delivered orders Courier The real result
True CPA Calculated The number you decide on

Because RTOs take days to come back, report delivered orders by the week the order was placed, and update the previous two or three weeks as parcels resolve. Our template for a weekly Meta ads report has the structure, and Meta ads cost in India covers what CPMs and CPAs to plan around.

A 30-day plan for a COD-heavy account

  1. Week 1: measure. Pull the last 60 days of orders and match them to courier outcomes. Work out RTO rate by product, region and campaign, and calculate true CPA.
  2. Week 2: verify. Switch on OTP or WhatsApp confirmation for every COD order and hold unconfirmed ones. Add pincode and repeat-refuser rules.
  3. Week 3: nudge. Test a prepaid incentive or partial COD against your current checkout, and track delivered orders, not just conversion rate.
  4. Week 4: signal. Start sending a confirmed order event through the Conversions API. Once it has a couple of weeks of history, test a campaign that optimises for it against your Purchase-optimised campaign.

Keep the ads themselves stable while you do this, so changes in true CPA reflect the fixes rather than new creatives.

Creative and offers for COD shoppers

COD buyers are often first-time buyers testing whether a brand is real. Creative that builds trust tends to lower RTO as well as CPA.

  • Proof the brand is real: real customers, real packaging, the team or the place you make the product.
  • Clear return and exchange terms, stated simply.
  • Regional language versions of your best ads, where your buyers prefer them.
  • Bundles and combos that lift average order value, so each delivered order carries its ad cost.
  • Prepaid benefits stated in the ad, such as faster dispatch or a free sample with online payment.

These patterns are common in categories such as Ayurveda and herbal and fashion, where COD shares tend to be high. The wider D2C playbook for India covers setup, creative and festive planning.

When you set a target CPA in Fly ROAS, use your COD- and RTO-adjusted break-even rather than the number Ads Manager suggests, so its test verdicts and stop line are judged against what a delivered order is really worth.

The summary

COD is a growth lever and a margin leak at the same time. Keep it, but price it, verify it and nudge shoppers towards prepaid. Measure Meta campaigns on cost per delivered order including RTO losses. Once volume allows, send confirmed or prepaid orders to Meta through the Conversions API and optimise for those, so the algorithm learns from buyers who actually accept the parcel.

Frequently asked questions

Does Facebook count COD orders that are returned?

Yes. Ads Manager counts a purchase when the order is placed, and it doesn't remove that purchase if a COD order is later cancelled, refused or returned to origin. Your reported CPA and ROAS therefore include orders that never earned you money. Track delivered orders in your store and courier data.

How do I calculate true CPA for a COD brand?

Add your Meta ad spend to the shipping you lost on RTO parcels, then divide by delivered orders. For example, ₹1,00,000 of spend plus ₹7,080 of RTO shipping across 317 delivered orders gives a true CPA of about ₹338, even if Ads Manager reports ₹250.

Can I optimise Meta ads for confirmed COD orders?

Yes. Send a custom event, such as ConfirmedPurchase, through the Conversions API when a COD order is confirmed and for every prepaid order, then optimise for it. Send it within hours, and make sure each ad set can reach around 50 of these events a week.

How can I reduce fake COD orders?

Use OTP phone verification at checkout, confirm every COD order by WhatsApp or call before dispatch, check addresses and pincodes, and block COD for numbers with past refusals. Partial COD, where the shopper pays a small advance by UPI, also filters out the least serious orders.

Should I turn off cash on delivery to stop RTO?

Usually not straight away, because many first-time buyers in India won't pay upfront to an unfamiliar brand. Test a prepaid incentive, a COD fee or partial COD first, and compare delivered orders and true CPA, not just conversion rate, before and after.

Fly ROAS AI is an independent product and is not affiliated with, endorsed or sponsored by Meta Platforms, Inc. Facebook and Instagram are trademarks of Meta Platforms, Inc.

Keep reading

Free tools for this

Terms in this guide

Full glossary →

By industry

Let an AI media buyer fly your ads.

Fly ROAS learns your brand, studies what's winning for competitors and builds ads from your real product photos — then launches, tests and scales them inside the caps you set.