An attacker holding thousands of stolen card numbers has one problem: most are already cancelled, and there is no way to tell which from the number alone. So they find a checkout that will accept a small payment without much friction, and let it answer the question for them.

How it works

  1. The attacker acquires numbers

    From a breach, a marketplace, or by generating candidates from a known issuer prefix that pass the Luhn check.

  2. They find a permissive checkout

    Something that accepts small amounts, has no rate limiting, and returns a clear success or failure quickly.

  3. They run the list

    Automated, often thousands of attempts, usually overnight or across a weekend.

  4. They keep the ones that work

    The live cards are used or sold. Your business never sees the actual fraud.

What it costs you

CostWhy
Authorization feesMany processors charge per attempt, approved or not
A damaged approval rateIssuers see a flood of declines from your merchant ID
Genuine customers declinedThat degraded reputation applies to real traffic too
Chargebacks laterAny card that did succeed becomes a dispute
Network monitoringA dispute ratio above roughly 0.9% brings real consequences
The bill for an attack where nothing succeeded

The third row is the one merchants underestimate. A card testing attack is not just a bad night — the damage to how issuers score your traffic persists after the attack has stopped.

Where attacks find a way in

  • Donation forms, where the amount is chosen by the payer and small values are normal.
  • Card-on-file endpoints that validate a card before charging it.
  • Free trials taking a card, especially with a zero-dollar or one-dollar verification.
  • Any public checkout with no rate limiting and a fast, clear response.

What actually stops it

  1. Rate limit on every axis — IP, device fingerprint, email, and card number. Most attacks are volume plays and die at the first real limit.
  2. Add an invisible CAPTCHA on payment endpoints. It costs legitimate users nothing and breaks naive automation.
  3. Do not expose trivially small or zero-dollar charges on a public endpoint.
  4. Alert on decline-rate spikes. Detecting it in an hour rather than a weekend is most of the mitigation.
  5. Use [3D Secure](/resources/what-is-3d-secure) selectively, triggered by risk signals rather than applied to everyone.

None of this is exotic. Card testing is an economic activity — the attacker is looking for the cheapest place to run a list, and modest friction is usually enough to make your site not worth the trouble.

Sources

  • Card network guidance on enumeration and card testing attack patterns.
  • Visa Dispute Monitoring Program thresholds, which apply regardless of how a merchant's dispute ratio rose.

GOOD QUESTIONS

Frequently asked

What is a card testing attack?+

An attacker with a list of stolen or generated card numbers runs small transactions through a merchant's checkout to find out which cards are still live. The valid ones are then used or sold elsewhere. Your site is the testing ground, not the target.

What is a BIN attack?+

A variant where the attacker takes a known issuer identification number — the first six or eight digits — and generates candidate card numbers that pass the Luhn check, then tests them in bulk to find real accounts.

Does card testing cost me money if every payment declines?+

Yes. Many processors charge per authorization attempt regardless of outcome, and a flood of declines damages your approval rate with issuers, which then affects your genuine customers. Any card that does succeed usually becomes a chargeback later.

How do I stop card testing?+

Rate limit by IP, device and card, add an invisible CAPTCHA on payment endpoints, avoid publicly reachable zero-dollar or trivially small charges, and alert on any sudden spike in declines. Speed matters more than sophistication — most attacks are automated and move on when a site becomes expensive.