Sales
COD order confirmation on WhatsApp: confirm before you ship and cut returns
Every cash-on-delivery order that is refused at the door costs you shipping twice. Here is how to confirm each COD order on WhatsApp with one tap, what to do when nobody answers, and how to run it automatically in MonoChat.
MonoChat Team Updated: 6 min read
On this page
To cut returns on cash-on-delivery (COD) orders, confirm every COD order on WhatsApp before it ships: send a utility template with Confirm and Cancel buttons, update the order from the answer, and hand the orders nobody confirmed to a person before the courier picks them up. Customers who confirm can be offered a payment link to pay now instead of at the door.
This guide covers why COD orders come back, what the confirmation message should say, the WhatsApp rules that apply, and how to automate the whole loop in a MonoChat flow.
Why COD orders come back
A COD order costs the customer nothing until the parcel arrives. That is why shoppers in India, Pakistan, Egypt, Indonesia, the Gulf and much of Eastern Europe like it, and why it is risky for the seller: an order placed on impulse is easy to refuse.
The numbers from India, the largest COD market, show the gap:
- Over 76% of the 1.59 billion orders Meesho shipped in fiscal year 2025 were paid by cash on delivery, according to its draft IPO papers.
- In Shipway’s FY25 data, less than 2% of prepaid orders were returned, against nearly 26% of non-prepaid orders.
- ClickPost’s analysis of 35.8 million orders from 1 October to 30 November 2025 found up to 16 times more return to origin (RTO) on cash orders than prepaid ones for fashion brands, and 12% of Tier 3 orders coming back against 6.6% from metro cities.
Every refused parcel is paid for twice: shipping out and shipping back, plus the stock that sits in a van for a week. A confirmation that takes the customer two seconds is the cheapest filter you have.
What a good COD confirmation looks like
Send it within minutes of the order, while the customer still remembers buying. Keep it short and specific:
Hi Ayesha, thanks for your order #4821 from Noor Fashion. 2 items, total PKR 6,450, cash on delivery. Delivery to: House 12, Street 4, DHA Phase 5, Lahore. Please confirm so we can ship it today. [Confirm order] [Cancel order] [Change address]
What makes it work:
- The order number, total and address in the message, so the customer can spot a mistake at a glance.
- Quick reply buttons, not “reply YES”. A tap is faster than typing and gives you a clean answer to route on.
- A way to fix the address. Many refusals are wrong or incomplete addresses, not changed minds.
- No offer in the same message. A confirmation is about this order only.
After a tap, answer at once: “Thanks, your order ships today” or “Your order is cancelled, nothing will be delivered.”
The WhatsApp rules that apply
Use a utility template. The order was placed on your website, not in the chat, so you message first, and outside the 24-hour customer service window WhatsApp only allows approved templates. Meta’s own utility example is an order confirmation. If a utility template is found to contain marketing, Meta changes its category to marketing, so keep promotions out. See WhatsApp template message examples for wording.
Every delivered message is charged. Meta charges per delivered template by category and by the recipient’s country. Since 1 October 2026, utility templates sent inside an open customer service window are charged too, and service replies are charged after 1,000 free ones per number per month. One confirmation per order is usually a small cost next to one return; our WhatsApp API pricing guide has the rates by country.
Get consent at checkout. Add a line such as “We’ll confirm your order on WhatsApp” next to the phone field. Order updates are expected by customers, but marketing on the same number needs its own opt-in; see WhatsApp opt-in.
What to do with each answer
| Answer | What happens next |
|---|---|
| Confirm order | Mark the order confirmed in your store and ship. Optionally offer a payment link to pay now. |
| Cancel order | Cancel in your store before it is packed. Ask one optional question: why? |
| Change address | Hand the chat to a person, or ask for the new address and update the order. |
| No answer after a few hours | Hand the order to a person who calls or writes once more before the pickup. |
Track the share of each answer per week. A rising “no answer” rate usually means the message goes out too late or the phone numbers are wrong.
How to automate COD confirmation in MonoChat
MonoChat connects your number to the WhatsApp Business API and lets you build the loop above in the no-code workflow automation builder. MonoChat is an official Meta Business Partner; your number stays yours and Meta bills message fees directly.
1. Create the template. Under Settings › Chat › Channels › Template Messages, create a utility template with the order number, total and address as variables, and add quick reply buttons such as “Confirm order” and “Cancel order”. Submit it to Meta.
2. Receive the order. Start a flow with a Webhook Received event node. Your store sends each new COD order to the node’s URL with the customer’s phone number; the node finds or creates the customer on the channel you choose and can require a secret, as a token or an HMAC-SHA256 signature. With Save Flow Variable, keep the order number and total for later nodes.
3. Send the confirmation. Add Remove Customer Tags to clear the tags of a previous order, save the order number to a customer profile field with Set Customer Profile Field, then send the template with Send Template Message.
4. React to the tap. In a second flow that starts on New Message Received, check the reply with the Message Text condition. On “Confirm order”, add a tag such as cod-confirmed with Set Customer Tag and call your store with an HTTP Request node to update the order. On “Cancel order”, do the same with cod-cancelled.
5. Catch the silent ones. Back in the first flow, add a Wait node, then a Customer Tag condition: if the customer has neither tag, Assign Session gives the chat to the workgroup that calls customers before pickup. They see the whole conversation in the team inbox.
6. Offer to pay now (optional). After a confirmation, a Send Payment Request node sends a link from your own payment provider for the order total, with your own text. When the customer pays, the New Payment Received event can start a flow that marks the order paid. Providers are set up under Settings › Payment › Payment Systems; see how to accept payments in WhatsApp chats.
Test the whole loop on your own number before you switch it on, and watch the flow canvas: it shows how often each link was used in the last 7 days, so you see at once how many orders were confirmed, cancelled or left silent.
For the messages that follow the confirmation (shipped, out for delivery, delivered), see abandoned cart and order update messages. Start for free at app.monochat.ai.
Sources
- Whalesbook: Meesho’s IPO and cash on delivery (draft IPO papers, FY2025) (opened 30 Oct 2026)
- CargoTalk: Shipway unveils ShipNotes, FY25 return data (30 Jul 2025, opened 30 Oct 2026)
- ClickPost: Peak season RTO planner, 35.8M orders, Oct to Nov 2025 (opened 30 Oct 2026)
- Meta for Developers: Template categorization (opened 30 Oct 2026)
- Meta for Developers: Pricing on the WhatsApp Business Platform (opened 30 Oct 2026)
- MonoChat help center: Flows
Put this into practice with MonoChat