Short answer: in Stripe test mode the CVC field accepts any 3 digit value, or 4 digits for American Express. There is no "v6" version of a CVV. If a search engine sent you here with that phrase, the number you want is 4242 4242 4242 4242 paired with any CVC such as 123, any future expiry date, and any postal code. The test charge succeeds.

What a CVC actually is

The CVC, also written CVV or CVV2, is the short code printed on a card. Visa, Mastercard and Discover use 3 digits on the back. American Express uses 4 digits on the front and calls it the CID. The code exists to prove the person entering the card number physically holds the card. It is never stored after authorization, which is why Stripe only ever reports the result of the check, not the code itself.

In the Stripe API the field is named cvc when you create a token or PaymentMethod, and the result comes back as cvc_check. That field returns one of four values: pass, fail, unavailable, or unchecked. Test mode almost always returns pass.

Stripe test card numbers worth keeping

Any future expiry works on all of these, and any CVC works on all of them unless noted.

  • 4242 4242 4242 4242, Visa, the default success card
  • 4000 0566 5566 5556, Visa debit
  • 5555 5555 5555 4444, Mastercard
  • 5200 8282 8282 8210, Mastercard debit
  • 3782 822463 10005, Amex, needs a 4 digit CVC
  • 6011 1111 1111 1117, Discover
  • 3056 9300 0902 0004, Diners Club
  • 3566 0020 2036 0505, JCB

Test cards that deliberately fail the CVC check

Stripe ships a handful of numbers built to break a specific check so you can test your own error handling.

  • 4000 0000 0000 0101, the CVC check fails
  • 4000 0000 0000 0127, incorrect CVC supplied
  • 4000 0000 0000 0170, the zip or postal code check fails
  • 4000 0000 0000 0002, a generic decline
  • 4000 0000 0000 0069, expired card
  • 4000 0000 0000 9995, insufficient funds
  • 4000 0025 0000 3155, requires 3D Secure authentication

If your integration reads cvc_check and refuses to continue on anything but pass, run 4000 0000 0000 0127 through it. That is the fastest way to confirm the branch works.

Where the "v6" confusion comes from

I have never found a "v6" CVC in Stripe's documentation, and I have read those pages more than once. The label usually shows up for one of three reasons. Some processors log a card under an internal scheme number and a support agent reads it aloud as a version. Some people misremember CVV2 as a version, since the 2 does look like a revision marker. And some card BIN databases append their own revision tags, such as a sixth schema release, to the prefix rather than to the code.

None of that changes how the field behaves. A CVC is three digits, four for Amex, and in test mode the value is irrelevant unless you deliberately pick a failing test card.

Mistakes I see most

  • Using a real card number in test mode. Test keys reject live numbers, and live keys will actually charge them.
  • Forgetting that Amex wants 4 digits. A 3 digit value returns a validation error before any check runs.
  • Treating unavailable as a failure. It usually means the issuer did not participate, not that the card is bad.
  • Testing CVC handling with the plain 4242 card. It always passes, so the failure branch never fires.

Switch to test keys, use the numbers above, and treat the CVC field as a free text box that only ever returns a verdict.