How can you reduce fake COD orders in Pakistan? Ask every cash-on-delivery customer to confirm the order on WhatsApp before you ship it. In WooCommerce this means holding new COD orders as “On hold”, sending an approved WhatsApp message with Confirm and Cancel buttons, and moving the order to “Processing” only when the customer taps Confirm. Orders that never get a reply are reminded once and then cancelled or reviewed by a person. This guide shows the full method, the exact WooCommerce hook, the message wording and how to measure whether it works.

The short version
- By default WooCommerce marks a COD order as Processing, so it enters your packing queue at once. You have to change that to hold it.
- A WhatsApp confirmation costs one utility message per order. A refused parcel, often from fake COD orders, costs shipping both ways, packing and time.
- Confirmation reduces fake COD orders and careless ones, but it does not fix wrong addresses or courier delays. Measure the result with your own numbers.
- Your team keeps control: unclear replies go to a person, not a bot.
In this guide
Why fake COD orders happen in Pakistan
Cash on delivery is how most online shoppers in Pakistan pay. A survey of Chainstores Association of Pakistan members for July to December 2020, reported by Business Recorder, found that fake orders were among the top problems retailers named, and that most responding retailers handled over 70 percent of their online orders by cash on delivery. That survey is a few years old, so use it as context, not as a current figure for your store.
Not every failed COD order is fake. Think of four kinds:
- Fake COD orders. Someone enters a random number and address as a prank.
- Impulse orders. The customer changes their mind by the time the courier arrives.
- Unreachable customers. The phone is off or the number has a typo.
- Address problems. The courier cannot find the location, and nobody answers the phone.
A WhatsApp confirmation helps most against fake COD orders of the first three kinds, because it forces a small act of commitment and proves the number works. It helps only a little with the fourth, which needs address checks. Treat confirming the customer and verifying the address as two separate problems.
What fake COD orders really cost you
Before you add any tool, work out what fake COD orders and other failed parcels cost. Most stores guess too low because they only count the courier fee. Use this worksheet with your own numbers:
| Cost line | Where to find it |
|---|---|
| Outbound courier fee you paid | Courier invoice |
| Return courier fee | Courier invoice or return policy |
| Packaging that cannot be reused | Your supplier price |
| Staff time to pack, call and unpack | Minutes × hourly cost |
| Product damage or loss on return | Share of returns that cannot be resold |
| Stock tied up while the parcel travels | Days in transit × cost of holding stock |
| Advertising spent to win the order | Cost per order from your ad reports |
Add the lines to get your cost per failed order. Then compare it with the cost of one WhatsApp utility message, which you can read from Meta’s rate card for Pakistan. If your failed-order cost is many times higher than a message, even a small drop in refused parcels pays for the system. The break-even point is simple: the number of failed orders you avoid per month multiplied by your cost per failed order must exceed the monthly message cost.
The confirm-before-ship flow
The idea is one extra step between “order placed” and “packed” that keeps fake COD orders out of your packing queue. Here is the flow we recommend for a WooCommerce store.
| Step | WooCommerce status | What happens |
|---|---|---|
| 1. Order placed with COD | On hold | The order is created but kept out of the packing queue |
| 2. Confirmation sent | On hold | An approved WhatsApp template with Confirm and Cancel buttons goes to the customer |
| 3a. Customer taps Confirm | Processing | The order enters the packing queue |
| 3b. Customer taps Cancel | Cancelled | Stock is returned and your team is told |
| 3c. No reply after your set time | On hold | One reminder is sent, then a person reviews or the order is cancelled |
| 4. Customer types something unexpected | On hold | The chat goes to a person on your team |
You can see this exact flow running in the simulator at the top of our WhatsApp automation for WooCommerce page. Pick a sample order, place it, tap Confirm and watch the status change.
How to set it up in WooCommerce
Step 1: hold COD orders until they are confirmed
WooCommerce’s cash-on-delivery gateway sets a new order to Processing by default (or On hold if the order has a downloadable item). The gateway passes that status through a filter named woocommerce_cod_process_payment_order_status, which you can see in the WooCommerce source code. To hold every COD order, add this to a small custom plugin or your child theme’s functions.php:
add_filter( 'woocommerce_cod_process_payment_order_status', function ( $status, $order ) {
return 'on-hold';
}, 10, 2 );
Test this on a staging copy first. In a default WooCommerce setup, stock is held for on-hold orders and returned when an order is cancelled, but confirm that on your own store and with any stock plugins you use. Also check that your emails still make sense: the customer will see an “On hold” order email until they confirm, so adjust that wording.
Step 2: send the confirmation when the order is created
WooCommerce can send a webhook when an order is created. In WooCommerce, go to Settings, Advanced, Webhooks and add one for the order-created topic that points to your automation. Your automation then calls the WhatsApp Business API with the approved template and the order details. If you are not set up yet, start with our guide to getting the WhatsApp Business API in Pakistan.
Two checks save a lot of pain. WooCommerce disables a webhook after more than five consecutive failed deliveries, so add an alert if your endpoint goes down. And log each delivery under WooCommerce, Status, Logs, in the webhooks-delivery source, so you can see what was sent.
Step 3: read the customer’s reply
When the customer taps a button, WhatsApp sends a webhook to your automation. Map each button to a status:
- Confirm → set the order to Processing.
- Cancel → set the order to Cancelled.
You change the status through the WooCommerce REST API with a request like this (use your own site address, order number and API keys):
curl -X PUT "https://yourstore.pk/wp-json/wc/v3/orders/1042" \
-u "ck_your_key:cs_your_secret" \
-H "Content-Type: application/json" \
-d '{"status":"processing"}'
Keep the API keys on the server only, never in a browser or a public file.
Step 4: decide what happens when nobody replies
This is the rule most stores forget, and it is where unconfirmed fake COD orders pile up. Write it down before you launch:
- Send one reminder after a delay you choose, for example the next morning.
- If there is still no reply, either cancel the order or send it to a person who can phone the customer.
- Never keep orders in On hold forever. They tie up stock and clutter your admin.
Step 5: show only confirmed orders to the packing team
Filter your order list by Processing so the team packs only confirmed orders. If you use a dashboard, our web tools and dashboards service can build a packing screen that shows only confirmed orders and flags the unconfirmed ones.
What the confirmation message should say
An order confirmation is a utility message in Meta’s categories, because it is tied to a specific transaction. Keep it free of offers. Meta’s template guidelines say a utility message that contains promotional content, such as an order update with a discount, is treated as marketing. Here is a safe example:
Template: cod_order_confirmation (English)
Body: Hi {{1}}, we received your order {{2}} from {{3}} (cash on delivery, total Rs. {{4}}). Please confirm it so we can ship it.
Buttons: Confirm order · Cancel order
A matching Urdu version must be submitted as its own template, because Meta does not translate template text for you:
Template: cod_order_confirmation (Urdu)
Body: السلام علیکم {{1}}! آپ کا آرڈر {{2}} ({{3}} سے، کیش آن ڈیلیوری، کل رقم Rs. {{4}}) موصول ہو گیا ہے۔ براہِ کرم بھیجنے سے پہلے تصدیق کریں۔
Buttons: آرڈر کنفرم کریں · آرڈر منسوخ کریں
More wording, categories and approval tips are in our guide to WhatsApp message templates for WooCommerce.
Who should confirm to stop fake COD orders?
You do not have to treat every customer the same when you filter fake COD orders. A risk-based rule keeps friction low for good customers. These are starting suggestions, not fixed rules. Adjust them with your own data.
| Customer type | Suggested rule |
|---|---|
| Repeat customer with delivered orders and no refusals | Skip confirmation, or send an information-only message |
| First order, low value | Confirmation by WhatsApp |
| First order, high value | Confirmation, plus a phone call if there is no reply |
| Customer with a past refused parcel | Confirmation, or ask for advance payment |
| Remote area with a history of failed deliveries | Confirm the address as well as the order |
Other ways to reduce fake COD orders alongside confirmation
- Address checks. Ask for a landmark and a second phone number at checkout. A confirmation message cannot find a house that has no clear address.
- Limit where COD is offered. WooCommerce’s cash-on-delivery settings can restrict COD to selected shipping methods, and plugins can add rules by area or order value.
- Offer a prepaid option. A small discount or a deposit for high-risk orders moves some customers away from COD.
- Record refusals. Keep a note of customers who refuse parcels so you can apply the rules in the table above and spot repeat fake COD orders.
- Keep a person available. WhatsApp’s business policy expects a clear path to a human even when you automate. With WhatsApp coexistence, your team can answer from the Business app on the same number.
Consent: what to tell customers at checkout
WhatsApp’s business messaging policy says you may contact people only if they gave you their number and opted in to receive your messages, and the opt-in should cover the types of message you will send. Add a line at checkout that says so, for example:
I agree to receive order updates about this purchase on WhatsApp at the number above. I can reply STOP to opt out.
Keep order updates and promotions separate. A customer who agrees to order updates has not agreed to offers.
How to measure whether fake COD orders drop
Do not trust a before-and-after comparison on its own, because seasons, campaigns and couriers change. A fairer test of how many fake COD orders you stop takes a month:
- Record your current refused or undelivered rate for COD orders, and your average cost per failed order.
- Turn confirmation on for most orders, but leave a small group (for example one in ten) unconfirmed as a control.
- After four weeks, compare the refused rate of confirmed orders with the control group.
- Track the confirmation rate (how many customers reply) and the time to confirm. A low reply rate may mean the message is unclear or the number field has typos.
- Subtract the monthly message cost from the money saved. Use your own numbers.
If the control group performs the same, fake COD orders are not your main problem and you should look at addresses and courier performance.
What WhatsApp confirmation will not fix
- A courier that does not attempt delivery properly.
- Wrong or incomplete addresses.
- Customers who confirm and still refuse at the door. The rate of fake COD orders falls, but it does not reach zero.
- Poor product photos or descriptions that cause returns.
Being honest about this up front helps you set a realistic target for fake COD orders and avoid blaming the tool for problems it was never meant to solve.
Frequently asked questions
Does WhatsApp confirmation stop fake COD orders completely?
No. It filters out many fake COD orders, careless orders and unreachable customers, but it cannot stop every refusal. Measure the change in your own refused-order rate.
Is an order confirmation a free WhatsApp message?
No. It is usually a utility template, which Meta charges per delivered message. Customer replies are free, and you get a monthly allowance of free service messages. Check Meta’s current rate card for Pakistan.
What if the customer does not reply?
Send one reminder, then cancel the order or let a person phone the customer. Decide the rule in advance so unconfirmed orders do not pile up.
Will confirmation put off genuine customers?
A short Confirm button is a small step compared with the cost of fake COD orders. Use risk-based rules so trusted repeat customers can skip it.
Can I do this without coding?
Some providers offer no-code WooCommerce connectors, but check that they can change the order status when the customer replies. A custom flow gives you more control over timing and rules.
Does this work with the WhatsApp Business app I already use?
Yes, if you use coexistence. Your team keeps using the app, and the API handles the automatic messages. Some app features change when coexistence is on, so read the details first.
Want help to reduce fake COD orders in your store?
We set up the WooCommerce hook, the webhooks, the templates and the rules for unconfirmed orders, so fewer fake COD orders reach your courier. Tell us how many COD orders you ship and we will map the flow. You can also read about the whole service on our WhatsApp automation for WooCommerce page, or see AI and workflow automation for other flows.