Why COD Customers Refuse Delivery, and How to Cut Your Refusal Rate

A single cardboard parcel left on the step in front of a closed front door

A courier drives to the address, knocks, and comes back with the box. Nothing was stolen and nothing broke. You still lost money on that order, and you will lose it again tomorrow unless you know which of six things went wrong.

Refusal rate is the number that decides whether a cash-on-delivery store is a business or a hobby. This article covers why customers refuse, in rough order of how much each reason costs, and which fixes actually move the number.

What one refusal costs

Start with the money, because it changes which reasons you care about. A refused order does not usually cost you the product — the box comes back and you sell it again. What you lose is:

  • the shipping out,
  • the shipping back,
  • the ad spend that bought a customer who never paid,
  • and whatever the confirmation attempt cost you.

On a typical small-ticket store that is somewhere around $12 of real loss on a $30 order. Push the delivery rate down far enough and profitable campaigns turn into losses while your ad dashboard keeps reporting the same healthy number. We worked that arithmetic through in detail in what a COD order really earns you.

So: every percentage point of refusal is money, and the reasons are not equally expensive.

The six reasons customers refuse

1. They changed their mind

This is the big one, and it is mostly a clock problem. A COD order is often an impulse — someone saw an ad, liked the thing, and ordered it in forty seconds without opening their wallet. That feeling fades. By day four the box at the door belongs to a different person from the one who ordered it.

Nothing about your product page caused this, which is why rewriting the description does not help. Time caused it.

2. They did not have the cash

The customer still wants the order. They simply do not have the right notes in the house on the day the courier turns up, and the courier cannot wait while they walk to a cash machine.

This one is almost entirely preventable and is routinely ignored. Most COD buyers never see the exact amount they will be asked for until the moment they are asked for it.

3. Nobody was home

Delivery attempts land during working hours. Many of your customers are at work during working hours. The courier marks it undelivered, tries once more, and sends it back.

Couriers rarely ask the customer when to come. You can.

4. The order was never real

Bots, a competitor placing junk orders, a child on a phone, or someone typing a fake number to see the next page. These orders look exactly like good ones in your dashboard, and they carry the full cost of a real delivery attempt.

They tend to cluster: the same address with small variations, the same number with a digit changed, bursts of orders within a few minutes.

5. The address was wrong or incomplete

Hand-typed addresses in markets without strict postal formats lose a building number, a floor, or a neighbourhood. The courier calls. If the customer does not pick up, the box goes back.

The cost here is subtle: the customer genuinely wanted the order, and you lost it to a missing line of text.

6. Something unexpected arrived

A duplicate order placed twice by accident. A family member who refuses a box nobody told them about. An order that arrives after the customer already bought the item elsewhere. Individually small, collectively a few points of your rate.

What actually moves the number

Ranked by how much they tend to change the rate, against how hard they are to put in place.

FixWhich reason it answersEffort
Ask when to call, and call thenChanged mind, nobody homeLow
Show the exact amount before they orderNo cash on handLow
Take a small payment upfrontChanged mind, not realMedium
Autocomplete the address as they typeWrong addressLow
Block repeat and junk ordersNot realLow
Ship fasterChanged mindHigh — it is a courier contract

Ask when to call — and let them answer

A confirmation call that reaches nobody is the same as no confirmation at all. If the buyer picks a window when they are free, you reach a far higher share of them on the first attempt, and the ones you reach are the ones who still want the order.

two or three call windows set up, e.g. Morning 9:00–13:00 and Evening 18:00–23:00
The buyer picks the window. Your call centre rings when they said.

It costs one extra question on the form, and it is the cheapest point on this list.

Say the exact amount, before they commit

Put the full total in front of the customer at the moment of ordering — product, delivery, any fee — and repeat it on the confirmation. Someone who knows they need 349 in cash on Thursday gets 349 in cash by Thursday. Someone who was never told goes looking for their wallet while the courier waits.

Take something upfront

A customer who has paid nothing has no reason to answer the door. A customer who has paid even a small part of the order usually does. Offering a discount for paying in advance converts your least committed buyers into your most committed ones, and the discount is almost always cheaper than two shipping legs and a lost sale.

the prepayment button switched on with its discount percentage filled in
A discount for paying up front costs less than two shipping legs.

It will not suit every market. Where it does, it is the single strongest lever on this list.

Fix the address while they are still typing

Address autocomplete turns a free-text box into a real, deliverable address, and it does it before the order exists rather than after a courier has already failed to find the place.

Block what was never real

Blocking a phone number, an address or a postcode that has already cost you two returns is not harsh, it is arithmetic. A cap on orders per buyer within a few hours stops the bursts. Invisible bot protection on the form stops the rest without adding a step for real customers.

What does not move the number

Worth saying plainly, because these absorb a lot of effort:

  • Longer product descriptions. The refusal happens three days after anyone read the page.
  • Email reminders. In most COD markets the email address is half-made-up and never checked. The phone is the channel.
  • A blanket COD surcharge. It pushes away careful buyers along with careless ones, and the careful ones were the profitable orders.
  • More form fields. Every extra question costs you orders at the top of the funnel. Unless a field genuinely improves delivery, it is a net loss — and most do not.

That last one is worth sitting with, because the instinct when refusals rise is to ask the customer for more. Usually it makes things worse at both ends.

Measure first, then change one thing

Refusal rate is not a number Shopify can give you. Shopify records the order as created and hears nothing more. Unless something in your workflow writes back what happened at the door, your real rate is invisible — which is how stores run for months on a figure they have never actually seen.

So before changing anything: record the outcome of every order for four weeks. Delivered or returned. That gives you a baseline. Then apply one fix, and watch one number.

Changing three things at once tells you the rate moved. It does not tell you which change did it, and next quarter you will be guessing again.

CODPrem covers the measuring and most of this list: a confirmation-window question on the form, the full total shown before the buyer commits, an optional prepayment button with its own discount, Google address autocomplete, blocklists by phone, address, email and postcode, a cap on orders per buyer, and invisible bot protection. Delivered and returned are marked from the dashboard or read back from your courier’s own column in a shared Google Sheet, so the rate comes from what really happened rather than from an estimate.

Common questions

What is a normal COD refusal rate?

Published figures usually land between 20% and 30%, against under 2% for prepaid. But the average matters far less than your own break-even, which depends on your margin. Work out the rate at which your store stops making money and treat that as the line.

Does a refused order cost me the product?

Usually not. The goods come back and can be sold again. Perishable or custom-made items are the exception, and those stores need a much lower refusal rate to survive.

Will asking for partial payment upfront lose me orders?

Some, yes. The orders it loses are weighted towards the ones that would have been refused anyway. Judge it on delivered orders and profit, never on orders placed — by the order-placed measure it always looks like a mistake.

Should I just stop offering cash on delivery?

In markets where it is 70% to 95% of all ecommerce, no. The answer is not to remove it but to stop treating a placed COD order as a sale. It is a sale once someone pays at the door.

The one thing to do this week

Pick the cheapest fix on the list — ask your customers when to call, and call then. It costs one question on the form, it answers the two most expensive reasons on this page, and you will see it in the rate inside a month.

Quick Overview