Stripe Test Cards: Every Number for Payments, Declines & 3D Secure

Bobby Huang

Partner, SDO CPA LLC / CEO, Growthy

July 16, 2026
10 min read
Stripe Bookkeeping
Stripe Test Cards: Every Number for Payments, Declines & 3D Secure

You're wiring up Stripe checkout. You need to know it works before a real customer hits it. That's what stripe test cards are for. They're fake card numbers that trigger one exact result: a good charge, a decline, a 3D Secure prompt, or a fraud flag. No real money moves.

Every card here only works with Stripe's test-mode API keys (sk_test_… and pk_test_…). Flip your dashboard to test mode. Pick a number below, and Stripe runs the exact case that card is built for. We show you where to grab those keys and where to paste them further down, in the "Where to paste your test cards" section.

This page covers every card type Stripe documents: working payments by brand, 3D Secure, declines by code, fraud and Radar, disputes, refunds, country cards, and the newer pm_card_* PaymentMethod tokens. Every number below is copied straight from Stripe's own docs.

What is a Stripe test card number?

A Stripe test card number is a fake card that only works with Stripe's test-mode API keys (sk_test_…/pk_test_…). Each one triggers one exact result: a good charge, a decline, a 3D Secure prompt, or a fraud flag. The universal success card is 4242 4242 4242 4242 (Visa). It works with any future expiry date, any 3-digit CVC, and any ZIP code. Stripe documents dozens of these numbers, one for nearly every case you'd want to test before going live. None of them move real money. A test card just fails in live mode. A real card in test mode breaks the Stripe Services Agreement. Test mode settles right away. Live mode takes a few days.

Key Takeaways

  • The one card to memorize: 4242 4242 4242 4242 is Stripe's universal Visa success card. Reach for it any time you just need a charge that works.
  • CVC, expiry, and ZIP are throwaway values: any 3-digit CVC (4 digits for Amex), any future expiry date, any ZIP code. A Stripe test card CVC is never checked against anything real.
  • Test cards do nothing in live mode: they only work with test-mode keys (sk_test_…/pk_test_…). A real card in test mode breaks Stripe's terms.
  • The number picks the result: decline codes, 3D Secure prompts, and Radar fraud flags each get their own card. Match the row to the case you're testing, not just the happy path.
  • PaymentMethod tokens skip the raw number entirely: pass pm_card_visa or a similar token as the payment_method value when you test at the API level.
  • Mixing test and live keys is the top setup mistake: check which mode you're in before you paste anything into your checkout form.

Grab-and-go: the test cards you'll copy most

Here are the numbers you'll reach for again and again. Each block has a copy button, so you can grab the raw digits and paste them straight into your checkout form or API call. The full reference tables are further down.

Visa, successful payment (the one to memorize):

14242424242424242

Mastercard, successful payment:

15555555555554444

American Express, successful payment (use a 4-digit CVC):

1378282246310005

Generic decline:

14000000000000002

Insufficient funds decline:

14000000000009995

Requires 3D Secure authentication:

14000002760003184

PaymentMethod token for API tests (no raw number needed):

1pm_card_visa

Expiry is any future date, CVC is any 3 digits (4 for Amex), and the ZIP is any value. These work only in test mode. The tables below cover every other card Stripe documents.

Stripe test cards for successful payments (every brand)

See how Growthy handles Stripe Bookkeeping

Free during alpha. Read-only access. You review every sync.

Get started

Use these test credit card numbers any time you need a charge that works, across every brand your customers might use, not just Visa.

Brand

Card number

CVC

Visa

4242 4242 4242 4242

Any 3 digits.

Visa (debit)

4000 0566 5566 5556

Any 3 digits.

Mastercard

5555 5555 5555 4444

Any 3 digits.

Mastercard (2-series)

2223 0031 2200 3222

Any 3 digits.

Mastercard (debit)

5200 8282 8282 8210

Any 3 digits.

Mastercard (prepaid)

5105 1051 0510 5100

Any 3 digits.

American Express

3782 822463 10005

Any 4 digits.

American Express (alt)

3714 496353 98431

Any 4 digits.

Discover

6011 1111 1111 1117

Any 3 digits.

Discover (alt)

6011 0009 9013 9424

Any 3 digits.

Discover (debit)

6011 9811 1111 1113

Any 3 digits.

Diners Club

3056 9300 0902 0004

Any 3 digits.

Diners Club (14-digit)

3622 720627 1667

Any 3 digits.

JCB

3566 0020 2036 0505

Any 3 digits.

UnionPay

6200 0000 0000 0005

Any 3 digits.

UnionPay (debit)

6200 0000 0000 0047

Any 3 digits.

UnionPay (19-digit)

6205 5000 0000 0000 004

Any 3 digits.

See the full list and current test-mode keys on Stripe's site.

3D Secure test cards

Need a 3D Secure test card? Some cards must pass 3D Secure under SCA rules. These numbers force each result on purpose, so your whole auth flow gets tested, not just the happy path.

Scenario

Card number

Behavior

Requires authentication (SCA) on all transactions

4000 0027 6000 3184

Always prompts 3DS.

Requires auth for off-session unless set up

4000 0025 0000 3155

3DS unless saved for future use.

Already set up for off-session

4000 0038 0000 0446

On-session needs auth; off-session succeeds.

Auth required, then declined insufficient_funds

4000 0082 6000 3178

Authenticates, then declines.

3DS2 required, succeeds

4000 0000 0000 3220

Must complete 3DS2.

3DS2 required, declined after auth (card_declined)

4000 0084 0000 1629

Completes 3DS, then declines.

3DS supported but not required

4000 0000 0000 3055

Optional 3DS.

Supports 3DS but not enrolled (no prompt)

4242 4242 4242 4242

Same as basic Visa.

Does not support 3DS

3782 822463 10005

Amex, proceeds without auth.

See how the 3D Secure flow works in Stripe's docs.

Declined payments: test every decline code

A generic decline card covers catch-all error handling in your checkout. To run a stripe declined card test for one exact reason, like insufficient_funds or stolen_card, use the matching row below. That tests the specific decline your code will hit, not a generic stand-in.

Decline code

Card number

Error code returned

generic_decline

4000 0000 0000 0002

card_declined

insufficient_funds

4000 0000 0000 9995

card_declined

lost_card

4000 0000 0000 9987

card_declined

stolen_card

4000 0000 0000 9979

card_declined

expired_card

4000 0000 0000 0069

expired_card

incorrect_cvc

4000 0000 0000 0127

incorrect_cvc

processing_error

4000 0000 0000 0119

processing_error

incorrect_number (fails Luhn)

4242 4242 4242 4241

incorrect_number

card_velocity_exceeded

4000 0000 0000 6975

card_declined

Attaches to Customer, then charge fails

4000 0000 0000 0341

card_declined

See the full decline code list on Stripe's site.

Fraud and Radar test cards

These numbers trigger Stripe Radar's risk score and the AVS/CVC checks. Use them if your code reacts to a risk level or a check failure, like a manual-review queue.

Scenario

Card number

Always blocked (risk = highest)

4100 0000 0000 0019

Highest risk

4000 0000 0000 4954

Elevated risk

4000 0000 0000 9235

CVC check fails

4000 0000 0000 0101

ZIP / postal check fails

4000 0000 0000 0036

Address line 1 check fails

4000 0000 0000 0028

Both ZIP and line 1 fail

4000 0000 0000 0010

Dispute and chargeback test cards

Use these to test your dispute logic, including the charge.dispute.created webhook, without waiting on a real chargeback.

Dispute type

Card number

Fraudulent (3DS-protected)

4000 0000 0000 0259

Product not received

4000 0000 0000 2685

Inquiry

4000 0000 0000 1976

Early fraud warning

4000 0000 0000 5423

Multiple disputes

4000 0004 0400 0079

Refund test cards (async outcomes)

Refunds aren't always instant. These two cards test the pending-then-succeeds and succeeds-then-fails paths, through the refund.updated and refund.failed webhooks.

Scenario

Card number

Refund pending, then succeeds (refund.updated)

4000 0000 0000 7726

Refund succeeds, then fails (refund.failed)

4000 0000 0000 5126

Country-specific test cards

This is a sample, not the full list. For every country Stripe covers, use the link below.

Country

Card number

Brand

United States

4242 4242 4242 4242

Visa.

Canada

4000 0012 4000 0000

Visa.

Mexico

4000 0048 4000 8001

Visa.

Brazil

4000 0007 6000 0002

Visa.

United Kingdom

4000 0082 6000 0000

Visa.

France

4000 0025 0000 0003

Visa.

Germany

4000 0027 6000 0016

Visa.

Australia

4000 0003 6000 0006

Visa.

India

4000 0035 6000 0008

Visa.

Japan

4000 0039 2000 0003

Visa.

See the full country list on Stripe's site.

PaymentMethod test tokens (no raw card numbers)

Pass these as the payment_method value instead of a raw card number, when you test at the API level: the Payment Element, SetupIntents, or saved cards. Same results as the tables above, no card number needed.

  • Success by brand: pm_card_visa, pm_card_visa_debit, pm_card_mastercard, pm_card_amex, pm_card_discover, pm_card_diners, pm_card_jcb, pm_card_unionpay.
  • Declines: pm_card_visa_chargeDeclined, pm_card_visa_chargeDeclinedInsufficientFunds, pm_card_visa_chargeDeclinedLostCard, pm_card_visa_chargeDeclinedStolenCard, pm_card_chargeDeclinedExpiredCard, pm_card_chargeDeclinedIncorrectCvc, pm_card_chargeDeclinedProcessingError, pm_card_visa_chargeDeclinedVelocityLimitExceeded.
  • 3D Secure: pm_card_threeDSecure2Required, pm_card_threeDSecureRequiredChargeDeclined, pm_card_threeDSecureOptional, pm_card_authenticationRequired.
  • Disputes: pm_card_createDispute, pm_card_createDisputeProductNotReceived, pm_card_createDisputeInquiry.
  • Fraud: pm_card_radarBlock, pm_card_riskLevelHighest, pm_card_riskLevelElevated, pm_card_cvcCheckFail, pm_card_avsZipFail.

Older tokens use tok_ (for example tok_visa, tok_visa_chargeDeclined). Most new setups use PaymentMethods instead.

Where to paste your test cards (test keys and setup)

Stripe card testing only works with test-mode keys, never live ones. Grab yours from the Stripe Dashboard. They start with sk_test_… (secret) and pk_test_… (public). A "Test mode" toggle in the dashboard switches your whole account view between test and live data.

Never mix test and live keys in the same setup. A test card against a live key just fails. But a live key sitting in what you think is a test run is how a real charge slips through.

Once you're in test mode, paste any card number from this page into Stripe Checkout, the Payment Element, or a raw Elements card field. Same screen your real customers see, fake number, exact result. No separate sandbox needed. Test mode settles right away. Live mode takes a few days, like any real charge.

One rule doesn't bend: never put a real card into test mode, even to "just check" something. It breaks the Stripe Services Agreement, and it won't show you anything a test card can't already show.

See test-mode keys and the full setup steps on Stripe's site.

Frequently asked questions

Quick answers to what people ask most about stripe test cards, straight from Stripe's own docs.

Are Stripe test cards real card numbers?

No. They're numbers Stripe reserves for testing, tied to no real account and no real person. They only work with test-mode keys, and they never move money. The best-known one is 4242 4242 4242 4242, the standard Visa success card used all through this guide.

What CVC and expiration do I use?

Any future date works (for example 12/34), any 3-digit CVC (4 digits for American Express), and any ZIP or postal code. Stripe doesn't check these against anything real in test mode.

Can I test Stripe on production with my own card?

No. Test cards and test keys stay in test mode only. A real card number in test mode breaks the Stripe Services Agreement. Use test keys with test cards, and live keys with real cards. Live-mode charges move real money. Test-mode charges never do.

How do I test a declined payment?

Use generic_decline, 4000 0000 0000 0002, for a catch-all decline. To test one exact reason, like insufficient_funds, use the matching row instead: 4000 0000 0000 9995 triggers insufficient_funds on the nose.

What's the 3D Secure test card?

4000 0027 6000 3184 always prompts 3D Secure, no matter what. To test auth that only fires for off-session charges unless the card was saved first, use 4000 0025 0000 3155 instead.

Do test cards charge real money?

No. Nothing in test mode settles to a real account, on either side. Test mode exists so you can run every case without moving a dollar.

Why test with multiple cards?

Because your real customers won't all hand you the same one. They'll pay with Visa, Mastercard, Amex, and Discover. Some will get declined. Some will trigger 3D Secure. Some will trip a fraud rule. One card, one happy path, leaves every one of those cases unchecked.

Where can I find the full official list of Stripe test cards?

Stripe's own testing page at docs.stripe.com/testing is the source, and it covers more country cards and edge cases than fit on this page. This guide sorts and links back to that list. Stripe's docs stay the last word.

Where Growthy fits in

Get your checkout working, and money starts moving for real. It doesn't land as line items, though. It lands as one net payout: a single $3,847.92 deposit that's actually 47 charges minus 3 refunds minus $127 in fees, all bundled together. Matching that number back to the sales, refunds, and fees behind it is a real bookkeeping problem, and it's not one this guide tries to solve.

This guide comes from Growthy. We build AI bookkeeping software that matches your Stripe payouts back to the charges, refunds, and fees behind them. For how the Stripe fees hit your chart of accounts, why one payout isn't one sale, and what to do when your deposits don't match your sales, start with our Stripe bookkeeping guide. Past testing and into real revenue? Get started with Growthy.


Growthy is bookkeeping software, not a CPA firm. This content is educational, not professional advice.

Verified against docs.stripe.com/testing on 2026-07-15.

See It Work on Your Data

Free during alpha. Read-only access. You review every sync.

✓ No credit card✓ Works with QuickBooks✓ 85% accuracy
Get started

Bobby Huang Partner, SDO CPA LLC / CEO, Growthy

CPA firm partner who got tired of watching bookkeepers click categorize 500 times a day. Built Growthy to fix it.

View author profile

Growthy is dedicated to helping businesses of all sizes make informed decisions. We adhere to strict editorial guidelines to ensure that our content meets and maintains our high standards.

Keep reading

Stripe Chargeback Accounting: Refunds, Disputes, and Fees
Credit card chargeback dispute documentation
Stripe Bookkeeping

Stripe Chargeback Accounting: Refunds, Disputes, and Fees

Stripe refunds and chargebacks look similar in payouts but hit the books differently. Use the right entries, reserve logic, and fee treatment here now.

Best Stripe Accounting Tools Compared (2026)
Comparing Stripe accounting tools
Stripe Bookkeeping

Best Stripe Accounting Tools Compared (2026)

A practitioner comparison of A2X, Synder, Bookkeep, Acodei, native Stripe-QBO sync, and Growthy for Stripe reconciliation, with pricing, model breakdowns, and a decision table.

Stripe Payouts vs. Individual Transactions: Which Booking Method?
Card payment being processed on a laptop
Stripe Bookkeeping

Stripe Payouts vs. Individual Transactions: Which Booking Method?

Payout-level summary journal entries vs. individual transaction booking in Stripe: when each method works, where individual booking breaks, and why most bookkeepers land on the summary approach.