Setting Up Cash on Delivery on a WooCommerce Store: How to Choose a COD Plugin, Configure the Rules and Test It Before Launch
Cash on Delivery (COD) is built into WooCommerce, so a basic COD option costs nothing and takes minutes to switch on. The harder question is when the built-in method is enough and when your store needs a plugin for rules such as pincode limits, order-value caps, a handling fee or phone verification. The short answer: start with the built-in method if your catalogue is small and your delivery area is simple, and add a dedicated plugin only when you can name the specific rule you need and cannot achieve it with WooCommerce's own shipping and payment settings. This guide is for store owners and developers building COD into a WooCommerce checkout. It covers what the built-in method does, the rules most Indian stores want, how to evaluate a plugin before installing it, how to test it on a staging copy and which mistakes to avoid.
We keep to the website side. Courier selection, freight charges and settlement terms are separate subjects; here we deal only with what the checkout must show, store and enforce.
What the built-in COD method does
WooCommerce includes a Cash on Delivery payment method in its payment settings. When you enable it you can set a title and description shown at checkout, instructions that appear on the order confirmation page and email, and the shipping methods for which COD is allowed. You can also choose whether virtual products may be paid for by COD, which you will usually want to switch off.
When a customer chooses COD, WooCommerce creates the order without taking payment. By default the order moves to a status such as Processing or On hold, depending on the product type and settings, and your team packs and ships it. The courier collects payment at delivery and you reconcile it later against the courier's remittance. That is the whole flow: simple, but it has no opinion about who is allowed to use it.
Where the built-in method stops
The built-in method cannot, by itself, do the following:
- limit COD to certain pincodes, cities or states;
- add a COD fee that appears as its own line;
- set a minimum or maximum cart value for COD;
- hide COD for specific products or categories;
- require OTP or phone verification before accepting an order;
- hold or flag repeat offenders;
- show different payment options depending on the cart.
If your store needs none of these, stop here. Extra plugins add maintenance, conflicts and checkout weight. If you need several, the next sections explain how to decide.
Decide your COD rules before choosing any plugin
Plugins implement rules; they do not decide them. Write your rules in plain language first, then look for the simplest way to enforce each one.
| Rule question | Example answer | How it is usually enforced |
|---|---|---|
| Where is COD available? | Only pincodes your courier serves for COD | Shipping zones or a pincode plugin |
| What order values are allowed? | From a stated minimum up to a stated maximum | Plugin, or a small custom code snippet |
| Is there a fee? | A fixed fee shown as a separate line | Plugin or a WooCommerce fee through custom code |
| Which products are excluded? | Made-to-order, perishable or high-value items | Product or category rule in a plugin |
| Is verification required? | OTP to the mobile number for first-time COD orders | Verification plugin or service |
| What happens to risky orders? | Hold for a manual call, or offer prepaid only | Order status rules and staff process |
The answers depend on your own margins, products and courier terms; there is no universal setting. TODO: confirm each rule against your courier agreement and your accountant's treatment of any COD fee before turning it on.
Be honest at checkout
A COD fee that appears only at the last step annoys customers and increases abandoned checkouts. State the fee next to the COD option, and show it as a clear line in the order total. Describe any restriction in plain words, such as "COD is not available for orders above the stated limit". Our guide to UPI and COD options at checkout and the guide to COD rules and order verification explain how to present these choices without pressuring customers.
How to evaluate a COD plugin
Treat a COD plugin like any other code that sits in the checkout, where mistakes cost orders.
1. Check that it does the specific thing you need
Ignore long feature lists. Take your written rule list and tick off which rules each candidate supports. A plugin that does eight things you do not need and misses the one you do is the wrong plugin.
2. Check maintenance and compatibility
Open the plugin's listing and look at the last update date, the "tested up to" WordPress and WooCommerce versions, the support forum and the changelog. A plugin that has not been updated for a long time may break with a new WooCommerce release. This matters more now that WooCommerce stores order data in High-Performance Order Storage (HPOS) tables by default on new installs; plugins that read or write orders the old way can misbehave. See our guide to WooCommerce HPOS and confirm that the plugin declares HPOS compatibility. Also check compatibility with the WooCommerce block-based checkout if your store uses it, since some older plugins only work with the classic shortcode checkout. TODO: check the plugin's current compatibility statements on its listing at the time you buy.
3. Read the settings, not only the marketing page
Many plugins have a documentation page or a demo. Look at how rules are entered: can you upload a list of pincodes, or must you type each one? Can rules be combined? Is the fee configurable per shipping zone? A plugin that handles your case only through custom code may cost more in developer time than it saves.
4. Understand the cost
Note whether the licence is annual, whether updates and support stop when it lapses, and whether the price depends on the number of sites. Add the cost of any external service, such as an SMS provider for OTP messages, which usually charges per message.
5. Check privacy and data handling
A verification plugin handles mobile numbers and, sometimes, addresses. Find out where the data is sent and stored, whether a third party processes it and what your privacy notice must say. Our guide to DPDP Act compliance for websites explains how to treat personal data collected at checkout.
6. Count what else touches the checkout
Every extra plugin that modifies checkout fields, payment methods or shipping rates is another place for a conflict. Make a list of the plugins that already change checkout behaviour and test the new one with all of them active. Our plugin audit guide shows how to keep that list under control.
Configure COD step by step
Step 1: Work on a staging copy
Never change checkout settings first on the live site. Clone the store to a staging site, with outgoing emails and real payment gateways disabled, and make the changes there. Our article on staging, Git deployment and rollback explains the setup.
Step 2: Enable the built-in method and set the text
In the payment settings, enable Cash on Delivery, give it a clear title, and write a short description such as how payment is collected at the door and whether exact change is requested. Add instructions for the thank-you page and the order email. Restrict COD to the shipping methods where it applies.
Step 3: Set location rules
If your courier supports COD only in certain areas, decide whether to limit by shipping zone (states, ranges of postcodes) or by a plugin with a pincode list. Shipping zones are built in and are enough for broad regional limits. A plugin is needed for fine pincode control. Whichever you choose, make sure the checkout updates the available payment methods when the customer enters the pincode, and does not leave COD on screen until the last step and then reject it.
Step 4: Add value limits and fees
Set the minimum and maximum order value for COD, and add a COD fee only if you can justify it. Show the fee on the checkout before the customer places the order. Check how the fee interacts with tax display and invoices, and confirm treatment with your accountant. TODO: record how the COD fee is taxed and shown on the invoice, as agreed with your accountant.
Step 5: Exclude products that should never be COD
Mark virtual, downloadable, made-to-order or very high-value products as ineligible. Test mixed carts, in which one item is eligible and another is not, to see which rule wins and what the customer sees.
Step 6: Add verification where the risk justifies it
Phone verification adds friction, so use it where you have evidence of problems: for example, for first-time customers or for orders above a threshold. Remember that an OTP proves a person controls a phone number; it does not prove the person intends to accept the parcel. Combine it with address checks and a clear order confirmation message. Our guide to stopping fake orders and bot checkouts explains the other layers.
Step 7: Set order statuses and emails
Decide which status a COD order should take at each step, such as Awaiting confirmation, Processing, Shipped, Delivered and Cancelled, and make sure your emails match. Staff should be able to see at a glance which orders are unconfirmed. Test that cancelling an order restores stock.
Test before launch
Run these tests on staging, and again on the live site with a real small order after you deploy.
- Place a COD order with an allowed pincode and confirm the order, email and stock update.
- Try a pincode where COD is not allowed and confirm COD is hidden or clearly refused before payment.
- Try a cart below the minimum and above the maximum and confirm the message is clear.
- Add an excluded product to a mixed cart and confirm the behaviour matches your rule.
- Check that the COD fee, if any, appears as its own line in the cart, checkout, order email and invoice, and that tax is shown as agreed.
- Complete the verification flow on a real phone, including a wrong code and a resend.
- Cancel an order and confirm stock is restored and the status email is correct.
- Test both the classic and block checkout if your site could use either.
- Check the experience on a mid-range phone on a slow connection.
- Review the orders list and reports so that COD orders can be filtered and counted.
Our pre-launch testing checklist for online stores has a wider list that includes emails and tracking.
Common mistakes
- Showing COD everywhere, then rejecting at the last step. Update the options as soon as the pincode is known.
- Hiding the COD fee. Show it before the customer commits.
- Treating OTP as a full fraud defence. It is one layer.
- Installing several checkout plugins without testing them together.
- Skipping HPOS and block checkout compatibility checks.
- Not reviewing COD orders afterwards. Count cancelled and refused COD orders by pincode and product to see whether your rules need tightening. Compare the result with prepaid orders and adjust one rule at a time.
Frequently Asked Questions
Is WooCommerce Cash on Delivery free?
The built-in COD payment method is part of WooCommerce and has no licence fee. You may still pay for a plugin if you need pincode rules, fees or verification, and for any SMS service used for OTP messages. Courier charges and collection terms are separate and depend on your agreement.
Do I need a plugin to enable COD only for certain pincodes?
Not always. WooCommerce shipping zones can limit COD by state or postcode ranges. If you need to allow or block individual pincodes from a list, a plugin or custom code is usually required. Test that the payment options update as soon as the customer enters the pincode.
Should I charge a COD fee?
It can help cover handling and collection costs, but it may reduce conversions. Decide using your own numbers, show the fee clearly before the customer commits, and ask your accountant how to treat it on invoices. Compare conversion and cancellations before and after any change.
Does OTP verification stop fake COD orders?
It reduces orders placed with invalid or unreachable numbers, but it does not stop all fakes, since a person can confirm an OTP and still refuse the parcel. Use it with address checks, order limits for new customers and a confirmation message.
Can COD work alongside Razorpay, Cashfree or another online gateway?
Yes. COD is configured as a separate payment method next to your online gateway. Make sure the checkout shows both clearly and that order statuses differ between prepaid and COD orders, so staff know which orders still need payment collected.
Sources: WooCommerce documentation: Cash on Delivery, WooCommerce documentation: High-Performance Order Storage, WooCommerce documentation: Shipping zones, WordPress.org Plugin Directory guidelines. Plugin features and platform defaults change; verify them in current documentation before relying on this guide.
Working with Govindani Infotech on WooCommerce checkout
Govindani Infotech is a Pune-based website design and development company at 2nd Floor, Landmark Plaza, 206 Satara Road, Parvati Paytha, Pune 411009. We build WooCommerce and Shopify stores through our e-commerce service and set up checkout rules, payment options and order statuses as part of a build.
If you would like a review of your COD setup, message us on WhatsApp at wa.me/919201958278 or use the contact page. For a wider look at the checkout, see our checkout system page.
About the author: written by the Govindani Infotech e-commerce development team in Pune, drawing on our experience building and maintaining WooCommerce stores.