The order that never arrived
A customer in Jaipur browses Instagram at 11 PM. She sees your ad for a printed kurta set. She taps, scrolls the product page for 40 seconds, selects size M, and places a COD order for ₹2,500. Meta records a purchase event. Your dashboard celebrates: conversion at ₹380 CPA, ROAS 6.5x. The algorithm takes notes.
Six days later, a delivery agent stands outside an apartment in Vaishali Nagar. Nobody answers. He calls. The phone rings twice and goes to voicemail. He tries again the next morning. No answer. The package gets marked “Returned to Origin.” Delhivery charges you ₹120 for forward shipping and ₹120 for the return. The kurta goes back to your warehouse.
Your ad platform still counts this as a successful conversion worth ₹2,500. The algorithm learned from it. It is now looking for more people like her.
The RTO problem in numbers
This is not an edge case. For Indian D2C brands, COD accounts for 50-65% of orders. RTO rates on COD run 35-55% depending on tier city and product category. If you process 1,000 orders a month and 550 are COD with a 40% RTO rate, you lose ₹700 on each of those 220 returned orders. That is ₹1,54,000 per month in pure loss — while your ad platform reports record revenue.
What your ad platform thinks vs reality
| Metric | What the Platform Reports | What Actually Happened |
|---|---|---|
| Conversions | 1,000 purchases | 780 delivered orders |
| Revenue | ₹25,00,000 | ₹19,50,000 (after 220 RTO) |
| ROAS | 6.5x | 4.2x (on delivered revenue) |
| CPA | ₹380 | ₹490 (true cost per delivered order) |
| Profit | ”Healthy” | Negative on 22% of all orders |
The gap between what the platform believes and what your bank statement shows is the RTO gap. Every metric the algorithm optimizes against is inflated by ghost conversions that were never going to deliver.
Prepaid vs COD: the signal gap
The algorithm cannot tell the difference unless you tell it. Both send a “Purchase: ₹2,500” event. Both look identical in the conversion column. But one is money in your bank account and the other is a coin flip.
Risk-adjusted conversion values
The fix is simple. Stop sending the same value for both payment types. Adjust the conversion value based on the historical probability that the order will actually deliver.
| Payment Method | Order Value | Delivery Rate | Risk-Adjusted Value | Signal Sent to Platform |
|---|---|---|---|---|
| Prepaid UPI | ₹2,500 | ~100% | ₹2,500 | Full value |
| Prepaid Card | ₹2,500 | 95% | ₹2,375 | Near-full value |
| COD Metro (Tier 1) | ₹2,500 | 65% | ₹1,625 | Discounted |
| COD Tier 2 city | ₹2,500 | 50% | ₹1,250 | Half value |
| COD Tier 3 city | ₹2,500 | 35% | ₹875 | Heavy discount |
The algorithm now sees a prepaid UPI buyer as 2.8x more valuable than a COD buyer in a Tier 3 city. It shifts delivery toward audiences that are statistically more likely to pay upfront. It does not stop finding COD buyers entirely — it just stops overvaluing them.
How this changes algorithm behavior
Reported CPA goes up slightly. This scares most marketers. But the true CPA — cost per delivered order — drops by 31%. You are paying ₹40 more per reported conversion but saving ₹213 per actual delivered sale. The math is not close.
Feeding RTO data back
Step 1: Connect delivery status from your logistics partner
CustomerLabs integrates with Delhivery, Shiprocket, Shadowfax, Ecom Express, and most 3PL providers. When an order status changes to “Delivered” or “RTO,” the event fires automatically. No manual tracking.
Step 2: Wait 10 days, then update conversion values
Most RTO happens within 7-10 days of dispatch. CustomerLabs waits for the delivery window to close, then sends conversion adjustments to Meta CAPI and Google Ads. A delivered COD order retains its risk-adjusted value. An RTO order gets adjusted to ₹0. The algorithm learns the difference.
Step 3: Flag habitual RTO customers
Your CRM now has data on which customers have returned COD orders before. CustomerLabs builds a suppression audience of serial RTO offenders. These customers still see your ads, but they are excluded from COD-optimized campaigns. If they want to buy, they pay upfront.
Going further: prepaid incentives
Offer ₹100 off for prepaid payment. A ₹100 discount costs you ₹100. An RTO costs you ₹700. The discount pays for itself 7x over on every order that would have been COD.
Better yet, frame it as a reward, not a discount. “Pay online and get ₹100 instant cashback” converts better than “₹100 off for prepaid” because it feels like a gain, not a reduced price. Test both.
Campaign setup
Meta: Separate optimization by payment signal
Send Purchase_Prepaid events at full order value. Send Purchase_COD events at risk-adjusted value based on your city-tier RTO rates. Use “Maximize Value” bidding. Meta shifts delivery toward audiences that statistically pay upfront.
For high-AOV products (above ₹3,000), test prepaid-only ad sets. Disable COD at checkout for these campaigns. Your CPA will look higher. Your delivered ROAS will be dramatically better.
Google: Value-based bidding with delivery feedback
Import prepaid purchases at full value and COD purchases at risk-adjusted value. Use tROAS bidding. When RTO confirmation arrives, send conversion value adjustments via the Google Ads API. The algorithm learns which search queries and audience segments produce delivered revenue — not just placed orders.
NativeNook (Indian D2C): “After sending risk-adjusted values for COD vs. prepaid, our prepaid order ratio went from 38% to 61% in 8 weeks. RTO dropped from 42% to 18%. Same ad spend, 35% more delivered revenue.”
Results
| Brand | Before | After | Impact |
|---|---|---|---|
| NativeNook | 38% prepaid, 42% RTO | 61% prepaid, 18% RTO | 35% more delivered revenue |
| Rangoli Fashion | ₹690 effective CPA | ₹477 effective CPA | 31% reduction in true CPA |
| UrbanCraft Home | ROAS 3.8x (reported) | ROAS 5.2x (delivered) | 37% improvement on real revenue |
| Tier2Trends | 55% COD, ₹8L monthly RTO loss | 35% COD, ₹2.8L RTO loss | ₹5.2L saved per month |
Verified G2 Review: “Customer Labs has helped us skyrocket ROAS and scale our campaigns. It solved issues with the traditional pixel post iOS changes.” — DTC Brand Marketer
Every ₹1 you “save” on COD costs you ₹3 in RTO
COD exists because Indian buyers want to verify before they commit. That is a valid customer behavior. The problem is not COD itself — it is that your ad platform treats a ₹2,500 COD order from a Tier 3 city with a 65% RTO history the same as a ₹2,500 UPI payment from a repeat buyer in Bangalore.
Risk-adjusted conversion values take three weeks to set up. The prepaid-to-COD ratio starts improving within the first two weeks as the algorithm recalibrates. Every percentage point that shifts from COD to prepaid is pure margin — no extra ad spend, no extra traffic, just fewer orders that never arrive.
“You can clearly see the lift in results after only 14 days.”
Frequently asked questions
Which payment gateways does CustomerLabs support for prepaid/COD detection?
CustomerLabs integrates natively with Razorpay, Cashfree, PayU, PhonePe, and Paytm. For Shopify stores, payment mode is detected directly from the Shopify order API — no separate gateway integration needed. WooCommerce, Magento, and custom stores work via webhook or API integration. If your checkout exposes payment method in the order data, CustomerLabs can read it.
Does this work with Shopify stores using Razorpay or Cashfree?
Yes. Shopify stores using Razorpay, Cashfree, or any payment gateway can use this. CustomerLabs reads the payment method from the Shopify order object (which includes the gateway used). Prepaid orders via UPI, cards, or net banking get full value. COD orders get risk-adjusted value. No additional gateway setup required beyond your existing Shopify integration.
What's the minimum order volume needed for this to work?
Meta and Google need at least 50 conversion events per week per campaign for value-based optimization to learn effectively. If your store processes 200+ orders per month, you have enough volume. Stores with lower volume can still benefit by using payment-mode tagging for reporting and audience segmentation, even if they stay on conversion-count bidding.
How long does it take for the algorithm to learn the prepaid vs. COD difference?
The algorithm starts receiving differentiated values immediately. Meaningful optimization shifts appear within 2–3 weeks as the algorithm accumulates enough data points to distinguish prepaid-prone audiences from COD-prone audiences. By week 6, most brands see a measurable shift in payment-mode mix — more prepaid orders at stable or lower CPA.
Does this approach work outside India?
Yes. COD is common across Southeast Asia (Indonesia, Philippines, Vietnam, Thailand), the Middle East (Saudi Arabia, UAE), and parts of Latin America. Anywhere COD has high RTO rates, this signal separation applies. The risk-adjustment percentages change by market — India might be 40% RTO, Indonesia 25% — but the mechanism is identical.
Ready to improve your signals?
Book a 30-minute walkthrough. We'll audit your current setup, show you what's missing, and map out a 3-week implementation plan.