Cash on delivery accounts for roughly 45–65% of Indian e-commerce orders, and COD carries a return-to-origin rate of about 25–30% against a global 8–12%. Industry estimates put Indian D2C losses to RTO above ₹8,000 crore a year, and report that voice confirmation before dispatch cuts RTO by 20–30%.
The arithmetic is why this is usually the first call a brand automates. You are paying two-way freight to discover that an order was never real. A phone call finds that out while the parcel is still on the shelf.
What the call actually does
Four things, in about 40 seconds:
- Confirms the buyer placed the order and still wants it. This is what removes the impulse orders and the fake ones.
- States the cash amount. A buyer who did not realise they would need ₹2,400 in cash at the door is a failed delivery you can prevent now.
- Checks the address is deliverable. Address gaps — a missing floor, landmark or wing — are a meaningful share of failed deliveries, and the buyer is the only person who can close them.
- Captures a cancellation reason when they say no, so the pattern is visible rather than just the loss.
What it must never do
It must never ask for an OTP, a PIN, or card details. Not because it would not work, but because it works too well: doing this at scale teaches your customers that a call claiming to be your brand may legitimately ask for a one-time password. That is the exact pattern fraud uses, and you would be training the victims yourself.
A confirmation call reads information back and asks yes-or-no questions about it. Nothing else.
The data going in and coming out
On Tone (usetone.ai) the agent is configured once and the order details arrive with each call, so one agent serves your whole order book:
In, per call: business name, customer name, order id, order value, item summary, delivery city, expected delivery date.
Out, per call: order_confirmed, cancellation_reason, cash_ready,
address_confirmed, delivery_note, alternate_number,
wants_human_callback.
Those outputs are what make the call operationally useful rather than just
answered — order_confirmed gates the dispatch, delivery_note goes on the
shipping label, and cancellation_reason is the only one of the four that tells
you anything about next month.
There is deliberately no live order-lookup tool on this template. The order data is already in the hand of whatever is placing the call, and looking it up again mid-conversation would add a network round trip to the latency path to learn something the dialer already knew. (The exception is the NDR follow-up variant, where the shipment state genuinely changes between dial and answer.)
Where the compliance line sits
This call is transactional under TCCCPR Schedule II, because the customer placed this order minutes ago and the call is about that order. Transactional traffic is not blocked by a time band and is not subject to a DND scrub — which matters commercially, because a promotional classification would hold a 9pm order until 9am the next morning and lose most of the value.
The line is real and narrow:
- Confirming an order they did place → transactional.
- Calling about a cart they did not buy → promotional, needs consent, and is subject to the time band and DND.
Those are two different call types with two different classifications. Cart abandonment is a separate agent for exactly this reason, not a variant of this one. Classifying a promotional call as transactional to escape the calling window is the single most common way businesses get their numbers disconnected.
One more thing that is easy to get wrong: on Tone the classification lives on the
agent, not on the campaign. An agent left on the default promotional will
be held to the calling window no matter what the campaign says — a mismatch that
looks like a dialer that never woke up rather than like a compliance decision.
What it costs
A call on Tone bills at ₹6 per minute, charged per second, which decomposes as agent ₹3.50 + telephony ₹0.50 + platform ₹2.00. There is one wallet debit per call at the blended rate; the components are there so you can see where the money goes, not so you can be billed three times.
A confirmation call of 30–60 seconds is therefore roughly ₹3–₹6 per order. Set that against the two-way freight on a returned parcel and the arithmetic resolves quickly at almost any ticket size.
Building it
The COD confirmation agent ships as a template, so the prompt, the language configuration, the input variables and the extracted outputs are already written. It defaults to Hindi first and English second — for COD specifically, buyers skew tier-2 and tier-3, and an ambiguous language detection falling back to Hindi is right far more often than falling back to English.
You place calls with POST /v1/calls, passing the order fields as variables,
or launch a campaign against a list. Sandbox keys make test calls free, and the
call log has the same shape in sandbox as in production — going live is a key
swap.
The outbound calls documentation has the request shape, and campaigns covers running one against an order file.