Hide COD, COD fee, partial COD or OTP: which fits your store

Updated · 6 min read · Trifid Media LLC

Each method fixes a different problem, so start from the problem you have:

  • Hide COD for the orders most likely to be refused, such as big carts, first orders or repeat refusers. Everyone else keeps COD.
  • Charge a COD fee if collecting cash costs you money on orders that arrive. It does little against refusals, because the fee is collected at the door with the rest.
  • Take a deposit (partial COD) when you won't ship without some money in hand.
  • Verify the phone number with a one-time code (OTP) when fake numbers and prank orders are the problem. It can't stop a real shopper who changes their mind.

Hiding COD for risky orders

How it works on Shopify. Apps change the payment step with a payment customization Function, which can hide, rename or reorder payment methods at checkout. Shopify says stores on any plan can use public App Store apps that contain Functions. Only custom apps with Functions need Shopify Plus. The app's rules decide which checkouts lose COD: carts above an amount, first orders, customers you've tagged, certain products or certain areas.

What the shopper sees. Low-risk shoppers see COD as usual. A risky checkout shows only your online methods. There's no extra step.

What it costs. The app's price, if any. The bigger cost is shoppers who wanted to pay cash and leave instead. You can't know that number in advance, so start with a narrow rule and watch your sales.

  • Pros: the risky order is never placed as COD, so no parcel goes out and comes back. Low-risk shoppers notice nothing.
  • Cons: some shoppers without a card or wallet will leave. A rule only catches what it describes, so a small order from a fake number still gets COD. Shopify doesn't run payment customizations in the admin, in POS, or on orders created through its order API.

Khaleeji COD uses this method. It hides or renames COD by rule, and it doesn't charge fees, take deposits or send codes. See how to hide COD above a cart total and how to block COD for specific customers with tags.

Charging a COD fee

How it works on Shopify. Shoppers who choose COD pay an extra charge. Shopify has no setting for this. A manual payment method has a name, additional details and payment instructions, and Shopify's help page lists no fee option. Payment customization Functions can hide, reorder and rename methods, but adding a charge isn't one of their operations. So COD fees come from an app, a fee product added to the cart, or a charge built into a shipping rate. Test that the fee appears only when COD is chosen.

What the shopper sees. A higher total for paying cash. Show it clearly before the order is placed: a surprise amount at the door is one more reason to refuse.

What it costs. Nothing per order, because the shopper pays. But a refused parcel brings in nothing, fee included, and you still pay shipping both ways.

  • Pros: delivered COD orders pay their own cash-handling cost. Some shoppers switch to paying online to avoid the fee. COD stays open to everyone.
  • Cons: it doesn't stop refusals, some shoppers will leave at checkout, and on Shopify it needs an app or a workaround.

Partial COD: a deposit online, the rest in cash

How it works on Shopify. The shopper pays part of the order online before you ship, for example the shipping cost or a share of the total, and the rest in cash at the door. Manual payment methods have no deposit option either, so partial COD needs an app or a manual process, such as a separate payment link for the deposit. Check how your tool records the order: the courier must know the right amount to collect, and the order in Shopify should show what's paid and what's still due.

What the shopper sees. Two payments for one order. They need a card or wallet for the deposit, so a shopper who can't pay online at all is turned away, much as if COD were hidden.

What it costs. The tool's price, plus the usual online payment fees on the deposit. If a parcel is refused, you keep the deposit or refund it, depending on your policy. Say which in your COD policy.

  • Pros: a refusal costs the shopper something, which puts off impulse and prank orders. It suits custom-made and high-value items.
  • Cons: it has the most friction of the four, adds work (two payments per order, refunds when you cancel), and shuts out shoppers with no online payment method.

OTP or phone verification

How it works on Shopify. The shopper gets a one-time code by SMS or WhatsApp and types it in before the order is placed. Adding your own step inside Shopify's information, shipping or payment pages uses checkout UI extensions, which Shopify makes available only to Plus stores. On other plans, OTP usually runs outside Shopify's checkout, in a COD order form on the product or cart page.

If you also hide COD, check how the two fit together. Shopify lists orders created through its order API, and draft orders created in the admin, among the places payment customizations don't run. If a COD form creates orders that way, checkout rules such as hiding COD won't apply to them.

What the shopper sees. One more step, and a short wait for the code. If the code doesn't arrive, the sale is lost.

What it costs. You pay per message. SMS prices depend on your provider and the country. For WhatsApp, codes go out as template messages, and Meta charges per delivered template message, with rates that depend on the message category and the recipient's country (checked 26 October 2026). Verification codes fit the "authentication" category, which Meta describes as messages for identity verification.

  • Pros: it catches typos, fake numbers and prank orders before anything ships, and everyone who verifies keeps COD.
  • Cons: a verified shopper can still refuse, you pay for messages on orders that would have been fine, and below Plus it usually means using a form instead of Shopify's standard checkout.

For confirmation after the order, read confirming COD orders by phone, SMS or WhatsApp.

Which one fits your store?

Your main problemStart with
Fake numbers and prank ordersOTP or a confirmation message
Big orders get refusedHide COD above a cart total
The same customers keep refusingHide COD for customers you've tagged
Collecting cash eats your margin on delivered ordersA COD fee
Custom-made or high-value items get refusedA deposit, or hide COD for those products

Side by side:

MethodProtects you from a refused parcel?Extra step for the shopperWho pays
Hide CODYes, for the orders your rules catchNoneYou, in some lost sales
COD feeNoNone, but a higher totalThe shopper
DepositPartly: you can keep the depositA second paymentYou, in tool and payment fees
OTPOnly against fake or wrong numbersTyping a codeYou, per message

Can you combine them?

Yes, because they cover different problems. For example, hide COD for big carts and repeat refusers and confirm phone numbers on the rest, or charge a fee and hide COD for customers who refused before.

Whatever you choose, compare your refusal rate before and after. To put a money figure on each refusal, read what one refused COD order really costs.

Sources

  1. Shopify.dev: Payment customization Function API
  2. Shopify.dev: About Shopify Functions
  3. Shopify Help Center: Manual payment methods
  4. Shopify.dev: Checkout UI extensions
  5. Meta for Developers: WhatsApp Business Platform pricing

Checked on the date above. Shopify and courier settings change, so check the source if something looks different.

Stop paying shipping twice for refused orders

Khaleeji COD is coming soon to the Shopify App Store. Email us and we'll tell you the day it's live.

Coming soon to the Shopify App Store · Email: