The standard Stripe test card is 4242 4242 4242 4242. Enter it with any future expiry date, any three-digit CVC, and any postal code to simulate a successful Visa payment. A Stripe test card only works when your integration uses test API keys, so no real money moves and no real cardholder is involved.
How Stripe test mode works
Stripe separates live traffic from testing with two key types. Keys that start with pk_test_ and sk_test_ point to test mode, where the payment network is simulated inside Stripe. Keys that start with pk_live_ and sk_live_ point to live mode, where real cards are charged.
Because the two modes use different data stores, a test card number entered on a live checkout will fail. The reverse is also true: a real card number entered in test mode is rejected. That separation is intentional and keeps production data clean.
Core Stripe test card numbers
- 4242 4242 4242 4242 — Visa, succeeds immediately.
- 5555 5555 5555 4444 — Mastercard, succeeds immediately.
- 3782 822463 10005 — American Express, succeeds (CVC is four digits).
- 6011 1111 1111 1117 — Discover, succeeds.
- 3056 9300 0902 0004 — Diners Club, succeeds.
For all of these, any future expiration date passes validation, and the CVC field accepts any digits as long as the length matches the brand.
Decline and error test cards
Successful charges are only half of a payment integration. Stripe publishes dedicated numbers that trigger specific failure paths so you can confirm your error messaging and retry logic.
- 4000 0000 0000 0002 — generic decline.
- 4000 0000 0000 9995 — decline due to insufficient funds.
- 4000 0000 0000 0069 — decline due to an expired card.
- 4000 0000 0000 0127 — decline due to an incorrect CVC.
- 4000 0000 0000 0119 — processing error on the network side.
Use these to verify that your checkout shows a clear message, keeps the customer on the form, and does not create a duplicate charge on resubmission.
3D Secure and authentication test cards
Strong Customer Authentication flows need their own test values. Cards such as 4000 0025 0000 3155 and 4000 0000 0000 3220 force an authentication step. Stripe opens a test authentication page where you choose to complete or fail the challenge, which lets you exercise both branches of your flow without a real issuer.
Rules to remember while testing
- Always confirm the dashboard is in test mode before you start.
- Use a future expiry date; past dates fail validation before the card is even sent.
- Keep test card numbers out of production configuration and never swap in real card data to debug.
- Repeat each scenario after a page refresh to catch state bugs in your client code.
- Check webhook handling in test mode, since events such as
payment_intent.succeededfire there too.
What to verify before going live
A complete test pass covers more than the happy path. Run the successful Stripe test card, each decline type, an authentication challenge, and a network error. Confirm that receipts, order records, and subscription state all match the outcome the customer saw, then switch to live keys only after every scenario behaves as expected.