How Stripe test cards work
Stripe test cards only work with your test API keys (they start with pk_test_ and sk_test_) or in a Stripe sandbox. They never move money. In live mode the same numbers are rejected, and Stripe’s terms forbid testing live mode with real card details.
For card details, use any future expiry date such as 12/34 and any three-digit CVC (four digits for American Express). Other fields, such as name or postal code, can be anything. There is one exception: if you want a CVC or postal code check to fail, you have to send a value, because Stripe skips checks for empty fields.
In server-side code and automated tests, Stripe recommends test PaymentMethod IDs instead of raw numbers, for example pm_card_visa, pm_card_visa_chargeDeclined or pm_card_threeDSecure2Required. Sending raw card numbers from your server can put the code in PCI scope once it goes live. Use the raw numbers below in Stripe Elements, Checkout or Payment Links, where the customer types them.
Declined payments
Each card returns the error code shown. Cards that simulate issuer declines can’t be attached to a Customer; use 4000 0000 0000 0341 when you need a card that attaches successfully and then fails when charged. Stripe also documents incorrect_number for a card number that fails the Luhn check — any 4242 card with a wrong last digit.
| Brand | Number | Result | Copy |
|---|---|---|---|
| Visa | 4000 0000 0000 0002 | Declined: error code card_declined, decline code generic_decline | |
| Visa | 4000 0000 0000 9995 | Declined: error code card_declined, decline code insufficient_funds | |
| Visa | 4000 0000 0000 9987 | Declined: error code card_declined, decline code lost_card | |
| Visa | 4000 0000 0000 9979 | Declined: error code card_declined, decline code stolen_card | |
| Visa | 4000 0000 0000 0069 | Declined: error code expired_card | |
| Visa | 4000 0000 0000 0127 | Declined: error code incorrect_cvc | |
| Visa | 4000 0000 0000 0119 | Declined: error code processing_error | |
| Visa | 4000 0000 0000 6975 | Declined: error code card_declined, decline code card_velocity_exceeded | |
| Visa | 4000 0000 0000 0341 | Attaching to a Customer succeeds, but charging the customer fails |
Radar fraud and verification checks
Radar results depend on your Radar rules and settings. Cards for optional controls (Adaptive 3DS, dynamic risk thresholds, free-trial abuse) only behave differently when that control is enabled, so they are left out here.
| Brand | Number | Result | Copy |
|---|---|---|---|
| Visa | 4100 0000 0000 0019 | Radar: Always blocked | |
| Visa | 4000 0000 0000 4954 | Radar: Highest risk | |
| Visa | 4000 0000 0000 9235 | Radar: Elevated risk | |
| Visa | 4000 0000 0000 0101 | Radar: CVC check fails | |
| Visa | 4000 0000 0000 0036 | Radar: Postal code check fails | |
| Visa | 4000 0000 0000 0028 | Radar: Line1 check fails | |
| Visa | 4000 0000 0000 0010 | Radar: Address checks fail |
3D Secure and authentication
Only these cards reliably exercise 3D Secure. Other test cards can still trigger it, but they return attempt_acknowledged. Payments created in the Dashboard never redirect to a 3DS page.
| Brand | Number | Result | Copy |
|---|---|---|---|
| Visa | 4000 0025 0000 3155 | 3DS: Authenticate unless set up | |
| Visa | 4000 0027 6000 3184 | 3DS: Always authenticate | |
| Visa | 4000 0038 0000 0446 | 3DS: Already set up | |
| Visa | 4000 0082 6000 3178 | 3DS: Insufficient funds | |
| Visa | 4000 0000 0000 3220 | 3DS Required – OK | |
| Visa | 4000 0084 0000 0027 | 3DS Required – OK | |
| Visa | 4000 0084 0000 1629 | 3DS Required – Declined | |
| Visa | 4000 0084 0000 1280 | 3DS Required – Error | |
| Visa | 4000 0000 0000 3055 | 3DS Supported – OK | |
| Visa | 4000 0000 0000 3097 | 3DS Supported – Error | |
| Visa | 4242 4242 4242 4242 | 3DS Supported – Unenrolled | |
| American Express | 3782 822463 10005 | 3DS Not supported | |
| Visa | 4000 0000 3220 0000 | 3DS Frictionless flow – OK | |
| Visa | 4000 5826 0000 0094 | 3DS2 challenge: Out of band UI | |
| Visa | 4000 5826 0000 0045 | 3DS2 challenge: One time passcode UI | |
| Visa | 4000 5826 0000 0102 | 3DS2 challenge: Single select UI | |
| Visa | 4000 5826 0000 0110 | 3DS2 challenge: Multi select UI |
Testing Stripe payments step by step
- Switch the Dashboard to test mode or a sandbox and copy the test publishable and secret keys into your development environment.
- Pay with
4242 4242 4242 4242in your checkout to confirm the happy path end to end, including webhooks such aspayment_intent.succeeded. - Repeat with each decline card and check that your UI shows a useful message for
card_declined,expired_cardandincorrect_cvc. - Run the 3D Secure cards through your real payment flow (not the Dashboard) to make sure the authentication modal opens and your code handles
requires_action. - Use a different card per independent scenario: card-level state from one test can affect the next one.
Common errors and fixes
- “Your card was declined. Your request was in live mode, but used a known test card.”
- You are using live keys. Swap in the
pk_test_/sk_test_keys. - No 3D Secure prompt appears
- Use a card from the 3D Secure table and confirm the payment from your integration. Generic test cards and Dashboard payments do not trigger a challenge.
- CVC check never fails
- Send a CVC value with
4000 0000 0000 0101. Without a CVC the check is skipped. - HTTP 429 in tests
- Test mode has stricter rate limits than live mode. Slow down parallel test runs.
Sources
Every number on this page was copied from Stripe’s official documentation and passes the Luhn check. Checked October 2026; gateways change their test data from time to time, so if a number stops working, check the source:
Frequently asked questions
What is the Stripe test card number?
The standard one is 4242 4242 4242 4242 (Visa) with any future expiry date and any three-digit CVC. It always succeeds in test mode.
Which Stripe test card is declined for insufficient funds?
4000 0000 0000 9995 returns card_declined with decline code insufficient_funds.
How do I test 3D Secure in Stripe?
Use 4000 0027 6000 3184, which requires authentication on every payment, or one of the other cards in the 3D Secure table. Complete or fail the challenge in the test modal.
Do Stripe test cards work in live mode?
No. They only work with test keys or in a sandbox. In live mode they are rejected.
Can I use these test cards on another gateway?
Usually not. Each gateway only recognises its own documented test numbers in its own sandbox. Some numbers, such as 4111 1111 1111 1111, appear in several lists, but the results they trigger differ. For format-only testing on your own forms, use our card generator.