Quick answer

Stripe test card numbers are fake card credentials that only work in test mode. For a standard successful payment, enter 4242 4242 4242 4242, any future expiry date, any three digit CVC, and any billing postal code. Use 4000 0025 0000 3155 when you need the 3D Secure challenge to appear, 4000 0000 0000 9995 for an insufficient funds decline, and 4000 0000 0000 0002 for a generic decline. No real money moves and no real cardholder is charged.

Stripe Test Card Numbers vs Real Card Numbers: What Actually Differs

Prerequisites

  • A Stripe account with test mode available
  • Test publishable key (starts with pk_test_) and test secret key (starts with sk_test_)
  • A checkout form or a client integration such as Stripe.js or Checkout
  • A development environment that holds no live API keys

How to run a test payment

  1. Open the Stripe Dashboard and turn the Test mode switch on.
  2. Copy the test publishable key into your front end configuration.
  3. Copy the test secret key into your server environment variable file.
  4. Restart your application so the test keys load.
  5. Open your checkout page in a browser.
  6. Type 4242 4242 4242 4242 into the card number field.
  7. Enter any future expiry date, such as 12 / 34.
  8. Enter any three digit CVC, such as 123.
  9. Enter any postal code, such as 10001.
  10. Submit the form and wait for the confirmation state.
  11. Open Dashboard, then Payments, and confirm the charge appears with a test badge.

Card numbers by response type

Successful payments

  • 4242 4242 4242 4242 works for Visa
  • 5555 5555 5555 4444 works for Mastercard
  • 3782 822463 10005 works for American Express and takes a four digit CVC
  • 6011 1111 1111 1117 works for Discover

Declines and errors

  • 4000 0000 0000 0002 returns a generic card decline
  • 4000 0000 0000 9995 returns an insufficient funds decline
  • 4000 0000 0000 0069 returns an expired card error
  • 4000 0000 0000 0127 returns an incorrect CVC error
  • 4000 0000 0000 0119 returns a processing error at the network level

Authentication flows

  • 4000 0025 0000 3155 forces a 3D Secure challenge that you can pass
  • 4000 0000 0000 3063 forces a 3D Secure challenge that fails

Test mode behavior for authentication depends on your integration. If you use Payment Intents with automatic confirmation, Stripe handles the challenge redirect. If you build a custom flow, read the next action on the Payment Intent and route the customer to the returned URL.

Where Can I Find Stripe Test Card Numbers?

Troubleshooting

  • Card number rejected as invalid: you are almost certainly sending a live key against a test card. Check for pk_live_ or sk_live_ values in your config.
  • Charge does not appear in the dashboard: confirm the dashboard is still in test mode, since test and live data never mix.
  • 3D Secure modal never opens: swap in 4000 0025 0000 3155 and verify your client code handles the requires_action state.
  • Webhooks missing: forward events from your test endpoint with the Stripe CLI and watch the terminal output.
  • Decline card keeps declining: this is the expected result. Use 4242 4242 4242 4242 to confirm your happy path still works.

Handling test data safely

Treat every test card number as public sample data and nothing more. Never paste a real card number into a development form, a staging database, or a screenshot, even for a quick check. PCI DSS rules forbid live cardholder data in non production systems, and a staging breach carries the same reporting weight as a production one. Keep test keys in a separate environment file, rotate them when a contractor leaves, and strip card input logging from every build that is not production.

related stripe test card numbers vs real card numbers