Stripe Test Cards — Complete Developer Reference
Curated, verified Stripe sandbox test cards covering success, decline codes, 3D Secure, AVS, and fraud scenarios.
Stripe provides an extensive set of test card numbers for its sandbox environment. Each number triggers a specific payment outcome — successful charges, specific decline reasons, and 3DS authentication flows. Use any future expiry date and any 3-digit CVC unless otherwise noted.
Showing 28 of 28 test cards
| Card Number | Network | Scenario | Code | Copy |
|---|---|---|---|---|
4242 4242 4242 4242TEST ONLY | Visa | Successful paymentGlobal | — | |
4000 0566 5566 5556TEST ONLY | Visa (debit) | Successful payment (debit)Global | — | |
5555 5555 5555 4444TEST ONLY | Mastercard | Successful paymentGlobal | — | |
2223 0031 2200 3222TEST ONLY | Mastercard (2-series) | Successful paymentGlobal | — | |
5200 8282 8282 8210TEST ONLY | Mastercard (debit) | Successful payment (debit)Global | — | |
3782 822463 10005TEST ONLY | Amex | Successful paymentGlobal | — | |
6011 1111 1111 1117TEST ONLY | Discover | Successful paymentUS | — | |
3056 9300 0902 0004TEST ONLY | Diners Club | Successful paymentGlobal | — | |
3566 0020 2036 0505TEST ONLY | JCB | Successful paymentGlobal | — | |
6200 0000 0000 0005TEST ONLY | UnionPay | Successful paymentGlobal | — | |
4000 0000 0000 0002TEST ONLY | Visa | Declined — generic declineGlobal | card_declined | |
4000 0000 0000 9995TEST ONLY | Visa | Declined — insufficient fundsGlobal | insufficient_funds | |
4000 0000 0000 9987TEST ONLY | Visa | Declined — lost cardGlobal | lost_card | |
4000 0000 0000 9979TEST ONLY | Visa | Declined — stolen cardGlobal | stolen_card | |
4000 0000 0000 0069TEST ONLY | Visa | Declined — expired cardGlobal | expired_card | |
4000 0000 0000 0127TEST ONLY | Visa | Declined — incorrect CVCGlobal | incorrect_cvc | |
4000 0000 0000 0119TEST ONLY | Visa | Declined — processing errorGlobal | processing_error | |
4242 4242 4242 4454TEST ONLY | Visa | Declined — incorrect numberGlobal | incorrect_number | |
4000 0000 0000 3220TEST ONLY | Visa | 3DS — challenge required (new 3DS2)Global | — | |
4000 0027 6000 3184TEST ONLY | Visa | 3DS — challenge required (3DS1 fallback)Global | — | |
4000 0000 0000 3055TEST ONLY | Visa | 3DS — challenge required on setupGlobal | — | |
4000 0000 0000 3097TEST ONLY | Visa | 3DS — frictionless (no challenge)Global | — | |
4000 0084 0000 1629TEST ONLY | Visa | 3DS — authentication required (SCA EU)EU | — | |
4000 0000 0000 0028TEST ONLY | Visa | AVS check — zip code fails, charge succeedsUS | zip_code_fail | |
4000 0000 0000 0036TEST ONLY | Visa | AVS check — line1 fails, charge succeedsUS | address_line1_fail | |
4000 0000 0000 0044TEST ONLY | Visa | AVS check — line1 and zip both failUS | address_zip_fail | |
4000 0000 0000 4954TEST ONLY | Visa | Always blocked — fraud preventionGlobal | card_declined | |
4100 0000 0000 0019TEST ONLY | Visa | Highest risk — Radar review triggeredGlobal | — |
TEST ONLY. These numbers will not process real transactions. Use only in Stripe's sandbox environment with test API credentials.
What it does
27 verified Stripe test cards
Covers every major scenario: success, all decline types, 3DS challenge, frictionless auth, AVS checks, and Radar fraud rules.
Expected response codes
Each card shows the Stripe decline_code or error it produces, so you can test your error handling logic precisely.
3DS2 and SCA scenarios
Cards for 3DS2 challenge, frictionless, SCA required (EU), and authentication unavailable — essential for PSD2 compliance.
Verified against Stripe docs
Data verified against stripe.com/docs/testing with a dated verification badge.
How to use Stripe Test Cards — Complete Developer Reference
- 1Select a scenario
Use the scenario filter to narrow to Success, Declined, 3DS, AVS, or Specialty cards.
- 2Copy the card number
Click Copy next to any card. Choose Number only, Full card, JSON, or cURL format.
- 3Paste into Stripe sandbox
Use the copied number with Stripe.js, Stripe Elements, or direct API calls using your sk_test_ key.
- 4Check the expected outcome
Verify your integration handles the documented response code or error correctly.
Stripe's test card system: how it works
Stripe's sandbox maps specific card numbers to specific outcomes at the network-simulation layer. When you submit a test card, Stripe doesn't forward it to Visa or Mastercard — it short-circuits to a simulated issuer response. The card numbers in the 4000 0000 0000 XXXX range are entirely Stripe-specific test sentinels.
This design means you can test any code path in your payment integration without needing real bank accounts. The tradeoff is that you need to know which number triggers which outcome — which is what this reference is for.
Testing 3DS2 with Stripe: what each card does
Stripe's 3DS2 test cards map to specific authentication outcomes:
• 4000 0000 0000 3220 — requires a 3DS challenge in Payment Intent flow • 4000 0027 6000 3184 — triggers a 3DS1 fallback • 4000 0000 0000 3097 — authenticates frictionlessly (no user step) • 4000 0084 0000 1629 — requires SCA for EU merchants
When testing 3DS, use Stripe.js 'confirmCardPayment' with the return_url parameter so the redirect flow works correctly in your test environment.
Frequently Asked Questions
What expiry and CVC do I use with Stripe test cards?
- Any future date (e.g., 12/28) and any 3-digit CVC for Visa/Mastercard/Discover. For Amex, use a 4-digit CID. The specific values don't matter unless testing CVC/AVS failures.
Why does 4242 4242 4242 4242 always succeed?
- Stripe recognizes this as a designated test card that always returns a successful authorization. It is hardcoded in Stripe's test infrastructure and will always return a Charge or PaymentIntent in 'succeeded' state.
Do Stripe test cards work in production mode?
- No. Test card numbers only work with sk_test_ API keys. Using them with sk_live_ keys returns an error. Production keys require real card numbers.
What is the difference between 3DS challenge and 3DS frictionless?
- A 3DS challenge shows the cardholder a verification step (OTP, biometric). Frictionless authentication happens silently — the card is authenticated without user interaction. Both complete 3DS authentication; frictionless just has no visible step.
How do I test Stripe Radar fraud rules?
- Stripe provides specific test cards that trigger Radar rules: 4000 0000 0000 4954 is always blocked, 4100 0000 0000 0019 triggers a review. These help test your fraud-handling flows without real fraud.
Related Tools
UUID Generator
Generate random UUID v4 identifiers. Bulk generate up to 100 UUIDs, toggle uppercase/lowercase and hyphen formatting.
JSON Formatter
Clean, minify, and validate JSON data structures.
JWT Decoder
Decode and inspect JWT tokens — header, payload, timestamps.
Regex Tester
Real-time expression matching and testing.