How to Restrict COD to Specific Regions on Shopify

Shopify store map showing COD enabled and disabled zones by region

Roughly 25% of all COD orders in India are returned to origin. That's one in four shipments that costs you packaging, courier fees, and warehouse time — with zero revenue to show for it. But the RTO rate isn't evenly distributed. Some pin codes run under 10%. Others sit above 40%. When you offer COD everywhere, the high-risk zones drag your entire operation down.

Restricting COD to specific regions — cities, states, or pin codes where deliveries actually succeed — is one of the fastest ways to cut losses without losing customers. You keep COD where it works and push prepaid where it doesn't. Most merchants know this intuitively but don't know how to set it up on Shopify. Here's exactly how to do it.

Why Offering COD Everywhere Costs More Than You Think

Every failed COD delivery hits you at least three times: forward shipping, return shipping, and the restocking cost when the product comes back (often damaged). On a ₹1,000 order with ₹80 forward shipping and ₹80 return shipping, a single RTO wipes out the margin on two or three successful deliveries.

The math gets worse in specific regions. Tier 3 and rural areas in India often have RTO rates above 35%, while metro cities like Bangalore and Hyderabad can sit below 15%. MENA markets show similar patterns — urban Gulf cities have reliable COD infrastructure, while certain areas have courier networks that can't consistently reach customers.

Offering COD in a region with a 40% RTO rate means four out of every ten shipments are pure cost. The fix isn't removing COD entirely — it's removing COD from the places where it fails. (For a deeper look at the full cost breakdown, see the true cost of COD fraud.)

Map Your Regions Before Changing Any Settings

Before you touch Shopify settings, you need data. Pull your last 90 days of COD orders and sort them by delivery outcome and region. You're looking for three things:

  1. Delivery success rate by state or city. Any region below 80% successful delivery is a candidate for COD restriction.
  2. COD share by region. If a region has 95% COD orders, removing COD will lose you most of those sales. If it's 60% COD and 40% prepaid, the transition is easier.
  3. Order volume by region. A high-RTO region that sends you two orders a month isn't worth building rules around. Focus on the regions where volume meets risk.

Export your Shopify orders to a spreadsheet, add a column for delivery status from your courier dashboard, and build a pivot table by state. In 30 minutes, you'll have a clear picture of which regions make money on COD and which ones burn it.

Option 1: Use Shopify Shipping Zones to Limit COD by Country

Shopify's built-in shipping settings let you create zones by country. If your COD problem is international — say you sell from India and don't want to offer COD to customers in the UAE — this works natively.

  1. Go to Settings → Shipping and delivery in your Shopify admin.
  2. Create separate shipping zones for COD-eligible countries and non-COD countries.
  3. Under Settings → Payments, your manual payment method (Cash on Delivery) will apply to all zones, but you can combine this with payment customization apps to hide COD for specific countries.

The limitation: Shopify's native settings don't let you restrict COD by state, city, or pin code within a country. For that, you need either Shopify Functions or a third-party app.

Option 2: Shopify Functions for Payment Customization

Shopify Functions is the platform's extensibility layer for checkout logic. The Payment Customization API lets you hide, rename, or reorder payment methods based on conditions — including the customer's shipping address.

If you have a developer or are comfortable with code, you can build a function that checks the customer's state or postal code at checkout and hides the COD option when they're in a restricted zone. Shopify's developer documentation provides a step-by-step guide for creating payment customization functions.

The upside: it runs natively in Shopify's checkout with no performance penalty. The downside: you need to write and maintain the code yourself, and updating the restricted zone list means redeploying the function or building an admin interface to manage it.

For most merchants without a developer on staff, this isn't practical. But it's the most technically clean solution if you have the resources.

How Do You Restrict COD by Pin Code or City on Shopify?

This is how most merchants actually solve it. Several Shopify apps let you set COD availability rules by country, state, city, or pin code — no coding required.

Apps like Payfy and payFn let you hide payment methods at checkout based on location rules. You can block COD for specific zip codes, cities, or states and keep it available everywhere else. Some apps also let you combine location rules with order value — for example, allowing COD only for orders above ₹500 in certain regions.

EasySell takes a different approach by handling COD restrictions directly on the order form. Instead of waiting until checkout to hide COD, EasySell can show or hide the COD option based on the customer's location as they're filling out the form. This means customers in restricted regions never see COD as an option in the first place, which avoids the confusion of getting to checkout and finding their preferred payment method missing.

When evaluating apps, check for these capabilities:

  • Pin code or zip code level restrictions (not just country-level)
  • CSV upload for bulk pin code management
  • The ability to combine location rules with order value thresholds
  • A way to update restricted zones without contacting support

Set a Prepaid Incentive for Restricted Regions

Turning off COD in a region without offering an alternative means losing sales. The merchants who do this well pair the restriction with a prepaid incentive.

Offer a small discount — 5% to 10% — for prepaid orders in regions where you've disabled COD. Frame it as a benefit, not a restriction. "Pay online and save ₹50" converts better than "COD is not available in your area."

You can set this up with Shopify's automatic discounts based on payment method, or through apps that apply discounts when customers choose prepaid. The discount more than pays for itself when you factor in the RTO costs you're avoiding.

Some merchants go further and offer partial payment — a small deposit at order time with the rest on delivery. This keeps the "pay later" appeal of COD while adding enough customer commitment to filter out fake orders. If someone's willing to put ₹100 down on a ₹1,000 order, they're far more likely to accept delivery. (Here's a step-by-step guide to setting up partial payments for COD.)

Review and Update Your Zone List Every Quarter

COD delivery performance shifts over time. A region that had terrible RTO rates last year might improve as courier networks expand. A city that was reliable might degrade during a seasonal spike.

Set a quarterly review cadence:

  1. Pull fresh delivery data for the last 90 days.
  2. Recalculate RTO rates by region.
  3. Move regions between your COD and prepaid-only lists based on current performance.
  4. Check whether your prepaid incentive is converting in restricted regions — if conversion dropped significantly, increase the discount or test partial payment.

The goal isn't a static list. It's a system that adapts as your courier relationships and customer base evolve.

Start With Your Worst 5 Pin Codes

You don't need to build a comprehensive zone strategy on day one. Pull your order data, find the five pin codes with the highest RTO rates, and restrict COD there. Measure the impact over 30 days. If your overall RTO rate drops and revenue holds steady, expand to the next ten. Within a quarter, you'll have a zone-based COD system that's driven by your actual data instead of guesswork — and every shipment you don't send to a serial returner is pure margin recovered.