Short answer
A COD parcel comes back when the buyer won’t pay at the door, or is never reached. Most refusals start before the parcel ships: an impulse order nobody confirmed, a customer who forgot, a wrong address or phone number, a price that surprised them, or a delivery that took too long. You cut your COD return rate by confirming every order fast, checking the address before shipping, and keeping the buyer informed until the courier arrives. In the operations I run, that moved acceptance from 65–70% to 75–80%, from about one parcel in three coming back to one in four or five.
What is a COD return?
A COD return is a cash-on-delivery parcel that goes back to the seller instead of being paid for. The customer never paid, so there is nothing to refund, but the parcel still made the trip. It happens in three ways:
- Refused at the door: the courier reaches the customer, who says no.
- Not collected: the parcel waits at a pickup point or depot and nobody comes for it before the deadline.
- Undeliverable: wrong or incomplete address, a phone that doesn’t answer, nobody home after the delivery attempts.
Carriers and logistics partners often call these RTO (return to origin). Whatever the name, the cost is similar: you paid outbound shipping, you usually pay to bring the parcel back, and depending on your carrier contract there can be a COD fee or a failed-delivery fee on top. The product spends weeks travelling instead of being sold, and some of it comes back damaged or unsellable. That is why refused parcels hurt COD profit far more than a cancelled order ever does.
How to calculate your COD return rate
The basic formula is simple:
COD return rate
Parcels returned ÷ parcels shipped, for the same group of orders. Acceptance rate is the other side: parcels delivered and paid ÷ parcels shipped.
Three details make the number useful instead of misleading:
- Divide by shipped, not by ordered. Orders cancelled at confirmation never left the warehouse. They belong in your confirmation rate, not in your return rate.
- Count by shipping date. Returns arrive weeks after the parcel left. If you compare this week’s returns with this week’s shipments, the rate jumps around for no reason. Group parcels by the week they shipped and wait until every parcel in that group has a final status.
- Split it. One overall rate hides everything. Break it down by country, carrier, store, product and ad campaign. The problem is rarely everywhere at once.
Rates differ a lot between countries, so compare yourself with the right market. I keep ranges by country on the COD delivery rates in Europe page.
Why COD parcels get refused: the reasons I see most
1. The order was never really confirmed
Many COD orders come from a quick tap on an ad. If nobody checks with the customer, the order ships on the strength of an impulse that may be gone by the time the courier rings. In the operations I run, this was the biggest leak: without a fast confirmation, customers cooled off or simply forgot.
2. The customer forgot, or doesn’t recognise the parcel
A parcel arrives a week later from a sender name the customer has never seen, with an amount to pay in cash. If nothing reminded them what they ordered and when it was coming, saying no is the safe reaction.
3. Wrong address or phone number
A missing house number, a swapped postcode or one wrong digit in the phone number turns into a failed delivery, a second shipping fee and no revenue. These are not refusals by choice, but they land in the same returned pile.
4. A price surprise at the door
If the amount the courier asks for doesn’t match what the customer remembers (shipping added, a different currency, a bundle they didn’t mean to pick), many will refuse rather than argue on the doorstep.
5. Delivery took too long
The longer the wait, the more time the customer has to buy elsewhere, change their mind or run out of cash for that week. Cross-border routes with slow handovers suffer most.
6. The product didn’t match the ad
When the creative promises more than the product delivers, customers who look at the box, or read reviews while they wait, refuse it. This one shows up clearly when you split refusals by product and campaign.
7. Duplicate, fake and repeat-refuser orders
The same customer ordering twice by mistake, test orders, pranks, and people who refuse again and again. Each one is a parcel shipped for nothing.
How to cut refusals before the parcel ships
Most of the fixes sit between the order and the warehouse. Once a parcel is on the road, your options shrink to reminders.
- Confirm every order, fast. A call or a message soon after the order, with the product, the total to pay and the address read back. I compare the channels in COD order confirmation: call, SMS or WhatsApp?
- Validate the address and phone before shipping. Check that the street exists, the postcode matches the town and the phone number has the right format for the country. Fix it with the customer during confirmation.
- Show the full price everywhere. The amount on the product page, the order form, the confirmation message and the courier’s device should be the same number.
- Catch duplicates and repeat refusers. Merge duplicate orders, and flag phone numbers with a history of refusals for an extra check before shipping. Keep the data you store for this limited and lawful.
- Don’t ship what you couldn’t confirm. An order nobody answered for is the order most likely to come back.
After it ships: keep the buyer expecting the parcel
Once confirmed, the job is to make sure the customer recognises the parcel and has the cash ready when it arrives:
- Message at each stage: confirmed, prepared, shipped, out for delivery. Short messages, in the customer’s language, with the amount to pay.
- Remind pickup-point customers before the parcel’s holding period runs out.
- Watch carrier statuses daily. A parcel stuck on “failed attempt” can often be saved with one call to the customer before it is sent back.
- Use the right carrier per country. When one carrier performs worse on the same products and customers, move volume.
What changed in the operations I run
For the two COD operators I build and run the back office for (five stores, ten countries, around 100,000 orders in twelve months), acceptance was stuck at 65–70%. About one parcel in three came back. The fixes were the ones above, wired into one pipeline: one queue for all stores, fast confirmation by call, message or form, address and phone checks, carrier routing per country, and automatic messages per country and language.
Acceptance now holds at 75–80%, and net margin moved from 35–40% to 45–50% over the same period. Every refusal you prevent either becomes a delivered, paid parcel or an order cancelled before it cost you two shipping legs. To see what a few points of acceptance are worth on your own numbers, try the COD profit calculator. If you want this built for your stores, see back-office automation.
Frequently Asked Questions
What is a COD return?
A COD return is a cash-on-delivery parcel that goes back to the seller instead of being paid for: refused at the door, never collected from a pickup point, or undeliverable. There is nothing to refund, but the seller has paid outbound shipping and usually return shipping, plus fees depending on the carrier contract.
How do you calculate COD return rate?
Divide the parcels returned by the parcels shipped, for the same group of orders grouped by shipping date. Acceptance rate is the other side: parcels delivered and paid divided by parcels shipped. Leave out orders cancelled before shipping, and split the rate by country, carrier, store and product.
What is a good COD return rate?
It depends heavily on the country, the product and the price, so there is no single benchmark. In the operations I run, acceptance moved from 65–70% to 75–80%, which means returns went from roughly one parcel in three to one in four or five. Compare yourself with your own countries, not with a global average.
How do you reduce COD refusals?
Most of the work happens before shipping: confirm every order fast, check the address and phone number, show the same total everywhere, catch duplicate orders and repeat refusers, and don’t ship orders you couldn’t confirm. After shipping, message the customer at each stage until delivery.
Losing too many parcels at the door?
I build the back office that confirms, checks and follows every COD order from the click to the collected cash, across stores and countries.
Get a custom quote →