How to Reduce Failed Cash-on-Delivery Orders: A Confirmation Workflow

Most failed cash-on-delivery orders are decided before the rider leaves. Use this confirmation workflow, script, address checklist and weekly review to fix them.

Cover graphic for the Webift guide: How to Reduce Failed Cash-on-Delivery Orders

The short answer: most failed cash-on-delivery orders are decided before the rider leaves. Treat every COD order as unconfirmed until a person has replied, check the address and phone number against a short checklist, promise a delivery window you can keep, and record the reason every time an order fails. Then review those reasons weekly and fix the biggest cause. The workflow below does that without adding a full-time job.

Last updated 28 October 2026.

This guide assumes you already offer cash on delivery and know its general pros and cons. If you do not, start with pay on delivery in Nigeria: how sellers can offer it without losing money, which covers the benefits, risks, delivery areas, deposits and rider reconciliation. We will not repeat that. This post goes deeper on three things: confirming each order, checking the address, and measuring why orders fail.

What counts as a failed COD order

An order has failed when a rider attempted delivery, or was about to, and no cash was collected. It is useful to separate causes, because each one has a different fix.

Cause code What happened
Unreachable The customer did not pick calls or reply
Not at address Customer or receiver absent, or gate not opened
Refused Customer changed their mind at the door
Wrong address Address was incomplete or outside your delivery area
No cash Customer could not pay the amount
Our fault Wrong item, late, damaged, or no rider available

Include "our fault" on purpose. If you only record customer reasons, you will never see your own mistakes.

Step 1: treat every COD order as unconfirmed

When a COD order arrives, it is only a request. Do not pack or dispatch until the customer has confirmed.

If you use Webift, new orders arrive with the status "new" and you are notified. Cash on delivery is available only on orders made up entirely of physical products; an order that includes a digital product has to be paid for upfront. Move the order to "confirmed" only after the customer has replied. Payment status is tracked separately from order status, so a confirmed order with pending payment is an easy state to spot. A cash-on-delivery payment stays "pending" until you press Confirm Cash Collected on the order, so do that when the rider hands the money over. If the customer never answers and you cancel the order, the items return to your inventory automatically, so you do not need to adjust stock by hand.

If you use a spreadsheet or a chat inbox, mirror the idea: a column called "confirmed?" that must read yes before an order can be packed.

Step 2: a confirmation workflow with timings

These timings are suggestions, not rules. Adjust them to your business hours.

When Action
Within about 30 minutes of the order Send the first confirmation message
About 3 to 4 hours later, if no reply Call once, then send a short reminder
Next morning Final message with the cancel time
End of that day Cancel unconfirmed orders and record cause "unreachable"
Dispatch morning Send the delivery window and the rider's number

Keep a written rule that unconfirmed orders are not dispatched. Under pressure, it is tempting to send one anyway because the customer "sounded keen". Those are the orders that fail.

Script 1: first confirmation message

Adapt the words to your own voice.

"Hello [Name], thank you for your order [Order number] with [Shop name]. You ordered [item, size, colour] for ₦[total], including ₦[delivery fee] delivery to [full address]. You will pay on delivery. Please reply YES to confirm, and tell us the best phone number for the rider and who will receive the parcel. If any detail is wrong, reply with the correction."

Script 2: reminder

"Hello [Name], just checking on order [Order number]. We will hold it until [time and date], after which we will have to cancel it. Reply YES to keep it, or tell us if you would like to change anything."

Script 3: day-of-delivery message

"Hello [Name], your order [Order number] is on its way. Delivery is expected between [start] and [end] today. The rider, [Rider name], will call from [phone number]. Please keep ₦[total] ready and have your phone on."

Notice what these do. They state the total in naira, confirm the address and the person, give a time limit, and set the expectation that cash is due at the door. If you send them yourself through WhatsApp, remember that Webift does not send WhatsApp messages; the click-to-chat link on your store only opens a conversation, so the messages come from you or your team.

A note on messaging and customer data

Messaging customers about the order they just placed is part of carrying out that order. Under Nigeria's Data Protection Act 2023, section 25 treats processing that is necessary to perform a contract with the person as a lawful basis, and consent is a separate basis for other specific purposes. This is general information, not legal advice. In practice: use the phone number and address for the delivery, and ask for clear permission before you use them for promotions. Do not paste customer details into public groups.

Step 3: address-quality checks

Failed deliveries often start with a vague address. Run this checklist before dispatch. It takes about two minutes.

  • Full address in the right order: house number, street, area, city, state.
  • A landmark that a rider can ask a stranger about, such as a junction, school or filling station.
  • A second phone number, ideally of someone who will actually be at the location.
  • Receiver name, if different from the buyer.
  • Delivery area check: is the address inside a zone you serve, and does the fee match that zone?
  • Access notes: gated estate, security post, floor and flat number, office reception hours.
  • Availability: will someone be there during your delivery window?
  • Consistency: does the state on the address match the delivery zone and fee on the order? A mismatch is a prompt to ask, not to accuse.
  • History: has this phone number failed with you before? One failed order might be bad luck. Repeated failures are information.

For customers with repeated failures, you can ask for prepayment or a part payment. Pay on delivery in Nigeria covers deposits, so use that guide for the details. Apply the rule to everyone with the same history so it is fair.

Step 4: promise delivery windows you can keep

A customer who is told "delivery in 1 to 3 days" cannot plan to be home. A customer who is told "Tuesday between 12 and 5 pm" can. Practical rules:

  • Quote a window per zone, based on actual rider performance, not your best day.
  • Set a daily cut-off time. Orders confirmed before it go out the next working day. After it, they wait.
  • Say what happens if nobody answers: for example, "The rider will call twice and wait ten minutes. After that we will contact you to rearrange."
  • Warn about known disruptions, like heavy rain, public holidays or road closures, before the customer asks.
  • Keep delivery estimates and fees in one place so everyone quotes the same thing. Webift stores show delivery zones with fees and estimates, and how to handle delivery for your online store explains how to price and structure them.

Step 5: measure failures by cause

You cannot improve what you do not count. Use one line per order in a simple log: order number, date, zone, order value, confirmed yes or no, delivery result, and cause code if it failed.

Two rates are worth watching.

  • Pre-dispatch drop-off rate: orders cancelled before dispatch divided by COD orders placed. This is the cheap failure, because nothing was spent on a rider.
  • Dispatch failure rate: failed deliveries divided by orders dispatched. This is the expensive one.

An illustrative week (made-up numbers)

You receive 95 COD orders. At confirmation, 15 drop out because customers are unreachable or have changed their minds. So 95 - 15 = 80 orders are dispatched. Of those, 71 are delivered and paid, and 9 fail.

  • Dispatch failure rate: 9 divided by 80 is 11.25%.
  • Delivered rate: 71 divided by 80 is 88.75%. Check: 11.25% + 88.75% = 100%.

The 9 failures by cause:

Cause Count Share of the 9
Unreachable 3 33%
Not at address 2 22%
Refused 2 22%
Wrong address 1 11%
No cash 1 11%

Check: 3 + 2 + 2 + 1 + 1 = 9. Percentages are rounded and add up to 99%.

If each failed delivery costs ₦2,500 out and ₦2,500 back, that is ₦5,000 per failure, so 9 failures cost 9 x ₦5,000 = ₦45,000 for the week, before counting lost time and tied-up stock. How to calculate the real profit on each online order shows how to count those failures in your profit.

What would you fix first? "Unreachable" is the biggest group, so check that you collected a second phone number and that your reminder step ran. "Refused" and "not at address" both suggest the customer was not ready when the rider came. A day-of-delivery message with a window may help. Make one change at a time and watch the next few weeks to see if it works.

Step 6: a 15-minute weekly review

Hold this at the same time each week, ideally with whoever dispatches and whoever talks to customers.

  1. Count orders placed, dropped before dispatch, dispatched, delivered and failed.
  2. Work out both rates and compare with last week.
  3. Group the failures by cause.
  4. Pick the single biggest cause and one change to test.
  5. Check whether any rider, zone or time of day has more failures than others.
  6. Record any "our fault" cases and what you will do differently.
  7. Write down the change, who owns it and the date to check its effect.

Small samples are noisy. A week with three failures versus five may mean nothing; a month-long pattern usually does.

Common mistakes

  • Dispatching unconfirmed orders because the shelf is full and the customer seems keen.
  • Confirming the product but not the delivery address or the receiver.
  • Promising "today" when you cannot keep it.
  • Blaming customers for every failure, which stops you from seeing late riders, wrong parcels and broken promises.
  • Skipping the log. Without it every week feels like a different problem.

FAQs

How many failed deliveries are normal?

There is no honest universal figure to quote. Compare yourself with your own previous weeks. If your dispatch failure rate falls after you add a confirmation step, the step is working.

Should I stop offering cash on delivery?

Not necessarily. Some customers will only buy this way. Fix confirmation, addresses and promises first, then see how much of the problem remains. If failures still cost more than the extra sales are worth, limit COD to certain areas or offer another payment option.

What if the customer never replies to my message?

Follow the timings in the workflow, then cancel the order and record the cause. Do not dispatch an order the customer has not acknowledged.

Can I charge customers for failed deliveries?

You can put a clear policy on your store and in your confirmation message, but check your own terms and local consumer rules. This is a business decision rather than something this guide can advise on, and it can put some customers off. If you do it, state it before they order.

Putting it in your tools

Most of this works with a spreadsheet and a chat app. If you want order statuses, payment status and stock in one place, Webift records a new, confirmed, processing, shipped and delivered order status separately from payment status, offers cash on delivery for physical products only, and returns items to stock when an order is cancelled. You can create a free Webift store and test your confirmation workflow with a few real orders.

Start selling online with Webift

Create your store, add products and accept payments — built for Nigeria and Africa.

Create your store