E-commerce · D2C brands
AI calls to confirm cash-on-delivery orders
From ₹1 a minute at volume (₹1,00,000/month commitment), or ₹5 pay as you go, no commitment
₹1 is the T1 voice rate. On T1, Mirai phone calling (₹0.30/min) and call insights (₹0.20/min) are optional; T5 includes both. All prices exclude GST.
From ₹1 a minute on the volume plan (₹5 a minute pay as you go), an agent calls each cash-on-delivery customer before you pack the parcel, reads back the item, the amount and the address, and asks them to confirm. For every order you get one result back: confirmed, cancelled or address changed, with the new address as the customer said it. You can upload a CSV of today's orders in the console, or add each order from your store's backend as it comes in.
No sign-up to look around.
On T1, per connected call
₹1.34for a 80-second call at ₹1/min
T1 has a ₹1,00,000 monthly commitment. Pay as you go on T5, the same call is ₹6.67.
- Calls
- Outbound calls
- Languages
- Hindi, English, Hinglish
- Industries
- E-commerce, D2C brands
- Call length
- 80 seconds, an assumption
Sample conversation
How a call goes
A written example of the script, not a recording. Your agent says what your prompt tells it to, in your customer's language.
- Agent
नमस्ते, मैं Acme Store की AI assistant Neha बोल रही हूँ। क्या मेरी बात Rahul जी से हो रही है?
Hello, I'm Neha, Acme Store's AI assistant. Am I speaking with Rahul?
- Caller
हाँ, बोलिए।
Yes, go ahead.
- Agent
आपने कल एक cotton kurta set order किया था, नौ सौ निन्यानवे रुपये का, cash on delivery. क्या मैं इसे dispatch के लिए confirm कर दूँ?
Yesterday you ordered a cotton kurta set, 999 rupees, cash on delivery. Shall I confirm it for dispatch?
- Caller
हाँ confirm कर दो, पर address में wing गलत है। B-wing नहीं, C-wing है।
Yes, confirm it, but the wing in the address is wrong. Not B-wing, C-wing.
- Agent
ठीक है। तो address होगा C-wing, flat चार सौ बारह, Shanti Apartments, Kharadi, Pune. सही है?
Okay. So the address is C-wing, flat 412, Shanti Apartments, Kharadi, Pune. Is that right?
- Caller
हाँ, सही है। Delivery कब तक आएगी?
Yes, that's right. When will it arrive?
- Agent
Dispatch के बाद आम तौर पर तीन से पाँच दिन लगते हैं। Exact date मेरे पास अभी नहीं है।
It usually takes three to five days after dispatch. I don't have the exact date yet.
- Caller
ठीक है, thank you.
Okay, thank you.
- Agent
आपका order confirm हो गया है और नया address note कर लिया है। धन्यवाद Rahul जी, आपका दिन शुभ हो।
Your order is confirmed and I've noted the new address. Thank you Rahul, have a good day.
What you send
One row per person you call
Upload a CSV to a campaign, or send the same fields as call variables from your own system. The phone number comes first; the other columns are what the agent reads out or decides on.
| Column | Example | What goes in it |
|---|---|---|
phoneRequired | +91… | The number to call, with the country code (+91…). A ten-digit Indian mobile gets +91 added. In Excel, format this column as Text first so the number is not changed. |
customer_nameOptional | Rahul | — |
itemsOptional | cotton kurta set | What the customer would call it, not the SKU title. |
order_valueOptional | 999 | A plain number with no ₹ sign. The prompt tells the agent to say it in words. |
delivery_addressOptional | B-wing, flat 412, Shanti Apartments, Kharadi, Pune | — |
delivery_estimateOptional | 3 to 5 days after dispatch | The agent quotes this when asked and promises nothing beyond it. |
internal_order_refOptional | SO-55120 | Mark it as extra info. The agent never sees it; it comes back in every webhook as metadata. |
What comes back
The result of every call
Each call ends with one webhook event that carries the transcript and the result, and the campaign report has a row for every contact. These are the result fields an agent for this job fills in.
| Field | Example | What it means |
|---|---|---|
status | completed | How the call ended. completed, voicemail and timeout are billed; no_answer, busy and failed are free and retried while attempts remain. |
analysis.data.order_decision | address_changed | A field you define in the agent's analysis schema, for example confirmed, cancelled, address_changed or no_decision. |
analysis.data.corrected_address | C-wing, flat 412, Shanti Apartments, Kharadi, Pune | Also yours to define. Filled only when the customer changed the address. |
analysis.summary | Customer confirmed the COD order and corrected the wing from B to C. | A short summary written after the hangup, from your analysis prompt. |
metadata.internal_order_ref | SO-55120 | Your extra info, returned unchanged so the event can be matched to the order without a lookup. |
analysis.template.name | address_updated_hi | If you give the agent a list of follow-up messages, the one it picked for this call. Your system sends it. |
Cost
What a 80-second call costs
Worked out from our price list. 80 seconds is our assumption for a typical connected call of this kind, not a measurement from your calls. Put your own volumes into the AI calling cost calculator.
| Tier | Rate | Per connected call | Per 1,000 connected calls | Monthly minimum |
|---|---|---|---|---|
| T1 | ₹1 / min | ₹1.34 | ₹1,340 | ₹1,00,000 a month |
| T3 | ₹3 / min | ₹4 | ₹4,000 | ₹50,000 a month |
| T5 | ₹5 / min | ₹6.67 | ₹6,670 | None |
- T5 and T3 include Mirai phone calling and call insights. On T1 they are optional: phone calling at ₹0.30/min and insights at ₹0.20/min. With both on, this call comes to about ₹2 on T1. Mirai phone calling is metered on the carrier's billing block, so treat that figure as an estimate.
- T1's ₹1,00,000 monthly minimum pays for 74,626 calls of this length; T3's ₹50,000 monthly minimum pays for 12,500 calls of this length. Monthly commitments are credited to your wallet. Unused credit never expires. Paid usage counts towards the minimum, and only a shortfall is settled at month end.
- Calls that ring out, are busy or fail to connect are not billed. A voicemail is billed like a connected call.
In detail
AI calls to confirm cash-on-delivery orders: in detail
Why does COD confirmation suit an agent?
A cash-on-delivery order is a promise the customer hasn’t paid for yet. Some get placed twice, some by mistake, and some carry an address the courier will never find. A short call before you pack the parcel catches these while they still cost nothing to fix.
The call goes the same way every time: who’s calling, what was ordered, the amount, the address, then yes or no. Your team can make it, but by the fiftieth order of the afternoon nobody reads the address back carefully any more. The agent reads it back on every call, in whichever of Hindi, Hinglish or English the customer answers in.
What it does on the call is narrow on purpose. It confirms the order. If the customer wants to cancel, it asks why once, records the answer and doesn’t argue. If the address is wrong, it takes the correction and reads it back until the customer says it’s right. When someone asks a question the agent wasn’t given an answer to, like an exact delivery date your system doesn’t know yet, it says so and moves on. It answers only from the details you send with each order.
How do you set it up?
- Open the sandbox. You can look around without signing up; the console asks for a work email the first time you test or create something.
- In Agent Studio, write a short prompt that uses your order columns as placeholders:
{{customer_name}},{{items}},{{order_value}},{{delivery_address}}. Put the AI disclosure in the agent’s first line. - Turn on call analysis and list the fields you want back, such as an
order_decisionwith the values confirmed, cancelled, address_changed or no_decision, pluscorrected_addressandcancel_reason. The names are yours. They come back underanalysis.data. - Press Test your agent and talk to it in the browser. Try a cancellation, a messy address, and a customer who says “हाँ हाँ” to everything.
- For a daily batch, open Campaigns, choose the agent and the calling hours, download the template and upload the day’s COD export. The Columns step maps your export’s own headings, and a column you mark as extra info, such as an internal order reference, travels with the call without ever being read to the customer. The preview lists every row it can’t use before anything is created.
- To call each order as it’s placed instead, keep one always-on campaign open and add orders from your store’s backend through the campaign contacts API. An order added inside the calling window is called straight away. One placed at midnight waits for the window to open.
- Give the campaign a webhook URL. Each call ends with one
call.processedevent carrying the transcript, the analysis and your extra info, so your handler can mark the order confirmed, cancelled or on hold for a new address. - When the test calls sound right, complete Go live in the console.
One more setting saves some awkward calls. A pre-call tool can ask your system whether the order is still open just before dialling, and the skip_call builtin stops the call if the customer already cancelled on the website. A skipped call isn’t dialled and isn’t charged.
Which orders should a person still call?
Keep high-value orders for your team, along with customers who have refused COD parcels before and anyone who has complained recently. Add every call that ended with no_decision or with analysis.success false, which usually means the customer hung up halfway or the address never got confirmed. In the console you can filter a campaign’s contacts by result and work through that list by hand.
The agent can’t transfer a call to a person today. When a customer insists on speaking to someone, the prompt should have the agent promise a callback and note it, and then your team makes that call.
What should you check before the first call?
TRAI’s Third Amendment to the Telecom Commercial Communications Customer Preference Regulations, notified on 18 September 2026, describes a service call as one that gives customers information about a product or service they have bought, including information about delivery, and says such calls are not promotional and don’t need explicit consent. A confirmation call that also pushes a discount or another product is a different kind of call. Keep offers out of this script.
The same amendment asks every sender to declare application-to-person calls to its originating telecom provider in advance, along with the calling numbers it will use. It defines those as calls started by software without a person dialling, and it names artificial voice technology. A call of this kind made without the declaration is treated as unsolicited commercial communication. The amendment comes into force in stages after its publication, so confirm where it stands with your telecom provider.
Some checks stay with you whichever number you call from. We don’t scrub your list against the national DND register, and the consent records are yours to keep. A campaign never dials outside the hours you set, but choosing those hours is your decision: check TRAI’s current rules and your consent records. A customer who says “मुझे call मत करो” belongs on your do-not-call list, which you can add to from the campaign’s contact menu or from your webhook handler.
What does a confirmation cost?
On T1 a connected minute costs ₹1 with a ₹1,00,000 monthly commitment, plus ₹0.30 for Mirai phone calling and ₹0.20 for call insights if you switch them on. On T5 it’s ₹5 a minute, pay as you go, with both included. Prices exclude GST. You pay only for calls that connect. A call that rings out, is busy or fails costs nothing, and a campaign retries it if you allowed retries. Voicemail is billed, because audio went out. The cost block on this page assumes a connected call of about 80 seconds, which is an estimate: a clean “हाँ, confirm कर दो” ends sooner and an address correction runs longer.
The useful comparison is per order. Set the cost of one answered call against what you lose when a parcel goes out, gets refused at the door and comes back. Pricing has the plans, and the cost calculator works through your own order volumes.
By Mirai Minds · Published
Questions
Will customers know they are talking to an AI?
They should, because the agent says so in its first line. Our docs recommend putting the disclosure in the opening message, and callers usually work out it's a machine within a turn or two anyway.
Can it speak Hindi and switch to English in the middle of a call?
Yes. The agent is tuned for Hindi and Indian English, including the Hindi-English mixing most real calls have, and it follows the customer. Write the Hindi lines of the prompt in Devanagari. For any other language, ask us before you build on it.
What happens if the customer doesn't pick up?
The call ends as no_answer and isn't billed. A campaign tries again after the gap you set, up to five retries, and only inside your calling hours. A contact never reached after every attempt shows as exhausted in the report, which gives you the list to follow up by SMS or by hand.
Can the call come from our own number?
Yes. Under Calls come from, pick a number you rented through Mirai or imported from your own Plivo account. If you choose nothing, the call goes out on the Mirai shared line, which customers see as Mirai and which other businesses use too.
How can a confirmation call cost ₹1 a minute?
₹1 a minute is the T1 voice rate, for teams that commit ₹1,00,000 a month, and the commitment is credited to your wallet. We can price it there because we run our own speech recognition, language model and voice on our own GPUs in India; owning the stack is how we keep a minute cheap at volume. On T1, Mirai phone calling adds ₹0.30 a minute (nothing from us if you bring your own Plivo number) and call insights add ₹0.20 a minute if you turn them on. Wallet credit never expires, though the commitment is a minimum monthly spend. A store testing COD calls on a few hundred orders can start on T5 at ₹5 a minute, pay as you go, with phone calling and insights included. T3 is ₹3 a minute with a ₹50,000 commitment. Prices exclude GST.
Sources
- Campaigns in the console: upload, columns, calling hours, retries
- Campaigns API: always-on campaigns, contact metadata, webhooks
- Call analysis: summary, success, extracted fields, follow-up templates
- Tools: pre-call lookups and the skip_call builtin
- Phone numbers: which number a call comes from
- Limits & compliance: consent, DND and AI disclosure
- TRAI, TCCCPR (Third Amendment) Regulations, 18 September 2026
- TRAI press release on the Third Amendment, 18 September 2026
Put your own script in an agent.
Open the sandbox, paste your prompt and listen to it. Nobody asks for an email until you test a call.