Stripe Test CVV: Short Answer
In Stripe test mode, any three digit number works as the CVV on a standard test card. Enter 123, 000, or 999 and the CVC check returns a pass. The CVV value only changes the outcome when you use one of Stripe's dedicated decline cards, such as 4000 0000 0000 0127, which is built to fail the CVC check on purpose. Stripe publishes these numbers for developers, and test mode rejects real card numbers.
Stripe Test CVV Sample: What to Type in Test Mode
How test mode handles the CVV
Test mode is a sandbox. Stripe routes every request through a simulator instead of a card network, so no issuer ever sees the data. That is why the CVV field accepts arbitrary digits on success cards. The simulator still runs the same validation logic your live integration uses, including the CVC check, so a passing test tells you the field is wired up and formatted correctly.
Two things stay strict even in the sandbox. The card number must match the expected length and Luhn check, and the expiry must be a future date. Anything else returns a validation error before the payment is ever attempted.
Stripe Test CVV Code: What to Enter in Test Mode
Standard test cards and the CVV to use
- 4242 4242 4242 4242 (Visa): any 3 digits, for example 123
- 5555 5555 5555 4444 (Mastercard): any 3 digits
- 3782 822463 10005 (American Express): any 4 digits, for example 1234
- 6011 1111 1111 1117 (Discover): any 3 digits
American Express is the exception worth remembering. Its card identification number is four digits, and a three digit entry returns a length error rather than a CVC failure.
Test cards that fail the CVC check
- 4000 0000 0000 0127: declines with an incorrect CVC result
- 4000 0000 0000 0101: declines with a failed CVC check result
Use these to confirm that your error handling surfaces the right decline code and that your UI tells the customer what to fix.
Run a test CVV check step by step
- Switch your integration to test mode by loading your test API keys instead of your live keys.
- Open the checkout form or Payment Element in your development environment.
- Type 4242 4242 4242 4242 into the card number field.
- Type 123 into the CVC field.
- Type 12/34 into the expiry field.
- Submit the payment.
- Open the Dashboard and confirm the PaymentIntent shows a succeeded status with a passing CVC check.
- Repeat the run with 4000 0000 0000 0127 and confirm your code handles the CVC decline without crashing.
Rules that keep test data clean
- Never type a real card number, CVV, or expiry into a test environment.
- Keep live keys out of local config files and source control.
- Reset test data between runs so old PaymentIntents do not mask new failures.
- Log decline codes, not full card values.
Troubleshooting common issues
A card number rejected as invalid usually means the digits were mistyped or the number is a real one. An expired card error means the date has passed, including test dates. A CVC failure on a success card points at your form, not Stripe, so check that the field is sending the value and that the element is not disabled.