30–50%
fewer refused deliveries
0–100
automated risk score
4
pricing tiers from free to $23
5 min
merchant setup
Context
Cash-on-delivery is still a big part of Romanian e-commerce. Buyers do not trust a new site enough to pay upfront, so merchants offer COD to win the order. The problem is that a refused or fake delivery costs the merchant courier fees both ways and often the goods themselves. It is a hidden tax on conversion.
The existing answers were not great. SMS or OTP verification adds friction at exactly the moment you are trying to remove it, and most fraud tools only see what happens inside one store. A first-time buyer at a new store looks the same as a serial refuser.
Constraint
Merchants wanted something that worked silently. If a legitimate buyer is interrupted at checkout, the sale is lost. If a risky buyer is allowed through, the merchant eats the cost. The product had to be fast enough to run on every checkout, accurate enough to be trusted, and simple enough to set up without a call.
There was also a data constraint. We could not build a useful fraud network by storing names, phone numbers and addresses in plain text. That would make us a target and turn every merchant into a data-controller problem. The scoring had to work without keeping personal data.
Decision
We built a shared anti-fraud network instead of a single-store score. Each merchant contributes hashed signals, not raw data, so a buyer's history becomes visible across stores while the underlying information stays private. The network effect is the product: the more merchants join, the better the score gets for everyone.
We chose to hide the COD payment method rather than cancel the order. Cancelling is decisive and can be wrong. Hiding COD pushes the risky buyer toward prepay or holds the order for review, keeping a potentially good sale alive while protecting the merchant from the worst outcome.
We used one-way cryptographic fingerprints for identity matching. Names, phones, emails and addresses are hashed before they ever touch our database. We can tell whether a buyer has appeared before, but we cannot read what the values were. That keeps us out of GDPR trouble and lets merchants say honestly that their customers' details are not stored by us.
What shipped
A Shopify app that scores every COD order from 0 to 100 in real time, hides COD for high-risk buyers and holds orders for review when needed. No OTP, no SMS, no stored personal data. A merchant-controlled block/allow list, a real-time analytics dashboard, and Shopify billing with four tiers from free to $23 per month. Setup takes about five minutes.
Numbers
Merchants using CODCheck report 30–50% fewer refused deliveries. Each order gets a 0–100 risk score in real time. The app has four pricing tiers: Free, Start at $5, Pro at $9 and Unlimited at $23 per month. The average setup time is around five minutes.
What I'd do differently
I would have collected a labelled set of refused deliveries from the start. We launched with strong heuristic signals and learned the real false-positive patterns live. That meant a few merchants saw good buyers blocked early. A historical dataset would have let us tune the cutoffs before anyone else saw them.
I would also have built the analytics dashboard earlier. Merchants trust a score more when they can see why it landed there. The scoring engine was ready before the explanation layer, and the explanation layer turned out to be the part that drove retention.