When someone taps their card at a merchant, less than a second of computation decides whether the transaction should go through. The customer never sees this work. They expect the experience to feel instant, trusted and invisible.

That brief moment is where fraud detection lives. A modern card wallet must decide whether an authorisation request is legitimate, whether the customer is who they claim to be and whether the behaviour fits the pattern of a trusted account. The system has milliseconds to make this call, and the cost of being wrong is high. Approve a fraudulent transaction and you pay for it. Block a legitimate one and you undermine trust.

Fraud remains rare relative to the volume of good payments, but the incentives for attackers keep rising. That asymmetry shapes everything about how we build detection systems.

I walk through how we can design and scale ML driven fraud detection for a digital wallet. The goal is to give PMs, engineers and data teams a clear blueprint they can use to build this infra on top of their own data.

The constraints of real world fraud detection

  1. Fraud prevalence is low, often on a scale of 1 in 10,000 points. Models must detect needles in a haystack.
  2. False positives hurt more than false negatives. A falsely declined card means a lost purchase and a drop in user trust.
  3. Latency budgets are brutal. Authorisation decisions need to resolve in under 100 ms.
  4. Fraud behaviour evolves continuously. Attackers adapt as soon as they discover a new weakness.
  5. Models require high reliability and explainability. Regulators, partners and support teams must understand why a transaction was blocked.
  6. A solution that works in a lab but not in a live card network is not a solution.