Stripe's Official Test Card Numbers
These numbers are reserved by Stripe specifically for test-mode API keys (sk_test_… / pk_test_…). Each one triggers one exact, predictable outcome — which is exactly what you want when testing a specific code path like a decline handler or a 3D Secure challenge.
| Number | Scenario | Network |
| 4242 4242 4242 4242 | Always succeeds | Visa |
| 5555 5555 5555 4444 | Always succeeds | Mastercard |
| 3782 822463 10005 | Always succeeds | American Express |
| 4000 0000 0000 0002 | Generic decline | Visa |
| 4000 0000 0000 9995 | Decline — insufficient funds | Visa |
| 4000 0000 0000 0069 | Decline — expired card | Visa |
| 4000 0025 0000 3155 | Requires 3D Secure authentication | Visa |
Use any future expiry date, any 3-digit CVC (4 digits for Amex), and any postal code — only the card number itself determines the outcome. These numbers only work against Stripe's test-mode API; they'll do nothing against a live key or any other payment provider.
Where Stripe's Fixed List Runs Out
Stripe's official cards are perfect for testing specific, known scenarios one at a time. But they're still the same handful of numbers — which becomes a limitation the moment you need:
- Bulk test data — seeding a staging database with hundreds of realistic-looking (but harmless) card records
- UI and form-validation testing — checking that your input mask, card-brand detection, and client-side Luhn check behave correctly, before a request ever reaches Stripe
- Load or stress testing — simulating many different, unique card numbers hitting your checkout flow simultaneously
This is exactly the gap Luhnly fills. It's not a replacement for Stripe's test cards — it's a complement, for everything upstream of the actual API call.
Frequently Asked Questions
Can I use a Luhnly-generated number with Stripe's test mode?
No. Stripe's sandbox only recognizes card numbers from its own reserved test ranges, not any Luhn-valid number. Use Stripe's official test cards above for anything that actually calls the Stripe API, and use Luhnly for UI, form-validation, or autofill testing that never reaches Stripe.
Why would I need more than Stripe's 4242 card?
Stripe's fixed test numbers are great for specific scenarios like declines or 3D Secure, but they're the same handful of numbers every time. If you need many unique-looking numbers — for load testing, seeding a database, or testing input masks and card-brand detection — a generator like Luhnly fills that gap.
Do Stripe's test card numbers change?
The core numbers like 4242 4242 4242 4242 have stayed stable for years, but Stripe periodically adds new scenario-specific cards. Always cross-check against Stripe's own testing documentation before relying on a specific number in production test suites.