Stripe test cards do not need a special CVV. Any 3-digit CVC works on Visa, Mastercard, Discover, and most other test card numbers, and any 4-digit CVC works on American Express. The card number itself decides whether the CVC check passes, fails, or is skipped, so you can test card verification without touching a real card.

Stripe Test Card CVV Process

What CVC value do Stripe test cards use?

Use any 3 digits, such as 123, for Visa, Mastercard, Discover, Diners Club, JCB, and UnionPay test numbers. Use any 4 digits, such as 1234, for American Express test numbers. Stripe's testing documentation states that test cards accept almost any CVC value, and the digits you type do not change the outcome of the check.

stripe test card cvv verification system

The result comes from the card number instead. Stripe maps each test card number to a scripted outcome, so the same CVC in the same field can produce a passing check on one number and a failing check on another. That is what makes a Stripe CVV test useful: you can drive every possible cvc_check status on demand.

stripe test card cvv process

Test card numbers that exercise CVV behavior

  • 4242 4242 4242 4242: succeeds with any CVC, any future expiry date, and any postal code.
  • 4000 0000 0000 0101: the CVC check fails and the charge is declined.
  • 4000 0000 0000 0127: declined with an incorrect CVC reason code.
  • 4000 0025 0000 3155: requires 3D Secure authentication before the payment completes.
  • 3782 822463 10005: American Express test number, where the CVC field takes 4 digits.

Check Stripe's current testing page before you freeze a test suite, since test numbers are occasionally added or retired.

Stripe Test Card Verification Code Guide

How to test CVC handling step by step

  1. Switch your API keys from live mode to test mode.
  2. Create a payment intent with a test card number and any test CVC value.
  3. Read the cvc_check field on the resulting charge or payment method.
  4. Handle each status your integration can receive: pass, fail, unchecked, and unavailable.
  5. Repeat with a failing test number such as 4000 0000 0000 0127 and confirm your UI shows the right message.

Where the CVC check actually happens

Stripe collects the CVC in your checkout form or through a hosted element, then sends the value to the card network for verification during authorization. Your server should never receive the raw digits. That is why the result arrives as a status string rather than a number you can inspect. When you build with Stripe Elements or Stripe Checkout, the field is tokenized in the browser and your backend only sees the check outcome.

Mistakes to avoid

  • Testing with live keys, which produces real declines and real fees.
  • Assuming a specific CVC value triggers a decline. Only the card number does.
  • Logging or storing CVC digits out of habit, even in test mode.
  • Testing only the happy path and never the failing CVC card.

Why real card data never belongs in this test

The CVC exists to prove that the person paying holds the physical card. PCI DSS rules state that verification values must not be stored after authorization and must not appear in logs or databases. Testing with published test numbers keeps you inside those rules and still lets you verify every branch of your code. A Stripe CVV test is a safe, repeatable way to confirm that your integration reads the check result correctly before you go live.