Over 60% of online orders in India are still paid in cash at the door. In the Philippines, it's 42%. Across Southeast Asia, nearly a third of all ecommerce transactions happen through cash on delivery. If you're selling to these markets and don't know how to set up COD on Shopify, you're invisible to the majority of buyers.
Shopify supports COD natively — you can activate it in under five minutes with zero apps. But the native setup has gaps that will cost you money if you don't address them. This guide covers both: the quick setup and the fixes that prevent fake orders, failed deliveries, and cash flow problems from eating your margins.
How Do You Set Up COD on Shopify? (5-Minute Setup)
Cash on delivery is a manual payment method in Shopify — built in and free to activate. No app required for the basics. Here's how to enable it:
- Go to Settings > Payments in your Shopify admin
- Scroll to the Manual payment methods section
- Click Add manual payment method
- Select Cash on Delivery (COD) from the dropdown
- Add payment instructions customers will see at checkout (e.g., "Pay cash when your order arrives. Please have the exact amount ready.")
- Click Activate
That's it. COD now appears as a payment option at checkout. Orders placed with COD show as "pending" on your Orders page until you manually mark them paid after cash collection.
One thing Shopify doesn't charge you: third-party transaction fees on manual payments. Unlike payment gateways that take 2-3% per transaction, COD orders through Shopify's native setup cost you nothing in platform fees.
Set Up Shipping Zones for COD-Eligible Regions
Here's the first gap in Shopify's native COD: it appears for every customer in every country. If you only deliver COD in India but ship prepaid globally, a customer in Germany will still see "Cash on Delivery" at checkout. That's confusing at best and a cancelled order at worst.
Shopify doesn't offer native geographic restrictions for payment methods. You have two options:
- Shopify Functions (free, requires code): Build a payment customization function that hides COD based on the customer's shipping country or postal code. This uses Shopify's checkout extensibility and works on all plans.
- Third-party app (no code): Apps like EasySell or payment customization apps let you restrict COD to specific countries, states, or postal codes without writing code. Most also let you set minimum/maximum order values for COD eligibility.
If you're selling COD in one or two countries, this step isn't optional — it's the difference between a clean checkout experience and confused international customers abandoning their carts.
Add a COD Fee to Cover Collection Costs
COD isn't free for you. Courier partners charge extra for cash collection — typically 1-3% of the order value or a flat fee per delivery. Most merchants pass some of this cost to the customer as a COD fee.
Shopify's native setup doesn't support COD fees. You can't add an extra charge for choosing cash on delivery without customization. Your options:
- Build it into shipping rates: Create a separate shipping profile for COD-eligible zones with slightly higher rates. Crude, but functional if you're just starting.
- Use a COD app: Most COD-focused apps add a configurable fee (flat or percentage) that appears when a customer selects cash on delivery. The fee shows transparently before order submission.
A common approach: charge a flat fee of ₹50-100 (or $1-2) for COD orders while offering free or discounted shipping on prepaid. This doesn't just cover costs — it nudges price-sensitive customers toward prepaid, where your RTO rate drops below 2%. For more on this strategy, see our COD-to-prepaid conversion playbook.
Why Do COD Orders Fail? The Fake Order Problem
In India, 26% of COD orders end up as RTO (return to origin). D2C brands lose 15-30% of COD revenue to these failed deliveries. On a ₹1,000 order with ₹100 shipping each way, an RTO costs you ₹200 in wasted logistics plus warehouse handling time.
Without verification, anyone can submit a COD order with a fake phone number, a made-up address, or zero intention to pay. Your courier attempts delivery, nobody's home, and the package comes back. You've paid for shipping both ways and sold nothing.
Shopify's native COD has no fraud prevention. No phone verification. No order limits. No way to block repeat offenders. If you're processing more than 10-20 COD orders per day, you need verification in place before the losses stack up. (For a deeper look at reducing failed deliveries, see our guide to cutting RTO rates.)
Add OTP Verification to Block Fake Orders
OTP (one-time password) verification is the single highest-impact change you can make to a COD workflow. The customer enters their phone number, receives a code via SMS or WhatsApp, and confirms it before the order submits. Fake phone numbers can't complete this step.
One Shopify store documented a 40% drop in fake orders after enabling OTP verification. The logic is simple: if someone isn't willing to verify their phone number, they weren't going to answer the door either.
EasySell includes built-in OTP verification via SMS and WhatsApp directly on the order form — no separate app or integration needed. You set it to trigger on COD orders only, so prepaid customers aren't slowed down.
Other verification methods that reduce fake orders:
- Partial prepayment: Require a small deposit (₹50 or 10% of order value) even on COD orders. Processed through Shopify checkout. If someone pays even a token amount, they're real.
- Order limits: Block customers who've had 2+ RTOs from placing new COD orders. Require prepaid from repeat offenders.
- Phone/IP blocklists: Automatically block known fake numbers or addresses from completing orders.
Configure Order Notifications for COD
COD orders need different communication than prepaid. Your customer isn't done when they submit the order — they still need to hand over cash. Clear notifications reduce "not at home" failures.
Set up these automated messages:
- Order confirmation (immediate): Confirm the order, repeat the total, and state that payment is due at delivery
- Shipping confirmation (on dispatch): Include tracking link and expected delivery date
- Delivery reminder (day before): Remind them to have cash ready. This single message reduces failed first attempts significantly.
- Delivery attempt alert (day of): "Your order is out for delivery today" via WhatsApp or SMS
Shopify's native order notifications handle steps 1 and 2. For delivery reminders and day-of alerts, you'll need a messaging integration — either through your courier's notification system or a WhatsApp automation app.
Track COD Cash Flow Separately
COD creates a cash flow gap that catches new merchants off guard. You ship the product on Day 1. The courier collects cash on Day 3-5. The courier remits that cash to your account on Day 7-14 (depending on your agreement). That's up to two weeks between shipping a product and seeing the money.
Track these separately from prepaid revenue:
- COD orders pending delivery: Shipped but cash not yet collected
- COD cash collected, awaiting remittance: Courier has the cash but hasn't transferred it
- COD remitted: Cash in your account
Shopify marks COD orders as "payment pending" until you manually update them. Use this status to reconcile against your courier's remittance reports. If a courier shows 50 delivered orders but you only received cash for 47, that three-order discrepancy needs investigation immediately.
The Enhanced COD Stack: What to Add Beyond Native
Native Shopify COD works fine if you're testing the market with a handful of orders. Once you're processing volume, these additions pay for themselves within the first week:
- OTP verification — blocks fake orders before they enter your fulfillment pipeline
- Geographic payment restrictions — shows COD only where you actually deliver COD
- COD fee — covers collection costs and incentivizes prepaid
- Partial prepayment option — converts fence-sitters from COD to prepaid with a small deposit
- Address validation — catches typos and incomplete addresses before shipping
- Order limits and blocklists — stops repeat offenders from draining your logistics budget
You can piece these together from multiple apps, or use a single COD-focused app that bundles them. EasySell combines all six into one order form — OTP, geo-restrictions, fees, deposits, address validation, and fraud blocking — which saves you from managing five separate app subscriptions.
Your First Week After Enabling COD
Start with native Shopify COD and add protection as volume grows. If you're launching in a market where COD is dominant, enable OTP verification from day one — the cost of fake orders at scale will exceed any app subscription within your first 50 orders.
Watch your RTO rate weekly. If it climbs above 15%, your verification isn't strict enough. If it's below 5%, you might be over-filtering and blocking real customers. The sweet spot for most COD stores is 8-12% RTO with verification in place — low enough to be profitable, high enough that you're not rejecting legitimate orders.