Skip to main content
← All articles
COD & RTO · November 2026

NDR Management: Recovering Failed COD Deliveries

11 minutes read
NDR raisedattempt 1 failedWorked inside the attempt windowReach the buyercall, then WhatsAppFix the causelandmark, slot, amountDeliveredBlind reattemptno new informationSame failureattempts 2 and 3RTOWindow missed, or no contact made
Summary

A failed delivery attempt is not a return. It is a question from your courier with a short deadline attached, and the parcel is already in the buyer’s city with the shipping cost sunk. This is how to triage NDRs by what each reason actually requires, run the queue inside the courier’s attempt budget, and turn the reason codes into checkout fixes.

An NDR — a non-delivery report — is the cheapest recovery opportunity in the whole COD lifecycle, and most brands waste it. The parcel is in the buyer’s city. You have already paid to get it there. The customer wanted it enough to place the order. What stands between that and a delivery is usually one phone call, and what stands between it and an RTO is usually nobody making that call before the courier runs out of attempts.

What an NDR actually represents

When a rider cannot complete a delivery, the courier raises an NDR against the shipment with a reason attached and waits for your instruction. That is the whole mechanism: a status, a reason, and a request for a decision. It is not a return, and it is not a cancellation. It is the courier asking whether to try again and, if so, with what new information.

The decision has a deadline because reattempts are finite. Shiprocket states that a maximum of three delivery attempts are made before a shipment is marked RTO. Amazon Shipping India similarly describes most Indian couriers making two to three attempts in total, and says courier SLAs in India typically allow 24 to 48 hours between attempts. Your own courier contracts will differ in the details, and you should know the exact number and interval for each one you use — but the shape is the same everywhere: a small, fixed budget of attempts, each one consumed whether or not you gave the rider anything new to work with.

That is the frame that makes everything else follow. You are not managing a queue of problems. You are spending a budget of attempts, and an attempt made without new information is an attempt thrown away.

The clock decides your process design

Because attempts are consumed on a courier’s schedule rather than yours, an NDR left until tomorrow morning is not an NDR with one day less — it may be an NDR with one of its two remaining attempts already burned, made blind, by a rider who had no more to go on than the day before.

This single fact rules out the way most small teams handle NDRs, which is to look at the panel when someone has time. The queue has to be worked the day it lands, in a defined window, by a named person. If your volumes are small, that might be twenty minutes at noon and twenty minutes at five. If they are large, it is a shift. Either way it is scheduled, because the alternative is a queue that silently converts itself into returns.

Two practical consequences. First, your NDR alerts need to reach a human quickly — a panel someone remembers to open is not an alert. Second, your courier’s own automated outreach is running in parallel. Many couriers fire an automated SMS or IVR call to the buyer when an NDR is raised; Shiprocket, for example, describes doing exactly that for reasons like the buyer being uncontactable or the premises being closed. Your call is not the first contact the buyer gets, which is an argument for making yours recognisably different: a human, naming your brand and the product, rather than another automated voice about a shipment number.

Triage by what the reason requires, not by its name

Couriers attach a reason to every NDR, and the reason names are reasonably consistent across Indian carriers — customer not available, incomplete or incorrect address, phone unreachable, premises closed, delivery refused, pincode unserviceable. The names are less useful than the grouping, because what matters operationally is what each reason needs from you.

Address problems need new data. Incomplete or incorrect address, and confusion between a pincode and the locality actually named. These are the highest-recovery bucket, because the fix is entirely in your hands once you have the buyer on the phone. What you want is not a longer address but a locatable one: a landmark, a nearby shop, a building name as neighbours would say it, a floor. Riders navigate by landmark, not by line two.

Availability problems need a time. Customer not available, premises closed. The buyer’s address is fine and their intent is fine; they were at work. Asking for a preferred window is obvious. Asking for a fallback recipient — a neighbour, a guard, a shop downstairs, a family member — is what actually converts these, because a second attempt into the same empty flat is another wasted attempt. Confirm the fallback by name and get the buyer to confirm that person can pay.

Contactability problems need a different channel. Phone unreachable, phone switched off. The number on the order may be wrong, dormant, or simply screening unknown callers. Try WhatsApp on the same number, since a message lands even when a call does not. Check whether the order carries a second number, and check the email. If the customer has ordered before, you may have a working number on an older order that is not on this one.

Intent problems are not logistics problems. Delivery refused, customer asked to cancel. This is the bucket most teams handle worst, because the instinct is to reattempt and hope. A buyer who refused the parcel at the door will refuse it again, and you will pay for two more attempts and the return leg to learn that. Either resolve the actual objection — they didn’t recognise the brand, the amount was more than they expected, they ordered twice by accident, they have been waiting too long and bought elsewhere — or release the shipment to RTO deliberately and early, which at least saves the remaining attempt costs. Choosing the return consciously is a better outcome than drifting into it.

There is a fifth bucket worth separating: shipments where the buyer insists nobody came. It is a real failure mode, it needs a different response, and it is covered below.

The contact sequence

Call first. Voice is the only channel that reliably extracts new information — a landmark, a window, a fallback recipient — because it is a conversation rather than a form. Text is for the record and for buyers you cannot reach by voice.

If the first call goes unanswered, the second call should come from a different number. Indian buyers screen unknown numbers heavily, and a repeat from the same unrecognised caller ID reads as spam. Space the two calls by hours rather than minutes; back-to-back rings annoy without informing.

Then WhatsApp, and make the message do work the courier’s SMS cannot. Name your brand, name the product, state the amount payable, and ask one question with the answers offered as options: today evening, tomorrow morning, or cancel. A message with a single closed question gets replies; a message asking the buyer to compose a new address does not. If your courier or app supports it, include the tracking link so the buyer can see the parcel is real.

SMS is a third channel, not a second one — it is worth sending because it costs almost nothing, not because it converts.

Log the outcome against the order itself, not in a separate sheet. The person handling the reattempt, the person handling tomorrow’s repeat offender, and the person reviewing recovery rates at the end of the month all need the same record, and a spreadsheet that lives on one laptop serves none of them.

What to say when they pick up

Lead with the order, not the failure. “This is brand calling about your order of product — our delivery partner tried to reach you today and couldn’t.” The buyer now knows who you are, what the parcel is, and that you are not a scam. Nothing in that sentence accuses them of anything, which matters more than it sounds: a buyer who feels blamed for a missed delivery cancels.

Then one closed question, and options. “Can we try again tomorrow morning, or would evening suit you better?” Open questions produce vague answers that the rider cannot act on.

Confirm the amount payable out loud. Surprise at the door is a refusal cause in its own right, especially where shipping or a COD handling fee was added at checkout and the buyer remembers the product price. Saying the number now removes that failure mode entirely.

And this is the single best moment in the entire order lifecycle to offer the prepaid switch. The buyer is already thinking about the parcel, already mildly inconvenienced, and already on the phone. A payment link sent while you are talking to them converts an order you were about to send out on a second risky attempt into a prepaid order, removes the cash-handling step at the door, and makes the reattempt materially more likely to succeed. A small discount for paying now is usually cheaper than the return leg you are trying to avoid. Of all the places to run prepaid conversion, this one has the most willing audience.

When the attempt did not happen

Some share of your NDRs will be marked as a failed attempt when the buyer says no one called and no one came. This is a known failure mode in Indian last-mile delivery, and arguing with the customer about it is both futile and insulting.

Handle it in two tracks. With the buyer, accept their account, apologise, and reschedule — they are not the problem and they are still willing. With the courier, raise it per shipment with whatever evidence you can assemble: the NDR timestamp, the buyer’s statement, whether any call to the buyer’s number is logged, and the attempt location if your courier exposes it.

The part that actually changes anything is the tally. One disputed attempt is noise. The same hub producing disputed attempts week after week is a pattern, and a pattern is a conversation with your account manager that you can win because you brought shipment IDs rather than a complaint. If it does not improve, it is a reason to shift that lane to another courier — which is slower and less satisfying than escalating, and the only lever that reliably works.

Running the queue

Give it an owner. NDR handling fails when it is everybody’s secondary task, because its deadline is invisible until the RTOs appear two weeks later.

Prioritise within the day, because attempts are scarce and time is the binding constraint. High order value first, since the loss is largest and the effort per order is the same. Then oldest NDR, since those have the fewest attempts left. Then the reason buckets with the best recovery odds — address and availability problems — ahead of refusals, which need more time and convert less often.

Write down the give-up rule before you need it. Something like: two voice attempts from different numbers, one WhatsApp, and if there is no response within a defined number of hours, release to RTO. Without a written rule the queue fills with orders nobody will close and nobody will kill, and the team’s time goes to the hopeless ones rather than the winnable ones. Releasing early also returns stock to the saleable pool sooner, which matters during a festive run when the same SKU is selling.

Decide in advance who can authorise what. If the agent on the phone cannot offer a discount, waive a handling fee, or push the reattempt to a different courier, every interesting case becomes an escalation and the clock runs out during it. Small, bounded authority at the point of contact is worth more than perfect control.

What to measure

Four numbers, and they answer different questions.

NDR rate — NDRs as a share of shipments — is an upstream quality signal. It tells you about address quality, phone quality and courier performance, not about your NDR team.

Contact rate — the share of NDRs where you reached an actual human — is your process signal. It is the number your channel mix and your calling discipline move, and it caps everything downstream.

Recovery rate — the share of NDRs eventually delivered — is the outcome. Track it separately for orders where you made contact and orders where you did not; the gap between those two is the clearest statement of what the function is worth.

Time to first contact is the lever. Of everything in this article, this is the variable most directly under your control and most tightly coupled to recovery, because it determines whether your information reaches the rider before the next attempt or after it.

Split all four by courier, by lane, by reason, and by first-time versus repeat buyer. The comparison that teaches you the most is the same lane across two couriers: when identical pincodes produce materially different NDR rates with different carriers, the difference is the carrier, and you can act on it. Where you have the volume, that is also the honest way to decide courier allocation — on your own delivery data rather than on rate cards.

Feed the reasons back upstream

Your NDR reason mix is a free diagnostic report on your checkout, and it is the part of NDR management with compounding returns. Recovery saves one order. Prevention saves every future order with the same defect.

A high share of address-quality NDRs points at your address capture — missing landmark field, no pincode-to-locality check, no validation on a suspiciously short address, an autofill that produces plausible nonsense. A high share of unreachable-phone NDRs points at number capture: no format validation, no verification step, numbers typed with a digit missing. Refusals point further upstream still — at product page expectations, at sizing information, at dispatch speed, at whether the total shown at checkout matches what the rider asks for at the door.

Repeat offenders deserve their own treatment. A buyer with multiple refused COD parcels across orders is not a recovery problem, they are a rules problem: prepaid-only, or a required advance, or a block. Pulling that pattern out of your own order history is more reliable than any shared blocklist, because it is your catalogue and your lanes.

The frame worth holding onto: an NDR you recover costs a phone call and a reattempt. An NDR you prevent costs nothing at all, and the reasons stacking up in your panel are telling you precisely which ones were preventable.

COD King sits at the prevention end of this — verifying COD orders, collecting an advance, and applying rules by pincode and customer history before a parcel is dispatched, so that fewer orders reach the NDR queue in the first place. The recovery work itself still belongs to your team and your courier panel, and it is worth staffing properly either way.