Cash on delivery causes two headaches for a WooCommerce store: fake or wasted deliveries in areas your courier partner cannot reliably service, and lost sales when you disable COD storewide just to avoid those areas. The fix is restricting COD by postcode, pincode, or zip code instead of switching it off entirely. This post compares three real plugins that do it: Smart COD for WooCommerce, PiWeb’s Disable Payment Method for WooCommerce, and Conditional Payments for WooCommerce. Short version: if you specifically need postcode range blocking on the COD gateway, start with Smart COD; if you need to control other gateways too, PiWeb’s plugin covers more ground.
None of the big general WordPress blogs cover this angle directly. WPBeginner has a broad “how to disable payment methods in WooCommerce” tutorial, and it’s a fine starting point if you’ve never touched WooCommerce’s payment settings, but it stops at showing you the checkbox to turn a gateway off entirely. It doesn’t get into postcode-level restriction, which is the actual ask behind most searches for this: keep COD everywhere except the three postal codes your delivery partner keeps returning packages from.
| Plugin | Best for | Price | Last updated |
|---|---|---|---|
| Smart COD for WooCommerce | Postcode range blocking on the COD gateway specifically | Free, Pro from $64 | September 19, 2026 |
| Disable Payment Method for WooCommerce (PiWeb) | Restricting any gateway, not just COD, by postcode, cart total, or date | Free, updates/support from $19/year | September 11, 2026 |
| Conditional Payments for WooCommerce (WP Trio) | Tying COD to a shipping method (like local pickup) plus a billing postcode match | Free, Pro from $59/year | August 6, 2026 |
Smart COD for WooCommerce
Smart COD for WooCommerce extends the built-in COD gateway with an optional extra fee and a set of toggleable restrictions: shipping zone, shipping method inside a zone, country, state, postal code, city, user role, products or product categories in the cart, and shipping class. The postal code restriction is the reason this plugin leads the list: it supports ranges, not just an exact-match list, so you can block or allow a whole block of pincodes (say 3800xx through 3810xx) instead of typing every individual code by hand.
- Price: Free, Smart COD PRO (sold separately by the developer) from $64
- Requires: WordPress 4.5+, PHP 5.6+
- Last updated: September 19, 2026
Setup is genuinely two steps because the plugin doesn’t add its own settings page at all: it hooks directly into WooCommerce’s existing COD tab. Go to WooCommerce > Settings > Checkout > Cash on Delivery, and the restriction toggles appear right there alongside the gateway’s normal title and description fields. Flip Postal Code to Enable to allow COD only in the codes you list, or Disable to block just those codes and allow it everywhere else. You can also set a custom message that explains to the customer why COD isn’t available for their entry, per restriction reason, which cuts down on “why can’t I pay on delivery” support tickets.
The honest limitation: everything above is scoped to the core WooCommerce COD gateway only. If your store also runs a bank transfer or a custom cash-based gateway you’d want the same postcode logic on, this plugin won’t touch it, that’s what the next two options are for. The free version also doesn’t do cart-value or product-quantity conditions; those, along with CSV bulk imports for restriction lists, are Pro-only.
Disable Payment Method for WooCommerce (PiWeb)
PiWeb’s Disable Payment Method / Partial Payment for WooCommerce takes the opposite approach from Smart COD: instead of extending one gateway, it lets you build rules against any payment gateway on the site, COD included, using a genuinely long list of conditions covering location (country, state, city, and postcode), shipping method and zone, cart total, product or category, coupon code, user role, day of the week, and even how long ago the customer registered.
- Price: Free, updates and priority support from $19/year
- Requires: WordPress 4.0.1+
- Last updated: September 11, 2026
The plugin adds its own top-level “Payment Method” menu item in the WordPress dashboard rather than tucking itself into a WooCommerce settings tab. From there, click “+ Add disable payment method rule,” fill in the basic info for the rule, then use the “Select condition” dropdown to pick from the categories above, location being the one you want for a postcode restriction. You build the rule once, pick Cash on Delivery as the target gateway, and set the postcode list or range under the location condition.
Because it works across every gateway rather than one, it’s more setup than you need if COD-by-postcode is genuinely the only thing you’re trying to do; you’ll click past a lot of unrelated condition types (cart totals, coupons, registration age) to get to the location rule. The free WordPress.org version already ships the full condition list, so the $19/year isn’t unlocking features, it’s a support and update subscription from the developer, which is worth knowing before you assume it’s a paywall.
Conditional Payments for WooCommerce (WP Trio)
Conditional Payments for WooCommerce takes a narrower, rule-based approach: you tell it to show or hide a specific payment method when a condition on the order is true. The plugin’s own documented example is exactly this pattern applied to shipping rather than postcode: enable Cash on Delivery only when the shipping method is Local Pickup. For a postcode-based rule, you use the same mechanism against the billing or shipping address fields, which include postcode alongside city, state, and country.
- Price: Free, Pro from $59/year (1 site)
- Requires: WordPress 4.5+, PHP 7.0+
- Last updated: August 6, 2026
Install it like any other plugin, then go to WooCommerce > Settings > Payments > Conditions. Add a ruleset, pick Cash on Delivery as the payment method it applies to, and choose “Billing postcode” (or shipping postcode, if you ship to a different address) as the condition, then enter the values that should trigger the rule.
The limitation to know before picking this one: the free version matches postcodes as an exact list, not a range, so if you’re blocking dozens of scattered codes you’ll be entering them one at a time rather than defining a block like Smart COD’s range option. It also doesn’t apply fees, conditions on coupons, currency, or stock status, or work with logged-in/out status without upgrading to Pro. If your actual need is “COD only for local pickup” with postcode as a secondary rule, though, this is the most direct route to that specific combination.
How to Pick
- If you only need to block or allow COD in specific postcode ranges and don’t touch other gateways, use Smart COD for WooCommerce. The range support is the deciding factor once you have more than a handful of codes.
- If you need the same postcode logic applied to more than one payment gateway, or want extra conditions like cart total or day of the week in the same rule set, use PiWeb’s Disable Payment Method plugin.
- If your actual rule is “COD only for local pickup” and postcode is secondary, use Conditional Payments for WooCommerce and combine the shipping method and billing postcode conditions on the same rule.
- If you’re already paying for update/support access to one of these developers for another plugin, that’s a reasonable tiebreaker between otherwise similar options.
Frequently Asked Questions
Can I restrict Cash on Delivery by postcode without a plugin?
Yes, with a small code snippet hooked into WooCommerce’s woocommerce_available_payment_gateways filter that checks the customer’s billing or shipping postcode and unsets COD when it doesn’t match. It’s a legitimate option if you’re comfortable maintaining custom code in a child theme or a site-specific plugin, but a maintained plugin is usually the safer long-term choice since WooCommerce checkout code changes across major versions.
Does restricting Cash on Delivery by postcode affect other payment methods?
Not with any of the three plugins here. Each rule targets the gateway you choose, so your Stripe, PayPal, or bank transfer options stay available to customers in the same postcode unless you build a separate rule for them.
Will customers see a reason why Cash on Delivery isn’t available?
Smart COD lets you set a custom message per restriction reason, and PiWeb’s plugin supports a similar explanation field on each rule. Conditional Payments for WooCommerce simply removes the payment method from the list without an explanatory message in the free version, so if that messaging matters to you, factor it into the choice.
Do these plugins work with WooCommerce Blocks checkout?
Smart COD and PiWeb’s plugin hook into WooCommerce’s core payment gateway availability logic, which the block-based checkout also reads from, so both work without a separate integration. Confirm against the specific WooCommerce version you’re running before relying on this for a live store, since checkout internals have shifted across recent major releases.
Can I block a range of pincodes instead of listing every one?
Only Smart COD for WooCommerce supports postal code ranges directly in its free version among the three compared here. The other two match against an explicit list of codes, so a range needs to be entered as individual values or handled with a regular expression if the plugin’s condition field supports one.
None of these three plugins is built by ConicPlex, and none of our own products fit this particular checkout problem, so there’s nothing to promote here beyond saying so plainly. If your postcode logic needs to combine with something more specific to your business, like a custom serviceability check against a courier API before checkout even loads, that’s outside what any of these plugins do out of the box and moves into custom plugin development territory.
Related reading: if hiding things conditionally at checkout is a recurring problem for your store, see Best Plugins to Hide a WooCommerce Shipping Method by Product Category, which covers the same idea applied to shipping instead of payment. And if the goal behind restricting COD is really about reducing failed or hesitant orders, showing an estimated delivery date tackles a related piece of that same problem from the product page instead of checkout. For a broader rebuild of your checkout or payment flow, our WooCommerce development team handles that directly.
Sources
- Smart COD for WooCommerce β WordPress.org
- Smart COD PRO pricing β woosmartcod.com
- Disable Payment Method / Partial Payment for WooCommerce β WordPress.org
- Disable Payment Method plugin pricing β piwebsolution.com
- Conditional Payments for WooCommerce β WordPress.org
- Conditional Payments Pro pricing β wptrio.com
- How to Disable Payment Methods in WooCommerce β WPBeginner



