Skip to content

Stripe Test Cards

Quick reference of Stripe test card numbers, successful charges, declines, 3D Secure, fraud scenarios, international, all copyable.

What this is

A quick-access reference of Stripe’s published test card numbers. Each card simulates a specific scenario, a successful charge, a particular decline reason, an authentication flow, a fraud signal. Filter by category, click to copy the number to your clipboard.

These numbers ONLY work in Stripe test mode (publishable keys starting with pk_test_). They produce no real charges and bill no real cards. In live mode, they all fail.

Categories covered

Success: standard cards that complete the charge cleanly. The 4242 4242 4242 4242 Visa is the canonical happy-path test card. There are also Mastercard, Amex, Discover, JCB, and Diners variants for testing brand-specific UI.

Decline: cards that fail with specific reasons: generic decline, insufficient funds, lost card, stolen card, expired, incorrect CVC, processing error, invalid Luhn. Use these to test your error-handling UI for each scenario.

Auth: 3D Secure 2 challenge cards. Triggers the bank-side authentication step. Useful for testing the SCA flow that’s required for European customers.

Fraud: disputed/chargeback cards and Stripe Radar high-risk cards. Use these to test fraud-handling logic and webhook handlers for charge.dispute.created.

International: cards from specific countries (UK, Brazil, Japan). Useful for testing currency conversion, geographic routing, and country-specific payment method UIs.

Required fields

When using any test card, you also need:

  • Expiry date: any future date (12/34, 01/30, etc.)
  • CVC/CVV: any 3 digits (123), except Amex which uses 4 digits (1234)
  • Postal code: any value, but 42424 triggers AVS-mismatch testing
  • Cardholder name: any string

Stripe doesn’t validate these against the card number, they only check that the format is plausible. Same applies to the billing address.

Decline codes worth knowing

When you charge a decline-test card, Stripe returns a specific decline_code:

  • generic_decline, most common, no specific reason
  • insufficient_funds, exactly what it says
  • lost_card, bank reported the card lost
  • stolen_card, bank reported the card stolen
  • expired_card, past expiration date
  • incorrect_cvc, CVC mismatch
  • processing_error, temporary issue
  • card_velocity_exceeded, too many recent charges
  • card_not_supported, merchant region/currency mismatch

Your error UI should handle these distinctly. “Your card was declined” is fine for generic; “your card has expired, please update it” is more helpful for expired_card.

When test cards aren’t enough

Test cards simulate the most common scenarios. For more complex testing:

  • Custom errors: use Stripe’s API metadata to inject specific failure modes
  • Webhook testing: use Stripe CLI’s stripe trigger command to fire arbitrary webhook events
  • End-to-end flows: Stripe’s test mode mirrors live mode behavior closely; full E2E tests work
  • Real-world edge cases: card not present (CNP) fraud, network outages, settlement delays, these need integration tests in staging environments

Frequently asked questions

Why doesn’t 4242 4242 4242 4242 work? You’re probably in live mode (publishable key starts with pk_live_). Test cards only work with pk_test_ keys. Check your environment configuration.

Why is my Amex test failing? American Express CVC is 4 digits, not 3. Many forms hard-code a 3-digit CVC field, that’s an integration bug, not a Stripe issue.

Can I use these in other payment processors? No. These card numbers are specifically wired into Stripe’s test infrastructure. Square, PayPal, Adyen each have their own test card numbers.

Is the data here current? The list is based on Stripe’s official test cards documentation. Stripe occasionally adds new scenarios; check stripe.com/docs/testing for the canonical list if you need something specific.

stripe test-card payment testing reference

Related Tools

More in Data Tools