Get in touch
WooCommerce

COD Guard for WooCommerce — SMS code for cash on delivery, blacklist and amount limit

Protection from refused cash on delivery orders: the buyer confirms the phone with a code at checkout, and the blacklist filters out those who refused before. Pro adds an automatic blacklist, a limit by history, an allow list, a log, Telegram, WhatsApp codes, a PIN code blacklist and a partial advance.

Download Free
Pro · one-year licence Staging copies are included. The more sites, the cheaper each one
Compatibility
WordPress 6.2+ · WooCommerce 6.0+ (tested on WordPress 7.1 and WooCommerce 11.2) · PHP 7.4+ (tested on 8.3) · HPOS · block and classic checkout · languages: Ukrainian, Russian, English; Hindi for buyers
Licence
a site + a staging copy, annual
Trial
7 days, no card, one per site
Updated
October 2026
Or all 394 Pro modules with All Access — 4 990 ₴ / year ≈ €98

What Free has,
and what Pro adds

The free version works with no time limit. Pro adds the rest of the features in the table.

Feature Free Pro
Phone confirmation code at checkout for cash on delivery: no code, no order ✔ ✔
SMS through TurboSMS, SMS-fly, MSG91, Fast2SMS or your own HTTP gateway ✔ ✔
Viber channel with SMS backup for TurboSMS and SMS-fly ✔ ✔
Test mode: no SMS is sent, the code shows at checkout ✔ ✔
Manual blacklist by phone, e-mail or IP, with no limit on entries ✔ ✔
A blocked buyer loses cash on delivery or sees an explanation: your choice ✔ ✔
The block works on the server even if the box on the page did not render ✔ ✔
+380XX, 380XX, 0XX and numbers with brackets and hyphens are one buyer; Indian numbers in every usual form ✔ ✔
Block and classic checkout, HPOS ✔ ✔
Automatic blacklist after N refused orders — ✔
Cash on delivery limit: less for a new buyer, more for a trusted one — ✔
Allow list: the blacklist and limits do not apply to these buyers — ✔
Code conditions: above an amount, guests only, skip those who redeemed before — ✔
Attempt log with search and CSV export — ✔
Telegram alerts about a blocked attempt — ✔
Code on WhatsApp through MSG91 or Fast2SMS, with optional SMS backup — ✔
Delivery PIN code blacklist, including by code prefix — ✔
Partial advance: part online, the rest on delivery — ✔

What it looks like

Phone confirmation box at checkout
The box at WooCommerce checkout after cash on delivery is chosen. Test mode shows the code on the page. Ukrainian interface.
Message about the cash on delivery limit
Amount limit: a new buyer sees an explanation at checkout. Pro, test order, Ukrainian interface.
Automatic rule and advance settings
Automatic rules and partial advance. Free version, Pro fields are off. “UPI (test)” is our test stub, not a real gateway.

Key points

What the buyer sees

The buyer picks cash on delivery, and a phone confirmation box appears before the payment methods.

What the admin gets

In the settings you mark the payment methods you treat as cash on delivery, pick a provider and switch on the rules you need.

For stores in India

Version 1.1.0 added MSG91 and Fast2SMS. SMS codes are in the free version, but SMS to Indian numbers go through a template registered on DLT: without that the code will not arrive.

The trial starts when you ask

A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — a site and a staging copy

Moving the site? Unlink the licence on the old domain and activate it on the new one yourself. A staging copy (staging., dev.) works with the same key and does not take a site slot. For studios — keys for 5 or 25 sites, or unlimited.

Technical requirements

  • WordPress 6.2+ · WooCommerce 6.0+ · PHP 7.4+.
  • SMS provider with your own account and token. For India, DLT registration.
  • WhatsApp: an approved template. Meta restricts Authentication templates by account tier.
  • Advance: an online gateway in WooCommerce.

Version history

v1.1.0 Current October 2026

India: MSG91 and Fast2SMS with DLT templates, +91 numbers.

v1.0.3 October 2026

Confirmation box on the classic checkout, own field at a checkout with no phone, a readable log, 16 px fields on a phone, updates in the WordPress admin.

v1.0.0 First release September 2026

Confirmation code, blacklist and allow list, amount limit, log, Telegram.

Frequently bought with COD Guard

All Access Need more? All modules (394) under one licence, new ones are added automatically. 4 990 ₴≈ €98 Learn more →

Full module description

COD Guard protects a shop from refused cash on delivery orders. The parcel travels to the buyer, waits, comes back, and you pay for delivery both ways. COD Guard confirms the phone with a code at checkout and remembers those who refused before.

What the buyer sees

The buyer picks cash on delivery, and a phone confirmation box appears before the payment methods. The buyer sends a code, types it in, and the order can go through. Without a code a cash on delivery order is refused on both the classic and the block checkout.

If the buyer is on the blacklist, cash on delivery either disappears or the buyer sees an explanation: you choose. Online payment stays available. In Pro the amount limit works the same way.

What the admin gets

In the settings you mark the payment methods you treat as cash on delivery, pick a provider and switch on the rules you need. The order card shows whether the number was confirmed and how many orders it has redeemed.

In Pro the log shows every code sent and every blocked attempt. The number is masked in the log.

For stores in India

Version 1.1.0 added MSG91 and Fast2SMS. SMS codes are in the free version, but SMS to Indian numbers go through a template registered on DLT: without that the code will not arrive. Pro has WhatsApp codes with SMS backup, a delivery PIN code blacklist and a partial advance: a percentage or a fixed amount online, the rest on delivery.

The advance is taken by the payment plugin of your shop. UPI works if that plugin accepts it: COD Guard has no UPI gateway of its own.

How it works, step by step

  1. The buyer picks cash on delivery, and the module checks the number, e-mail, IP and, in Pro, the PIN and history.
  2. If nothing blocks it, the module sends a code.
  3. The buyer types the code and the number counts as confirmed.
  4. Before the order is created, the server checks everything again.
  5. In Pro, refused orders add the number to the blacklist over time.

Under the hood

  • Codes are stored only as a hash.
  • There are limits: 5 attempts per code, 5 codes per number per hour, a pause between sends. The values can be changed.
  • The block works on the server, including through the Store API.
  • Removing the plugin removes its tables.

How to install

  1. Plugins → Add New → Upload Plugin: pick the zip and activate.
  2. WooCommerce → COD Guard: mark the cash on delivery payment methods.
  3. Keep test mode first and walk through checkout.
  4. Pick a provider, enter the token and the sender.
  5. For Pro: paste the key or start the 7-day trial.

The module is not on wordpress.org yet: the free version and Pro are one archive from this page. Without a key it works as the free version.

Questions
about the module

Didn't find the answer? Message us on Telegram and we'll reply within a business day.

@catcode_support Setup, compatibility, activation
The confirmation box does not appear.

Check that the chosen payment method is marked as cash on delivery in the settings and that confirmation is on. The box shows only after such a method is selected.

What counts as a refused order?

You pick the order statuses. By default they are Cancelled and Failed.

Does a buyer on the allow list still get a code?

Yes. The allow list lifts the blacklist and limits, while the code follows the general rules. To skip regular buyers, Pro has a condition for those who redeemed before.

What do I need for SMS in India?

DLT registration: a Principal Entity, a header and a template. Add them in your MSG91 or Fast2SMS account and paste the template ID into COD Guard. Fast2SMS sends to Indian numbers only.

How is the advance paid?

As a separate order on the normal WooCommerce payment page, through an online gateway of your shop. The main order waits on hold. An unpaid advance cancels both orders after the time you set. A manager refunds the advance by hand.

Is a blacklist personal data?

Yes. The log and export mask the number, while the list itself stores it in full. The legal assessment for your country is yours to make.

Can I connect my own SMS provider?

Yes: your own HTTP gateway with the {phone}, {text}, {sender} and {token} placeholders, or the cccg_sms_send filter.

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.

Order a custom module