Skip to content

Test Card Numbers for Stripe, Paddle, Polar and Creem

Test card numbers for Stripe, Polar, Lemon Squeezy, Paddle and Creem, for success, declines, 3D Secure and failed renewals, and where the same card differs.

  • Runs in your browser

Checked

01Tool

Tool

Every provider here takes any future expiry date.

37 cards

  • 4242 4242 4242 4242
    Stripe

    Successful payment

    Supports 3D Secure but is not enrolled, so the customer is never asked to authenticate.

    VisaCVC: Any 3 digits

  • 4000 0566 5566 5556
    Stripe

    Successful payment

    A Visa debit card.

    VisaCVC: Any 3 digits

  • 5555 5555 5555 4444
    Stripe

    Successful payment

    MastercardCVC: Any 3 digits

  • 2223 0031 2200 3222
    Stripe

    Successful payment

    A Mastercard from the 2-series range.

    MastercardCVC: Any 3 digits

  • 3782 822463 10005
    Stripe

    Successful payment

    3D Secure is not supported, so payments go ahead without authentication.

    American ExpressCVC: Any 4 digits

  • 4000 0000 0000 0002
    Stripe

    Generic decline

    card_declined with the decline code generic_decline.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 9995
    Stripe

    Insufficient funds decline

    card_declined with the decline code insufficient_funds.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 9987
    Stripe

    Lost card decline

    card_declined with the decline code lost_card.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 9979
    Stripe

    Stolen card decline

    card_declined with the decline code stolen_card.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 0069
    Stripe

    Expired card decline

    The error code expired_card.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 0127
    Stripe

    Incorrect CVC decline

    The error code incorrect_cvc. Enter a CVC, or Stripe skips the check and it cannot fail.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 0119
    Stripe

    Processing error decline

    The error code processing_error.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 0341
    Stripe

    Decline after attaching

    Attaching it to a Customer succeeds, but charging that customer fails, which is how a renewal fails.

    VisaCVC: Any 3 digits

  • 4000 0025 0000 3155
    Stripe

    Authenticate unless set up

    Off-session payments ask for authentication until the card is set up for future payments. On-session payments always ask.

    VisaCVC: Any 3 digits

  • 4000 0027 6000 3184
    Stripe

    Always authenticate

    Every transaction asks for authentication, however the card was set up.

    VisaCVC: Any 3 digitsDiffers by provider

  • 4000 0038 0000 0446
    Stripe

    Already set up

    One-time and other on-session payments ask for authentication. Off-session payments succeed as if the card were set up.

    VisaCVC: Any 3 digitsDiffers by provider

  • 4000 0082 6000 3178
    Stripe

    Insufficient funds after authentication

    Asks for authentication on one-time payments, then declines every payment with insufficient_funds, even after authentication or set-up.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 3220
    Stripe

    3D Secure required

    The payment succeeds once 3D Secure is completed. Issued in Ireland.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 0259
    Stripe

    Dispute: fraudulent

    With default account settings the charge succeeds, then is disputed as fraudulent.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 2685
    Stripe

    Dispute: product not received

    With default account settings the charge succeeds, then is disputed as product not received.

    VisaCVC: Any 3 digits

  • 4000 0000 0000 1976
    Stripe

    Dispute: inquiry

    With default account settings the charge succeeds, then is disputed as an inquiry.

    VisaCVC: Any 3 digits

  • 4242 4242 4242 4242
    Polar

    Successful payment

    The only card Polar’s sandbox page names, though the sandbox takes Stripe’s test numbers.

    VisaCVC: Any

  • 4242 4242 4242 4242
    Lemon Squeezy

    Successful payment

    VisaCVC: Any 3 digits

  • 5555 5555 5555 4444
    Lemon Squeezy

    Successful payment

    MastercardCVC: Any 3 digits

  • 3782 822463 10005
    Lemon Squeezy

    Successful payment

    American ExpressCVC: Any 3 digits, says Lemon Squeezy; Stripe’s list gives Amex 4

  • 4000 0000 0000 9995
    Lemon Squeezy

    Insufficient funds

    VisaCVC: Any 3 digits

  • 4000 0000 0000 0069
    Lemon Squeezy

    Expired card

    VisaCVC: Any 3 digits

  • 4000 0027 6000 3184
    Lemon Squeezy

    3D Secure

    Lemon Squeezy’s page says only 3D Secure.

    VisaCVC: Any 3 digitsDiffers by provider

  • 4000 0566 5566 5556
    Paddle

    Valid Visa debit card

    VisaCVC: Not published

  • 4242 4242 4242 4242
    Paddle

    Valid card without 3DS

    VisaCVC: Not published

  • 4000 0038 0000 0446
    Paddle

    Valid card with 3DS

    VisaCVC: Not publishedDiffers by provider

  • 4000 0000 0000 0002
    Paddle

    Declined card

    VisaCVC: Not published

  • 4000 0027 6000 3184
    Paddle

    Initial success, subsequent decline

    The first payment goes through and later ones decline, which suits a failed renewal.

    VisaCVC: Not publishedDiffers by provider

  • 4111 1111 1111 1111
    Creem

    Successful payment

    VisaCVC: Any

  • 4507 9900 0000 0028
    Creem

    Card declined

    VisaCVC: Any

  • 4507 9900 0000 0010
    Creem

    Insufficient funds

    VisaCVC: Any

  • 4507 9900 0000 0044
    Creem

    Incorrect CVC

    VisaCVC: Any

These numbers work only in each provider’s test environment. The list is built into this page, which sends nothing anywhere.

Same number, different result

A test card does what the provider’s own page says it does. These numbers appear on more than one provider’s page with different outcomes, so a test written for one provider can pass or fail for the wrong reason at another.

4000 0027 6000 3184
ProviderWhat its page says
StripeAlways authenticateEvery transaction asks for authentication, however the card was set up.
Lemon Squeezy3D SecureLemon Squeezy’s page says only 3D Secure.
PaddleInitial success, subsequent declineThe first payment goes through and later ones decline, which suits a failed renewal.

Not listed by Polar and Creem.

4000 0038 0000 0446
ProviderWhat its page says
StripeAlready set upOne-time and other on-session payments ask for authentication. Off-session payments succeed as if the card were set up.
PaddleValid card with 3DS

Not listed by Polar, Lemon Squeezy, and Creem.

Where these work

  • Stripe

    Test environment
    Sandbox
    How to get there
    Pick a sandbox in the Dashboard’s account picker and use its test keys, which start with pk_test_ and sk_test_.
    Test API
    The live API; test keys reach only test data
    CVC
    Any 3 digits
    Cards from
    docs.stripe.com
  • Polar

    Test environment
    Sandbox, a separate server
    How to get there
    Sign up again at sandbox.polar.sh and create a sandbox access token. Production tokens do not work there.
    Test API
    https://sandbox-api.polar.sh
    CVC
    Any
    Cards from
    polar.sh
  • Lemon Squeezy

    Test environment
    Test mode
    How to get there
    Turn on the test mode toggle in the dashboard. A new store starts in test mode, and test-mode API keys see only test data.
    Test API
    The live API; test keys reach only test data
    CVC
    Any 3 digits
  • Paddle

    Test environment
    Sandbox, a separate account
    How to get there
    Create a sandbox account at sandbox-vendors.paddle.com. Its API keys contain _sdbx and its client-side tokens start with test_.
    Test API
    https://sandbox-api.paddle.com
    CVC
    Not published
  • Creem

    Test environment
    Test mode
    How to get there
    Turn on the Test Mode toggle at the bottom of the dashboard’s sidebar and use the test API key.
    Test API
    https://test-api.creem.io
    CVC
    Any
    Cards from
    docs.creem.io

02Guide

How it works

Test and live are kept apart

Where these work, above, shows each provider's test environment. The difference that matters: at Stripe and Lemon Squeezy, test and live share one API and the key alone decides which data a call reaches, while Polar's and Paddle's sandboxes are separate accounts, so nothing made while testing reaches the live dashboard.

Stripe warns that state from one test can carry over to later tests on the same card, so use a different card for each end-to-end scenario.

Testing a failed renewal

Most integrations never see a failed renewal before launch: the first payment works, a later charge fails, and the subscription enters the provider's retry window. At Stripe, 4000 0000 0000 0341 attaches to a customer and then fails every charge. Stripe's billing docs suggest making it the customer's default payment method on a subscription with a trial of a few minutes, so the charge at the end of the trial fails. Expect the attempt about an hour after the trial ends, when the invoice opens. Test clocks move a sandbox subscription through time, so an annual renewal can fail without a year's wait.

Paddle's 4000 0027 6000 3184 does the same in its sandbox: the first payment succeeds and later ones decline. Lemon Squeezy's page names no card for this. Instead, its test mode can simulate the subscription payment webhooks, once a subscription has renewed at least once.

Testing 3D Secure

Stripe's 3D Secure cards differ in when they ask, and for subscriptions that difference is the point, because renewals happen off session. Use 4000 0025 0000 3155 to check that setting the card up at checkout lets later charges go through without the customer, and 4000 0027 6000 3184 to see what your code does when a renewal still asks for authentication.

Two details trip people up. Stripe doesn't redirect to 3D Secure for payments created in its Dashboard, so test through your own checkout or the API. And other Stripe cards may still trigger 3D Secure, but Stripe answers with attempt_acknowledged and skips the challenge, so only the cards in its 3D Secure section test the flow.

Sending webhooks in test mode

A test payment fires the same events a live one does, so a test checkout is the simplest webhook test. To send one event without a checkout:

  • Stripe: stripe listen --forward-to sends sandbox events to a local URL and prints the signing secret, and stripe trigger payment_intent.succeeded fires a single event.
  • Polar: polar listen forwards a sandbox organization's events to a local URL, and polar trigger order.created sends a sample.
  • Paddle: the webhook simulator sends single events or whole scenarios, such as a subscription renewal, in sandbox and live.
  • Lemon Squeezy: in test mode, each subscription's side panel has a Simulate event option.
  • Creem: test mode sends events to your test webhook URL, so a test checkout is the way to fire one.

Mistakes that pass in test and fail in production

  • Test credentials left in production. Creem warns that its test key or test API host in production makes every payment fail, and Paddle answers a sandbox key on the live API with forbidden.
  • Testing only the success card. It proves the checkout loads, not that a decline, a 3D Secure challenge or a failed renewal reaches your code.

03Questions

Questions

What is the Stripe test card number?
4242 4242 4242 4242 is Stripe's basic Visa test card. Use it in a sandbox with test API keys, any future expiry date and any three-digit CVC. Stripe lists more cards for each major brand, for declines, for 3D Secure and for disputes.
Which test card simulates a failed subscription renewal?
At Stripe, 4000 0000 0000 0341. It attaches to a customer, but every charge to that customer fails. Put it behind a short trial and the first real charge fails. Paddle documents 4000 0027 6000 3184 as initial success, subsequent decline. The test pages of Polar, Lemon Squeezy and Creem do not mention one.
Does Polar have its own test cards?
No. Polar's sandbox takes Stripe's test card numbers, and its page names only 4242 4242 4242 4242, with a future expiry date and a random CVC. The sandbox is a separate server at sandbox.polar.sh with its own accounts and access tokens.
What test cards does Creem use?
Creem lists four in its test mode docs. 4111 1111 1111 1111 succeeds, and three cards starting 4507 9900 decline, fail for insufficient funds and fail the CVC check. Any future expiry date, CVV and billing details work.
Why does the same test card behave differently in Paddle?
Each provider decides what its test numbers do. 4000 0027 6000 3184 asks for authentication on every payment at Stripe and is the 3D Secure card at Lemon Squeezy, but Paddle documents it as a first payment that succeeds and later ones that decline. Test with the list of the provider you actually use.
Where do these test cards work?
Only in each provider's test environment, such as a Stripe sandbox, Lemon Squeezy's test mode or a Paddle sandbox account. Paddle states that its test cards don't work in live accounts. Don't use a real card for testing. Stripe's services agreement forbids it, and Lemon Squeezy warns that it can get a store suspended.

04Sources

Sources

Nuxter

Building a SaaS on Nuxt?

Nuxter's Stripe, Polar, Lemon Squeezy and Creem adapters run against each provider's test environment, and a renewal that fails keeps access through a grace period while the provider retries. Stripe's 4000 0000 0000 0341 lets you watch that happen before launch.

See what Nuxter includesFrom $249, one-time.