Doorman Install free

← Blog

How to cut fake cash-on-delivery orders

2026-08-02 · 6 min read

With prepaid orders a fake one costs you a refund. With cash on delivery it costs you the shipping, the return leg, and the stock sitting in a van for a week.

Why this hurts more than card fraud

A fraudulent card order is reversed and you are out the goods and a chargeback fee. A fake cash-on-delivery order is different in kind: nothing was ever charged, so there is nothing to reverse, and you have paid outbound shipping, return shipping, and held stock out of your sellable inventory for the round trip. Merchants running COD in markets where it is the norm often see a refusal rate that quietly eats the margin on everything that did deliver.

It is also rarely fraud in the criminal sense. It is impulse, a wrong address, a changed mind, a prank, or somebody ordering three sizes intending to refuse two. That matters because it changes what works.

What does not work

Blocking a country. COD refusals cluster in the markets where COD is standard, which are usually the markets you deliberately opened COD for. Turning those off is not a fraud control, it is closing the market.

Waiting for a payment signal. There is none. No authorisation happens, so every fraud tool that reasons about a card has nothing to reason about. This is the specific reason generic fraud apps underperform on COD.

Manual review of everything. It works and it does not scale. At any real volume the review queue becomes the bottleneck and orders ship unreviewed because somebody was busy.

What does work: stop the shipment, not the order

The order is not where the money leaks. The shipment is. Everything up to the moment a parcel is handed to a courier is reversible and costs nothing.

So the useful control is automatic and narrow: when an order arrives with the characteristics you have decided are risky, put a hold on the fulfillment before anyone picks it, and let a human look. Not a refusal, not a cancellation by default. A hold.

Doorman does this on the order rather than at checkout. Every order's payment method and shipping country are read as it arrives, the network behind it is checked, and the verdict is written onto the order beside Shopify's own risk assessment. You choose the threshold; past it, the shipment is held or the order cancelled automatically, and the reason is stated on the order so whoever opens it next knows why.

The characteristics actually worth flagging

  • Cash on delivery plus a first-time customer with no order history. The combination is the signal, not either half.
  • Cash on delivery above a value you set. A refused $20 order is annoying. A refused $400 one is a week of margin.
  • A shipping country you have flagged, based on your own refusal history rather than a generic reputation list.
  • A network that could not be verified, which is a weak signal alone and a useful one stacked with the others.

Stack two or three. Any one of them alone will hold orders you wanted to ship.

The non-technical control that beats all of them

Confirm by message before dispatch. A short WhatsApp or SMS asking the customer to confirm they still want the order removes a large share of impulse refusals, because the refusal happens in a chat instead of at a doorstep with a courier standing there.

Automatic holds and a confirmation step work well together: the hold buys you the time to send the message, and the message resolves most of what the hold caught.

Set a threshold you can live with

Every threshold has two costs and it is worth writing both down before choosing. Too loose and fake orders ship. Too tight and you hold real customers, delay them, and some of them cancel because of the delay.

Start by flagging only, ship everything, and compare what got flagged against what actually refused delivery. After a few weeks the threshold picks itself, and you will have chosen it with your own numbers rather than a default someone else guessed.

Doorman does this

Country, IP and VPN rules that you can watch on your real traffic before a single visitor is turned away. Free plan, no card.

Install free