Cash on Delivery on Shopify in India: the complete setup
Updated · ACOD (E-TRADE PARTNER)
For an Indian Shopify store, a production-grade COD setup has four layers: the manual COD payment method, a COD fee charged through a linked shipping rate (₹49–149 is the common band), pin-code rules that mirror your courier's serviceable areas — using prefix matching, since Indian PINs are hierarchical — and an order-value cap that keeps high-ticket orders prepaid. Shopify handles layer one natively; the other three need a Shopify Functions app like ACOD.
COD in India: still the default, still expensive
Despite UPI's growth, a large share of Indian e-commerce orders — especially first purchases from unfamiliar D2C brands and orders outside metros — still pay cash on delivery. Every courier and aggregator serving D2C (Delhivery, Blue Dart, DTDC, Ekart, India Post, and aggregators like Shiprocket or NimbusPost) supports cash collection, and every one of them charges you for it: a COD handling charge per shipment, plus remittance delays of days to weeks. Add India's notorious RTO problem — parcels refused at the door travel back at your cost — and unmanaged COD quietly becomes the most expensive payment method you accept.
Layer 1: activate COD in Shopify
Settings → Payments → Manual payment methods → add Cash on Delivery (COD). That's all Shopify gives you natively: an on/off switch, for every customer, every pin code, every order value.
Layer 2: the COD fee (₹49–149 band)
Most Indian D2C stores charge a flat COD fee that covers the courier's handling charge and nudges customers to prepay — commonly ₹49, ₹99, or ₹149 depending on order size. In Shopify the clean mechanism is a dedicated shipping rate priced at the fee, linked to the COD payment method so it can't be dodged: pick COD, the fee applies; pay prepaid, it disappears. The fee also works as your prepaid-conversion lever — the full playbook is here.
Layer 3: pin-code rules with prefixes
Indian PIN codes are hierarchical: the first digit is a postal zone, the first two identify a sub-region, the first three a sorting district. That means you almost never need to paste thousands of codes — prefix rules cover areas cleanly: hide COD for every pin starting with “19” (J&K belt), or offer COD only for prefixes matching your courier's serviceable list. ACOD supports exact pin lists and prefix matching, at state, city, and pin level — setup steps here.
Layer 4: the order-value cap
Refusal risk scales with order value — a refused ₹8,000 COD parcel costs forward + return shipping plus weeks of blocked inventory. Set a maximum order value for COD (₹5,000 is a common ceiling; match your courier's COD cap if it's lower), and optionally a floor (₹300 or so) below which the handling charge would eat the margin. How to choose the numbers.
What about OTP verification?
OTP order confirmation is a legitimate extra layer against fake orders, and several apps specialize in it. ACOD deliberately doesn't — here's the honest capability list — but the rules above cut RTO before an SMS is ever sent, and the two approaches stack: fee + pin rules + value cap from ACOD, OTP from a verification app if you still need it.
Set up India-grade COD rules in minutes
Fee in INR via linked shipping rate, pin-prefix serviceability rules, order-value caps, customer-tag blocking — from $4.99/month.
Install ACOD on Shopify — 7-day free trialFrequently asked questions
›How much COD fee should an Indian store charge?
Start at your courier's COD handling charge (typically ₹30–60 per shipment) so the fee covers costs; ₹49–99 is the common customer-facing band. Raise it toward ₹149 if refusal rates stay painful — the fee's steering power matters more on low-ticket orders.
›Can I offer COD only for serviceable pin codes?
Yes — export your courier's serviceable pin list and use prefixes for whole belts plus exact codes for exceptions. Customers outside the list see only prepaid options.
›Why is my COD fee not showing in INR?
The fee is a shipping rate, so it's always in your store currency. If your store currency is INR, the fee displays in INR. (App subscription billing, separately, is always in USD — that's Shopify policy for all apps.)
›Does ACOD verify Indian phone numbers or do OTP?
No — ACOD handles fees and availability rules only. Pair it with a verification app if you need OTP; they run together without conflict.