How to Set Up Zone-Based COD Shipping on Shopify

EasySell
2026-04-17T15:27:24+01:00

If you're charging ₹80 flat shipping on every COD order while your courier charges ₹40 for metro deliveries and ₹120 for remote ones, you're subsidizing every rural shipment with your city profits. That math doesn't work at scale.

Setting up Shopify COD shipping zones that match your courier's rate card fixes this. Most COD merchants stick with flat-rate shipping from day one and never touch it again. But flat-rate shipping on a COD store with mixed geography is a slow margin leak. Industry data suggests 30-40% of orders in a flat-rate model get subsidized by the profitable ones. When your courier hands you a rate card with 3-5 zone tiers and you charge one price to everyone, somebody's always paying the wrong amount.

Shopify has a built-in shipping zone system that can match your actual courier rate card zone-by-zone. The setup takes about 30 minutes, and it stops you from eating ₹40-80 per remote shipment without realizing it.

Why Flat-Rate Shipping Bleeds COD Margins

Courier companies in South Asia, MENA, and Southeast Asia price deliveries by zone — not by a single national rate. A typical Indian courier like Delhivery charges roughly ₹40-60 for intra-city delivery, ₹70-90 for metro-to-metro, and ₹90-120+ for national or remote pin codes on a 1kg parcel. That's a 2-3x cost difference between your cheapest and most expensive delivery.

When you charge a flat ₹70 for shipping, you make ₹30 on a city order and lose ₹50 on a remote one. If more than half your orders ship to higher-cost zones, your shipping line item becomes a net expense instead of a cost recovery.

The problem compounds with COD because you're already absorbing higher costs — COD handling fees, higher return-to-origin rates, and remittance delays. Every failed delivery already costs you triple, as we covered in our last-mile delivery cost breakdown. Adding a shipping subsidy on top turns a tight-margin operation into an unprofitable one.

Map Your Courier Rate Card to Shopify Zones

Before touching Shopify settings, pull out your courier's rate card. Most COD couriers in emerging markets use 3-5 zone tiers. Here's a common structure:

Zone A (intra-city): Same city delivery — cheapest rate

Zone B (intra-state or metro-to-metro): Within the same state or between major cities

Zone C (intra-region): Neighboring states or within a geographic region

Zone D (national): Cross-country shipments

Zone E (remote/ODA): Off-delivery areas, rural pin codes, islands — most expensive

Write down the per-kg or per-shipment rate for each zone. You'll use these numbers directly when setting Shopify shipping rates. If you use multiple couriers, use the rate card from your primary one — you can always adjust later.

Create Shipping Zones in Shopify (Step-by-Step)

Shopify lets you group states, provinces, or countries into shipping zones and attach different rates to each one. Here's how to set it up:

1. Go to Settings → Shipping and delivery in your Shopify admin

2. Under your shipping profile (usually "General shipping rates"), click Manage

3. You'll see your existing zones. Click Create shipping zone to add a new one

4. Name the zone to match your courier tier (e.g., "Metro Cities" or "Zone A — Intra-city")

5. Add the states or regions that fall into this zone. For country-level COD stores, add the relevant countries

6. Click Add rate and set a price that covers your courier cost for that zone plus a small buffer

7. Repeat for each zone tier on your courier rate card

For Indian COD stores, a practical setup might look like: Maharashtra + Delhi + Karnataka + Tamil Nadu in a "Metro" zone at ₹50 shipping, neighboring states in a "Regional" zone at ₹80, and the remaining states in a "National" zone at ₹100-120.

How Do You Handle Remote COD Shipping Zones Without Losing Money?

Remote and off-delivery areas (ODA) are where flat-rate shipping hurts most. These pin codes carry surcharges that can add ₹30-80 per shipment on top of the base rate. Some couriers won't even service them without an extra fee.

You have three options for remote areas:

Option 1: Create a separate "Remote" zone. Add the states or regions with predominantly remote pin codes to their own zone with a higher shipping rate. This is the simplest approach but not the most precise, since even remote states have some metro areas.

Option 2: Use a shipping rate app for pin-code-level precision. Apps like Octolize or other postcode-based shipping apps let you set rates by specific postal codes rather than entire states. This matches your courier's ODA list exactly. More setup work, but the most accurate.

Option 3: Disable shipping to remote zones entirely. If your courier can't reliably deliver to certain areas (or the cost makes the order unprofitable), you can exclude those regions from your shipping zones. The customer simply won't see a shipping option at checkout. This is aggressive, but some COD merchants find it's better to lose the sale than absorb ₹150+ in shipping on a ₹500 order.

Set Your Shipping Rates to Actually Cover Costs

Don't just copy your courier rate card into Shopify — you need a buffer. Courier rates don't include the full picture. Account for these when setting your zone rates:

COD handling fee: Most couriers charge ₹15-30 extra for COD collection (see our COD fee setup guide for how to pass this to customers)

Return-to-origin costs: If 15-25% of your COD orders get returned, the return shipping comes out of your margin. Bake a portion of that cost into your base shipping rate

Packaging costs: Boxes, tape, inserts — typically ₹10-25 per shipment

Weight variance: If your products range in weight, set rates per weight bracket within each zone. Shopify supports weight-based rates inside each zone

A good formula: Zone shipping rate = courier base rate + COD fee + (RTO rate × return shipping cost) + packaging cost. Round up to the nearest clean number. If the math says ₹87, charge ₹90 or ₹99.

Show the Right Shipping Cost on Your Order Form

Zone-based shipping only works if customers see the correct rate before they place the order. On a standard Shopify checkout, shipping rates calculate automatically based on the customer's address. But COD stores using custom order forms need to make sure the form pulls the right zone rate.

If you're using EasySell for your COD order form, shipping rates from your Shopify shipping profiles are pulled into the form automatically — so your zone-based rates apply without extra configuration.

The key is making sure customers enter their delivery address or select their region before the shipping cost displays. If the order form shows a price before the customer provides location data, they'll see a rate that might change — and that creates friction.

Test Your Zones Before Going Live

Before switching from flat-rate to zone-based shipping, run a quick sanity check:

1. Place test orders from 3-4 different regions to verify each zone shows the correct rate

2. Check edge cases: What happens when a customer is in a state that borders two zones? Make sure every state is assigned to exactly one zone with no overlaps or gaps

3. Compare against your courier invoice: Pull your last 50 orders and look up what you paid in shipping for each. Compare that to what you would have charged under the new zone-based rates. The total should come closer to break-even or slight profit instead of a loss

4. Monitor for 2 weeks: Track whether conversion rates change. Zone-based shipping means some customers pay more than they did under flat rate — watch whether this affects order completion in higher-cost zones

If you see a drop in remote-area orders, that's not necessarily bad. If those orders were costing you more to ship than you made on them, losing that volume actually improves your bottom line.

When to Revisit Your Zone Setup

Your shipping zones aren't set-and-forget. Revisit them when:

Your courier changes their rate card (most do this quarterly or annually)

You switch couriers or add a second one

Your order volume shifts to different regions

Your product weight or dimensions change significantly

Pull your courier invoices against your Shopify shipping revenue once a month. If you're consistently losing more than 5% on shipping, your zones need adjustment.

Start with your courier rate card, create 3-4 zones in Shopify that match it, and set rates that actually cover your costs. Thirty minutes of setup now stops you from quietly losing money on every remote COD shipment for the rest of the year.