Skip to content
WooCommerce

Cash on Delivery in WooCommerce: Setup That Cuts Returns

Switching on COD takes a minute. Running it without a pile of refused parcels takes rules, a confirmation step and a reconciliation routine.

Shopping bags on a dark background
8 sections · 7 min read
In this article · 8 sections

A lot of your customers will not pay online, at least not for a first order from a shop they do not know yet. They want to see the parcel before handing over money. So you switch on cash on delivery, orders go up, and then the returns start: parcels refused at the door, customers who are “not at home” three times, phone numbers that ring out. The courier sends them back, and you pay for the trip both ways.

The cash on delivery WooCommerce offers out of the box is easy to switch on and harder to run well. The setting itself takes a minute. The work is in deciding who gets COD, on what orders, with what checks, and how the cash gets reconciled afterwards. This post covers the built-in setup first, then the rules and habits that keep COD useful rather than costly.

The built-in cash on delivery setting in WooCommerce

WooCommerce includes a cash on delivery payment method in its core, with no extra plugin. You will find it in the payments section of the WooCommerce settings. The main options are:

  • Enable. Switches the method on at checkout.
  • Title and description. What the customer sees. “Pay cash or UPI when your parcel arrives” is clearer than “COD”, and it tells customers whether the delivery person can take UPI, if your courier allows it.
  • Instructions. Text added to the thank-you page and order emails. Use it to say the customer should keep the exact amount ready and that a call may come to confirm.
  • Enable for shipping methods. Restricts COD to chosen shipping methods. Leave it blank and COD is offered with every method. Use it, for example, to allow COD only on courier delivery and not on international shipping.
  • Accept for virtual orders. Usually left off, since there is nothing to deliver.

COD orders normally go straight to the Processing status and reduce stock, because WooCommerce treats them as ready to fulfil even though no money has arrived. Keep that in mind when reading sales reports: those orders are promises, not income.

What the core setting cannot do

Store owners usually want more control than the built-in method gives. Common needs that require a plugin or a small piece of custom code:

  • Allowing COD only for certain pin codes, cities or states.
  • A maximum (or minimum) order value for COD.
  • Hiding COD for particular products or categories, such as made-to-order or high-value items.
  • Adding a handling charge to COD orders.
  • Offering COD only to returning customers, or blocking it for addresses with a history of refusals.
  • Asking for a part payment online, with the rest collected on delivery.

Several plugins handle combinations of these. Before installing one, check that it supports your WooCommerce version and the checkout type your store uses, since the newer block-based checkout and the older shortcode checkout do not always behave the same way with payment plugins. Test it on a staging copy of the store first.

Deciding on a COD setup for online store orders

Before touching any setting, write down your rules. A useful way to work through it:

  1. Where can your courier collect cash? Not every courier offers COD on every pin code. If you ship through an aggregator, it will show which areas are COD-serviceable. Our guide to linking Shiprocket with WooCommerce covers how COD orders pass through that kind of setup.
  2. Which orders are too risky? Very high-value orders, fragile goods and personalised items are the usual candidates to exclude.
  3. Is a COD charge fair for your customers? Some stores add one to cover the courier’s collection charge and returns; others absorb it to keep conversion up. Either is reasonable if it is shown clearly before the customer places the order.
  4. Will you confirm orders before dispatch? More on this below; it is one of the most useful habits you can build.
  5. What happens after a refusal? Decide whether that address can use COD again.

Payment options are also part of build scope. Pin-code rules, part-payments and confirmation flows are among the things that move the ecommerce development cost beyond a basic store.

Cutting refusals before the parcel leaves

Much of the cost of COD comes from parcels that come back. You cannot prevent every refusal, but a few steps reduce the obvious ones.

Confirm the order

A quick call, SMS or WhatsApp message before dispatch, asking the customer to confirm, catches fake orders, typing mistakes and second thoughts while the parcel is still on your shelf. Put COD orders into a “to confirm” step (an order note or a custom status) and only ship once confirmed. Some stores cancel unconfirmed orders after a set time and tell the customer so.

Make the checkout ask for what the courier needs

A required phone number, a pin code field that is checked against your COD areas, and a landmark field for addresses that are hard to find.

Show the delivery estimate honestly

Customers who expected the parcel in two days and get it in eight are more likely to refuse it. Use realistic wording.

Nudge towards prepaid

A small benefit for paying online, such as a discount or free shipping, moves some customers over without removing COD for those who need it. If you offer UPI at checkout, make it prominent; many COD customers simply did not see an easy way to pay. Our post on accepting UPI payments on a website explains the options.

Reconciling COD money

With prepaid orders, the gateway’s settlement report tells you what was paid. With COD, the cash travels from the customer to the delivery person, to the courier, sometimes through an aggregator, and finally to your bank, often in batches. Without a routine, it is easy to lose track.

A simple routine that works for small stores:

  • Mark COD orders Completed only when the courier confirms delivery, not when they are shipped.
  • Record the remittance reference on each order, or in a sheet, when money arrives.
  • Once a week, list delivered COD orders that have no remittance yet, and query the courier.
  • Mark refused parcels as Cancelled or Refunded (whichever fits your process) when they return, and restock them after checking condition.

Your accountant will also want COD sales recorded correctly against when money was received. Ask them how they prefer to see it.

Should your store offer COD at all?

For many Indian stores, yes, at least at the start. First-time buyers often trust a cash option more than an unknown checkout, and some customers simply prefer it. But it is a business decision, not a default, and the right answer depends on what you sell.

COD usually suits COD usually suits less
Everyday products at moderate prices High-value items where one refusal hurts
New stores building trust with first buyers Made-to-order or personalised goods
Customers in areas where online payment is less common Perishables that cannot be resold after a return
Stores with a confirmation step in place International orders

A middle path is to offer COD on a limited range of products and order values, then review your refusal rate every month or two. If it climbs, tighten the rules. If it stays low, consider widening them. Your own order history is the best guide, so keep the numbers where you can see them.

Mistakes that make COD expensive

  • Offering it everywhere by default. Areas your courier cannot collect from turn into failed deliveries.
  • No cap on order value. A single refused high-value parcel can wipe out a week’s margin.
  • Shipping without confirmation. It is the cheapest fix, and the easiest one to skip on a busy day.
  • Hiding the COD charge until the last step. Customers notice, and some abandon the order.
  • Treating Processing COD orders as revenue. They are not paid until the cash arrives.
  • Stacking several COD plugins. Rules from different plugins can contradict each other and make the method disappear at checkout for no clear reason.

When COD disappears from checkout

If customers say there is no cash option, check in this order: that the method is still enabled; whether the “enable for shipping methods” list excludes the method they chose; whether a plugin rule (pin code, order value, product) is hiding it; and whether the cart contains only virtual items. If the whole checkout is misbehaving rather than just this one method, our page on fixing WooCommerce checkout errors covers the wider causes.

If you would like your COD rules set up properly, with pin-code limits, a clear charge and a confirmation step, our WooCommerce support sessions cover exactly this kind of change on an existing store. COD will always carry some returns; the goal is to keep them the exception.

Next in this series: WooCommerce GST Invoice Setup: What to Check

Is Your Website Working Properly?

Get a free website health check from WebMaintor. We'll review your website's speed, security, forms, and technical health — and tell you exactly what needs attention.

No obligation. No automated reports. A real review by our team.