{"id":3157,"date":"2026-10-09T11:59:43","date_gmt":"2026-10-09T01:59:43","guid":{"rendered":"https:\/\/www.gpayments.com\/blog\/?p=3157"},"modified":"2026-10-09T12:27:14","modified_gmt":"2026-10-09T02:27:14","slug":"3ds-card-testing-attacks","status":"publish","type":"post","link":"https:\/\/www.gpayments.com\/blog\/article\/3ds-card-testing-attacks\/","title":{"rendered":"Where 3D Secure Helps Against Card Testing, and Where It Doesn&#8217;t"},"content":{"rendered":"\n<p style=\"text-align: left;\">Card testing, also called enumeration, is the automated use of an online checkout to find out which stolen or generated card numbers still work. Bots submit large numbers of small or zero-value payments, keep the cards that succeed and sell or use them elsewhere. The merchant whose checkout was used pays the processing fees, absorbs the operational noise and, increasingly, carries scheme monitoring exposure.<\/p>\n<p style=\"text-align: left;\">3D Secure can make a checkout much less useful to card testers, but only on the paths where authentication actually sits in front of authorisation. Attackers look for the paths where it does not.<\/p>\n<h2 style=\"text-align: left;\">Why card testing now has a direct cost for merchants<\/h2>\n<p style=\"text-align: left;\">Visa&#8217;s Acquirer Monitoring Program (VAMP) measures enumeration directly. Visa&#8217;s <a href=\"https:\/\/corporate.visa.com\/content\/dam\/VCOM\/corporate\/visa-perspectives\/security-and-trust\/documents\/visa-acquirer-monitoring-program-fact-sheet-2025.pdf\">programme overview<\/a> defines the VAMP Enumeration Ratio as the count of enumerated authorisation transactions, approved and declined, divided by all authorisation transactions, approved and declined. A merchant is in scope when that ratio reaches 2,000 basis points (20%) and the count of enumerated transactions reaches 300,000 in a month.<\/p>\n<p style=\"text-align: left;\">Two details matter for merchants. First, the measure is built on authorisation attempts, so a merchant can be exposed even when no fraudulent order is ever fulfilled. Second, declined attempts count as well as approved ones, so a checkout that simply declines bad cards is still contributing to the ratio. What counts is how many attempts reach authorisation, whatever their outcome.<\/p>\n<h2 style=\"text-align: left;\">Which checkout paths card testers use<\/h2>\n<p style=\"text-align: left;\">Card testers want the cheapest, fastest response that tells them whether a card is live. They probe every path a merchant exposes, not just the main checkout. The table below sets out the paths most often worth reviewing.<\/p>\n<p style=\"text-align: left;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3171\" src=\"https:\/\/www.gpayments.com\/blog\/wp-content\/uploads\/2026\/10\/Payment-Authentication-Review-Matrix.png\" alt=\"\" width=\"1774\" height=\"887\" srcset=\"https:\/\/www.gpayments.com\/blog\/wp-content\/uploads\/2026\/10\/Payment-Authentication-Review-Matrix.png 1774w, https:\/\/www.gpayments.com\/blog\/wp-content\/uploads\/2026\/10\/Payment-Authentication-Review-Matrix-300x150.png 300w, https:\/\/www.gpayments.com\/blog\/wp-content\/uploads\/2026\/10\/Payment-Authentication-Review-Matrix-1030x515.png 1030w, https:\/\/www.gpayments.com\/blog\/wp-content\/uploads\/2026\/10\/Payment-Authentication-Review-Matrix-768x384.png 768w, https:\/\/www.gpayments.com\/blog\/wp-content\/uploads\/2026\/10\/Payment-Authentication-Review-Matrix-1536x768.png 1536w, https:\/\/www.gpayments.com\/blog\/wp-content\/uploads\/2026\/10\/Payment-Authentication-Review-Matrix-1500x750.png 1500w, https:\/\/www.gpayments.com\/blog\/wp-content\/uploads\/2026\/10\/Payment-Authentication-Review-Matrix-705x353.png 705w\" sizes=\"auto, (max-width: 1774px) 100vw, 1774px\" \/><\/p>\n<p style=\"text-align: left;\">In practice, the weakest path sets the level of exposure. Strong authentication on the main checkout does little if an old API endpoint still sends authorisations directly.<\/p>\n<h2 style=\"text-align: left;\">What 3D Secure changes when it sits in front of authorisation<\/h2>\n<p style=\"text-align: left;\">In EMV 3DS, each attempt produces an authentication request that the 3DS Server sends through the scheme&#8217;s Directory Server to the issuer&#8217;s Access Control Server (ACS). The issuer sees the card, the transaction and the device and browser data collected during checkout before any authorisation is sent.<\/p>\n<p style=\"text-align: left;\">For a card tester, that makes each attempt harder and more visible:<\/p>\n<ul style=\"text-align: left;\">\n<li>An ACS can return a challenge the bot cannot complete, or reject the attempt outright. If your checkout does not proceed to authorisation after a failed or rejected authentication, those attempts never become authorisation transactions.<\/li>\n<li>The issuer receives device and browser data that an authorisation-only flow never sends, and a stream of near-identical requests is what its risk engine is built to spot.<\/li>\n<li>You also learn what happened. EMVCo defines reason codes for unsuccessful outcomes, including values such as 04 (exceeds authentication frequency limit), 10 (stolen card) and 12 (transaction not permitted to cardholder). A sudden shift in the mix of these codes is an early warning that your checkout is being tested.<\/li>\n<\/ul>\n<p style=\"text-align: left;\">Genuine customers are not necessarily inconvenienced. When the issuer has enough data to be confident, it can authenticate them without a challenge.<\/p>\n<h2 style=\"text-align: left;\">Where 3D Secure does not help<\/h2>\n<p style=\"text-align: left;\">Treating authentication as a bot defence leaves several gaps.<\/p>\n<ul style=\"text-align: left;\">\n<li>Paths without authentication, such as the skip conditions and unprotected card storage in the table above, stay open until they are closed separately.<\/li>\n<li>Where your provider or scheme charges per authentication request, testing traffic that reaches the 3DS Server still costs money and adds load, even if it never reaches authorisation.<\/li>\n<li>If your checkout shows customers a different message for each authentication outcome, attackers can learn which cards are valid without completing a payment. Show a single generic failure message and keep reason codes in your logs.<\/li>\n<li>When an issuer or its ACS does not participate, the scheme may return an attempted authentication result, which involves no challenge and deters nobody.<\/li>\n<li>A bot that presents convincing device data with a genuinely live card may still be authenticated without a challenge.<\/li>\n<\/ul>\n<h2 style=\"text-align: left;\">Controls 3D Secure does not replace<\/h2>\n<p style=\"text-align: left;\">Card testing is best handled in layers, with authentication as one of them:<\/p>\n<ol style=\"text-align: left;\">\n<li>Edge and bot controls that block automated traffic before it reaches the payment page.<\/li>\n<li>Velocity rules by device, IP address, account, card number range and email, applied before authentication so that obvious attacks never generate authentication requests.<\/li>\n<li>3D Secure on every path that can lead to an authorisation, including card storage.<\/li>\n<li>Monitoring of authorisation declines for patterns that suggest a path has been missed.<\/li>\n<\/ol>\n<p style=\"text-align: left;\">Screening before authentication keeps authentication cost and noise down, and authenticating before authorisation keeps attempts out of the count Visa monitors.<\/p>\n<h2 style=\"text-align: left;\">What to monitor<\/h2>\n<p style=\"text-align: left;\">The signals that reveal card testing usually show up in authentication data before they show up in chargebacks:<\/p>\n<ul style=\"text-align: left;\">\n<li>authentication requests rising much faster than completed orders<\/li>\n<li>a shift in reason codes towards frequency limits, invalid or stolen cards<\/li>\n<li>many distinct cards from a small number of devices or IP addresses<\/li>\n<li>authorisation declines on transactions that did not go through authentication, which points to a path you have not closed<\/li>\n<li>activity concentrated outside your normal trading hours<\/li>\n<\/ul>\n<h2 style=\"text-align: left;\">Frequently asked questions<\/h2>\n<h4 style=\"text-align: left;\">Do failed 3DS attempts count towards Visa&#8217;s enumeration ratio?<\/h4>\n<p style=\"text-align: left;\">Visa&#8217;s published definition counts authorisation transactions, approved and declined. It does not describe authentication requests as part of the ratio. Attempts stopped at authentication and never sent for authorisation should therefore fall outside it, but confirm how your acquirer reports enumeration for your merchant account.<\/p>\n<h4 style=\"text-align: left;\">Should merchants authenticate when a customer adds a card to their account?<\/h4>\n<p style=\"text-align: left;\">Card storage is one of the most common card testing targets, so it should not be left unprotected. EMV 3DS supports non-payment authentication for this purpose, but issuer and scheme support varies. Check what your 3DS Server and acquirer support for card-add flows.<\/p>\n<h2 style=\"text-align: left;\">Closing the gaps<\/h2>\n<p style=\"text-align: left;\">The practical first step is an inventory of every path in your estate that can send an authorisation, with a note of whether authentication sits in front of it. GPayments&#8217; <a href=\"https:\/\/www.gpayments.com\/solutions\/acquiring\/\">ActiveServer<\/a> is a 3DS Server used by acquirers, payment gateways, PSPs and merchants. To review where authentication fits in your checkout, <a href=\"https:\/\/www.gpayments.com\/contact\/\">speak with a GPayments 3DS specialist<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Card testing, also called enumeration, is the automated use of an online checkout to find out which stolen or generated card numbers still work. Bots submit large numbers of small or zero-value payments, keep the cards that succeed and sell or use them elsewhere. The merchant whose checkout was used pays the processing fees, absorbs [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":3159,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[2],"tags":[13,46],"class_list":["post-3157","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-article","tag-3ds2","tag-activeserver"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/posts\/3157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/comments?post=3157"}],"version-history":[{"count":7,"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/posts\/3157\/revisions"}],"predecessor-version":[{"id":3173,"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/posts\/3157\/revisions\/3173"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/media\/3159"}],"wp:attachment":[{"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/media?parent=3157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/categories?post=3157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gpayments.com\/blog\/wp-json\/wp\/v2\/tags?post=3157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}