A card validation test v9 is a pre-authorization check that verifies a card number against the Luhn checksum and issuer range rules, confirms the expiry date is current, and validates the CVV format before any payment request reaches the processor. It runs entirely on the client or server side of the checkout, costs nothing, and returns a pass or fail without touching a live card network. The purpose is to reject malformed input early, reduce declined transactions, and keep bad data out of your order records.

read more

What does a card validation test v9 check?

The test applies four rule groups in sequence and stops at the first failure.

Card Validation Test: What a Number Check Proves

  • Length and prefix: the number must fall inside the issuer identification range for its brand, typically 13 to 19 digits.
  • Luhn checksum: the Mod 10 algorithm confirms the digits are internally consistent and catches most single-digit typos.
  • Expiry: the month and year must be in the future as of the test run, not simply well formed.
  • CVV format: three digits for most brands, four for American Express, and never persisted after authorization.

Why validate before the authorization request?

Every malformed request that reaches the processor costs a round trip and may count against your decline ratios. Catching format errors locally keeps authorization attempts clean, which matters when acquirers review your approval rate. A validation layer also prevents obvious garbage from entering your database, where it complicates reconciliation and refunds.

Card Validation Test v7: What It Covers and How to Run It

What formatting rules apply to the CVV?

The CVV is a format check only. Validation confirms digit count and rejects non-numeric characters, and that is the full extent of it. No client-side or server-side test can verify that a CVV is correct, because only the issuer holds that value. PCI DSS prohibits storing the CVV after authorization under any circumstances, so never write it to logs, databases, or analytics events.

more on this topic

How do you run a card validation test v9?

  1. Set your payment integration to sandbox or test mode so no live network traffic occurs.
  2. Pull the test card numbers and expiry values published by your processor for the relevant brand.
  3. Submit each case, including deliberately broken numbers, expired dates, and short CVVs.
  4. Confirm each input returns the expected pass or fail result and the expected error code.
  5. Repeat the run after any change to your checkout form, validation library, or gateway version.

Which test numbers should you use?

Use only the synthetic numbers your processor publishes in its developer documentation. These are reserved ranges that never map to a real account, so a passing result proves your logic works without exposing anyone to risk. Never populate a test environment with real card data, even your own, since that expands your PCI scope for no benefit.

What do common failure results mean?

  • Checksum failure: a digit was mistyped or transposed, and the Luhn test caught it.
  • Unsupported brand: the prefix does not match any issuer range you accept.
  • Expired: the date is valid in format but in the past, so block it before submission.
  • CVV length error: usually a brand mismatch, such as a four-digit CVV on a three-digit brand.

Best practices for validation testing

Run the suite on every deployment, not only on release candidates, because form libraries change defaults quietly. Log the failure reason, never the full card number, and mask all but the last four digits in anything you retain. Pair the format checks with server-side validation, since client-side checks can be bypassed by anyone posting directly to your endpoint. Finish with a tokenization step so the raw number never rests in your application tier.