Advertisement

Stripe Test Card Numbers

Every card number Stripe documents for test mode, grouped by brand, decline reason, Radar check and 3D Secure flow — with copy buttons and a link to the source.

Advertisement

Successful payments by card brand

All of these succeed. They are useful for checking that your form detects each brand, including 14-digit Diners Club and 19-digit UnionPay numbers and the 2-series Mastercard range.

BrandNumberResultCopy
Visa4242 4242 4242 4242Succeeds
Visa (debit)4000 0566 5566 5556Succeeds
Mastercard5555 5555 5555 4444Succeeds
Mastercard (2-series)2223 0031 2200 3222Succeeds
Mastercard (debit)5200 8282 8282 8210Succeeds
Mastercard (prepaid)5105 1051 0510 5100Succeeds
American Express3782 822463 10005Succeeds
American Express3714 496353 98431Succeeds
Discover6011 1111 1111 1117Succeeds
Discover6011 0009 9013 9424Succeeds
Discover (debit)6011 9811 1111 1113Succeeds
Diners Club3056 9300 0902 0004Succeeds
Diners Club (14-digit card)3622 720627 1667Succeeds
BCcard and DinaCard6555 9000 0060 4105Succeeds
JCB3566 0020 2036 0505Succeeds
UnionPay6200 0000 0000 0005Succeeds
UnionPay (debit)6200 0000 0000 0047Succeeds
UnionPay (19-digit card)6205 5000 0000 0000 004Succeeds
Cartes Bancaires/Visa4000 0025 0000 1001Succeeds
Cartes Bancaires/Mastercard5555 5525 0000 1001Succeeds
eftpos Australia/Visa4000 0503 6000 0001Succeeds
eftpos Australia/Mastercard5555 0503 6000 0080Succeeds

Source: Stripe docs – Testing · checked October 2026. Sandbox only — these numbers never work for real payments.

Advertisement

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.

BrandNumberResultCopy
Visa4000 0000 0000 0002Declined: error code card_declined, decline code generic_decline
Visa4000 0000 0000 9995Declined: error code card_declined, decline code insufficient_funds
Visa4000 0000 0000 9987Declined: error code card_declined, decline code lost_card
Visa4000 0000 0000 9979Declined: error code card_declined, decline code stolen_card
Visa4000 0000 0000 0069Declined: error code expired_card
Visa4000 0000 0000 0127Declined: error code incorrect_cvc
Visa4000 0000 0000 0119Declined: error code processing_error
Visa4000 0000 0000 6975Declined: error code card_declined, decline code card_velocity_exceeded
Visa4000 0000 0000 0341Attaching to a Customer succeeds, but charging the customer fails
Advertisement

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.

BrandNumberResultCopy
Visa4100 0000 0000 0019Radar: Always blocked
Visa4000 0000 0000 4954Radar: Highest risk
Visa4000 0000 0000 9235Radar: Elevated risk
Visa4000 0000 0000 0101Radar: CVC check fails
Visa4000 0000 0000 0036Radar: Postal code check fails
Visa4000 0000 0000 0028Radar: Line1 check fails
Visa4000 0000 0000 0010Radar: 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.

BrandNumberResultCopy
Visa4000 0025 0000 31553DS: Authenticate unless set up
Visa4000 0027 6000 31843DS: Always authenticate
Visa4000 0038 0000 04463DS: Already set up
Visa4000 0082 6000 31783DS: Insufficient funds
Visa4000 0000 0000 32203DS Required – OK
Visa4000 0084 0000 00273DS Required – OK
Visa4000 0084 0000 16293DS Required – Declined
Visa4000 0084 0000 12803DS Required – Error
Visa4000 0000 0000 30553DS Supported – OK
Visa4000 0000 0000 30973DS Supported – Error
Visa4242 4242 4242 42423DS Supported – Unenrolled
American Express3782 822463 100053DS Not supported
Visa4000 0000 3220 00003DS Frictionless flow – OK
Visa4000 5826 0000 00943DS2 challenge: Out of band UI
Visa4000 5826 0000 00453DS2 challenge: One time passcode UI
Visa4000 5826 0000 01023DS2 challenge: Single select UI
Visa4000 5826 0000 01103DS2 challenge: Multi select UI

Testing Stripe payments step by step

  1. Switch the Dashboard to test mode or a sandbox and copy the test publishable and secret keys into your development environment.
  2. Pay with 4242 4242 4242 4242 in your checkout to confirm the happy path end to end, including webhooks such as payment_intent.succeeded.
  3. Repeat with each decline card and check that your UI shows a useful message for card_declined, expired_card and incorrect_cvc.
  4. 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.
  5. 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:

Test cards only work in Stripe’s sandbox or test mode. To test your own form validation before a request reaches the gateway, use our card number generator and validator. Never use real customer cards in test environments.

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.

Related tools

Advertisement