A COD parcel comes back. You paid outbound freight, you paid return freight, the packaging is binned, and the customer who "really wanted it" on Tuesday doesn't answer the phone on Friday. Every D2C founder in India has a version of this story, and every WhatsApp tooling company has a slide claiming it can cut it by a third.
Here's the honest position up front: I could not find independent evidence for any RTO-reduction tactic. The published numbers I found are from vendors selling the tool. This post gives you message templates for confirming COD orders and nudging buyers to prepay, then a way to test whether they work in your store. Evidence checked 2026-10-09 via search; I could not read the original vendor pages in full, so exact wording and numbers should be checked at the source.
What does the evidence actually say about COD and RTO?
I searched for guidance on confirming COD orders and converting them to prepaid. What I found, per search summaries on 2026-10-09:
- A Shiprocket case study (hosted as a PDF by Tata Communications, its messaging partner) reports an RTO-loss reduction of up to 45 percent using automated WhatsApp workflows for order verification, address checks and COD-to-prepaid conversion. The same 45 percent appears on Shiprocket's own product pages, while a Shiprocket Medium post (seen in search results on 2026-10-09) says "up to 40 percent". It is a vendor-published figure, and I haven't seen the baseline or method.
- WhatsApp tooling vendors such as QuickReply and AiSensy publish guides with their own claims. Figures in the summaries I saw ranged from 15 to 25 percent RTO reduction with confirmation to 40 percent or more fewer COD cancellations, and COD RTO rates "of 20 to 40 percent" as an industry estimate. None named a sample size.
- I did not find a regulator, academic study or courier-published dataset on this.
So the levers below are plausible, widely recommended, and unproven in a way you can quote. Treat percentages as hypotheses to test, not forecasts.
What are the levers, and what does each message have to do?
| Lever | The message's job | Risk |
|---|---|---|
| Pre-dispatch confirmation | Get a yes/no and an address check before you pay for shipping | Slows dispatch; unconfirmed orders may be real buyers who ignore WhatsApp |
| Prepaid nudge | Offer an easy payment link, optionally with a small incentive | Incentive cost; can train buyers to wait for the offer |
| Failed-delivery (NDR) outreach | Reach the buyer within minutes of a failed attempt to fix the address or slot | Needs courier status data and a fast owner |
| Risk-based COD rules | Not a message; decide who sees COD at checkout | Blocks some genuine buyers |
Your payment setup determines which of these you can do. If you haven't connected a gateway or enabled COD yet, start with Shopify India payments: UPI, cards and COD.
How do you write a COD confirmation message with AI?
Don't let the model write freely. WhatsApp business messages typically go through pre-approved templates and need customer opt-in; I did not verify Meta's current policy on 2026-10-09, so check Meta's rules and your provider's before sending anything. Design the template yourself, then use the model to produce wording variants to submit for approval.
Untested template prompt:
I run a D2C store selling [CATEGORY] in India. Write 5 variants of a
WhatsApp message template asking a customer to confirm a Cash on Delivery
order. Constraints:
- Fixed variables only, written in double braces: {{1}} first name,
{{2}} order number, {{3}} item summary, {{4}} amount, {{5}} city.
- Under 40 words. Plain language, one tone: polite and direct.
- Ask for exactly one reply: "1" to confirm, "2" to change address,
"3" to cancel.
- Do not mention discounts, deadlines, scarcity or any claim not in
the variables.
- No emoji except at most one.
Return the variants as a numbered list with no commentary.
An example output I wrote by hand (illustrative, not model output):
Hi {{1}}, thanks for ordering {{3}} (order {{2}}, Rs. {{4}}, pay on delivery to {{5}}). Reply 1 to confirm, 2 to change your address, 3 to cancel.
That's close to everything such a message needs. Anything longer is likely to read as marketing.
How do you nudge COD buyers to prepay?
Say what's in it for them, make payment one tap, and keep the decision theirs. Two honest versions:
Hi {{1}}, your order {{2}} is ready to ship. Pay now by UPI to get {{3}}
off, or keep Cash on Delivery. Pay securely here: {{4}}
where {{3}} is whatever incentive you have actually configured (a fixed rupee amount, free shipping, or "nothing" if you don't offer one, in which case drop the sentence). Never let the model invent the incentive or an expiry.
Prompt for variants:
Write 4 variants of a WhatsApp prepaid-nudge template for a COD order.
Variables: {{1}} first name, {{2}} order number, {{3}} incentive text
(may be empty), {{4}} payment link. Under 35 words. If {{3}} is empty,
the message must work without it. Do not add urgency, deadlines or
claims about safety or speed that are not in the variables. Neutral tone.
Check what your checkout and payment link tooling support before promising an incentive. Our Shopify payments post notes that manual payment methods like COD behave differently from gateway payments, so a prepaid discount may need a discount code created in Shopify rather than a message promise.
How do you write a failed-delivery message?
When a courier marks a delivery attempt failed, the fix is usually an address detail or a better time. Untested template:
Write 3 WhatsApp template variants for a failed delivery attempt.
Variables: {{1}} first name, {{2}} order number, {{3}} reason from the
courier status (e.g. "customer unavailable", "address incomplete").
Ask one question: reply with a landmark/pincode correction or a preferred
time window. Under 40 words. No threats, no mention of fees or RTO charges
unless a variable supplies them.
Map courier reasons to template wording yourself; the model should not guess at what a courier status code means.
How do you test whether your messages work?
This is the part vendors skip. Randomly hold out a share of COD orders that get no message (or the old message), and compare RTO rates after delivery outcomes are known. Don't compare this month with last month: festive demand, courier performance and product mix all changed.
How many orders do you need? I ran a standard two-proportion sample-size calculation (5 percent significance, 80 percent power) in Python on 2026-10-09:
baseline RTO -> improved RTO : COD orders needed per group
30% -> 25%: 1251
30% -> 20%: 294
20% -> 15%: 906
20% -> 10%: 199
15% -> 12%: 2036
If you ship 200 COD orders a month, you can only expect to see a drop from 20 to 10 percent, and only after a couple of months of splitting traffic. Smaller effects will look like noise. That doesn't mean the message is useless; it means your result won't be conclusive, so keep the change if it's cheap and doesn't hurt conversion.
Track these per group: COD orders, confirmed, cancelled before dispatch, delivered, RTO, and prepaid conversions. Count a cancelled-before-dispatch order separately from an RTO, because cancelling saves freight but may also lose a sale that would have been delivered.
A model can help with the tabulation if you keep the data clean. Prompt:
Here is a CSV of COD orders with columns order_id, group (test/holdout),
confirmed (yes/no/none), final_status (delivered/rto/cancelled_pre_dispatch).
Compute counts and rates per group. Do not interpret significance; just
report the numbers and flag groups under 100 orders as too small.
Then run the sample-size logic yourself, or ask the model to write the script and run it. For a more general approach to statistical tests of prompt changes, see A/B testing prompts in production.
What shouldn't you automate?
Don't auto-cancel unconfirmed orders until you've looked at who they are. A buyer who doesn't reply on WhatsApp may still accept the parcel. Don't message customers who haven't opted in. And don't let a model decide who gets COD; that is a policy with fairness implications, because pincode-based rules can exclude whole areas. Our LLM bias testing post shows how to check a model for unequal treatment if you do use one in decisions.
Quick start
- Decide your COD policy and prepaid incentive first. The messages follow.
- Write the templates above with fixed variables and submit them to your WhatsApp provider.
- Run a holdout for as long as it takes to reach a few hundred COD orders per group.
- Keep what's cheap. Drop what costs more than the freight it saves. To see what a given RTO rate does to a festive discount, use the calculator in the festive season campaign planner.
I haven't run these prompts on a live model, and I haven't sent any of these messages. What I did run is the sample-size script. The vendor figures above are quoted as claims, not facts.



