The default Stripe test card is 4242 4242 4242 4242. Pair it with any future expiry date, any three digit CVC, and any billing ZIP code, and the charge succeeds immediately in test mode. This number works only with test API keys, never contacts a real card network, and never moves real money.
What is the standard Stripe test card number?
Stripe publishes a fixed set of card numbers for each major brand. They all behave the same way: they pass validation, return a token, and settle as a successful test charge.
- Visa: 4242 4242 4242 4242
- Visa debit: 4000 0566 5566 5556
- Mastercard: 5555 5555 5555 4444
- Mastercard debit: 5200 8282 8282 8210
- American Express: 3782 822463 10005
- Discover: 6011 1111 1111 1117
- JCB: 3566 0020 2036 0505
American Express uses a four digit CVC, so supply 1234 rather than 123 when you test that brand.
Which Stripe test cards trigger a decline?
Stripe reserves a separate block of numbers that always fail, and each one maps to a specific decline code. Use them to verify that your error handling shows the right message to the customer.
- 4000 0000 0000 0002: generic decline
- 4000 0000 0000 9995: insufficient funds
- 4000 0000 0000 9987: lost card
- 4000 0000 0000 9979: stolen card
- 4000 0000 0000 0069: expired card
- 4000 0000 0000 0127: incorrect CVC
- 4000 0000 0000 0101: incorrect ZIP code
- 4000 0000 0000 0119: processing error
Each failure returns a decline_code field on the charge object, so you can branch your UI copy on that value instead of parsing error text.
How do you test 3D Secure and authentication flows?
Authentication cannot be simulated with the plain success card. Stripe provides dedicated numbers that force a challenge step inside the payment flow.
- 4000 0025 0000 3155: requires 3D Secure authentication and succeeds once you complete it.
- 4000 0000 0000 3220: requires 3D Secure 2 authentication before the payment can succeed.
- 4000 0084 0000 1629: used for 3D Secure 2 frictionless and challenge testing.
In the browser test modal, choose the successful option to complete the challenge, or the failed option to confirm your app handles an abandoned authentication gracefully.
Do the expiry date, CVC, and ZIP code have to be valid?
For success cards, Stripe accepts any future expiry date, any CVC of the correct length, and any billing ZIP. For the decline cards, the value you enter is irrelevant because the number itself forces the failure. The one exception is the incorrect ZIP card, which returns the address verification failure you are testing for regardless of what you type.
Why does a test card fail in live mode?
Test numbers are rejected by the live environment because they are not issued to any real account. If a test card returns a card_declined error with a live publishable key, you are almost certainly running production keys in a staging environment. Check that every key begins with pk_test_ or sk_test_ before you debug further.
Is it safe to use Stripe test cards?
Yes. Test mode is isolated from the card networks, so no authorization is requested and no cardholder data is stored. Never place real card numbers in a test environment, even briefly, because that exposes live cardholder data to systems that were never audited for it. Keep the two environments strictly separated in code, configuration, and logs.