CheckoutAlarmWatch my app free

Stripe "live mode, but used a known test card" decline: what it means

You typed 4242 4242 4242 4242 into your checkout, the way you always did, and it came back declined. The message developers report is “Your card was declined. Your request was in live mode, but used a known test card.” Stack Overflow report WordPress.org report That sentence isn't on Stripe's docs pages; Stripe documents the decline as testmode_decline (below). Nothing is broken. Your page is now using live keys, and live mode only takes real cards. The question is whether that's what you wanted.

Free tool: whether a key is a test or live key

What it would catch here

If your store already had steady sales and real payments stop, CheckoutAlarm sends a stalled-sales email at its next Stripe check (once a day on Free, hourly on Pro): no successful charges in 48 hours when the previous 14 days averaged at least 3 in a window that long.

What it won't catch

It never sees a declined test card, and it won't alert for a store that just went live with no sales history. It doesn't visit or test your checkout.

Plans

Free: 1 site, checked once a day. Pro: $19 a month, up to 3 sites checked hourly. You prove you own the site first. For Stripe we only take a restricted key with read access to Events, Webhook Endpoints and Charges. Full secret keys are refused. Compare plans

A test card hit live keys

Stripe's decline code for this is testmode_decline. Its description is “A Stripe test card number was used.” and its next step is “A genuine card must be used to make a payment.” Stripe: decline codes

Test cards only work with test keys

When you use a test card, Stripe says to use test API keys in all API calls, whether you're testing a payment form by hand or writing test code. Stripe: testing Each mode has its own keys, and objects in one mode aren't available in the other. Stripe: sandbox versus live mode

Read the key prefixes

Sandbox keys start with pk_test_, rk_test_ and sk_test_. Live keys start with pk_live_, rk_live_ and sk_live_. Stripe: API keys Check the publishable key the page loads and the secret key your server uses. They should be the same mode.

Expected: you just went live

If this is your production site and you meant to go live, the decline is Stripe doing its job. Stop testing on production and move testing to a sandbox (below).

Not expected: a preview or staging site has live keys

If this was a preview, staging or local build, its environment variables point at live keys. Give each environment its own keys, so only production gets pk_live_ and sk_live_. Stripe recommends a separate sandbox for new integrations, so settings and data stay apart from live mode. Stripe: API keys

Test in a sandbox

Point a preview build at sandbox keys and run your checkout with 4242 4242 4242 4242, any future date and any CVC. Stripe: testing More in how to test a Stripe webhook.

Don't swap in a real card

Stripe's testing page says: “Don’t use real card details. The Stripe Services Agreement prohibits testing in live mode using real payment method details.” Stripe: testing

Check the live setup without a payment

Stripe's go-live checklist: sandbox objects such as products and plans aren't usable in live mode, and your account can have separate test and live webhook endpoints, so register the production one. Stripe: go-live checklist Stripe also says to “confirm that the live endpoint functions exactly the same as your test endpoint.” Confirm the live price IDs your server sends exist in live mode, and that the live endpoint's URL, signing secret and selected events match what you tested. See works in test mode but not live and "No such price".

Watch the first real orders

When real customers pay, open the live webhook endpoint's Event deliveries in the Dashboard and confirm each event got a 2xx. Stripe: view event deliveries

What does "Your request was in live mode, but used a known test card" mean?
That is the decline message developers report when a Stripe test card such as 4242 4242 4242 4242 is used with live keys. Stripe's docs don't print that sentence; they document the decline code testmode_decline, described as "A Stripe test card number was used." with the next step "A genuine card must be used to make a payment."
Can I use a test card in live mode?
No. Test cards work only with test API keys in a sandbox. Stripe says to use test API keys in all API calls when you use a test card.
Can I test live mode with my own real card instead?
No. Stripe's testing page says: "Don’t use real card details. The Stripe Services Agreement prohibits testing in live mode using real payment method details." Test in a sandbox with test keys, then check the live setup without a test payment.
Does CheckoutAlarm catch this?
Not the decline itself. If your store had steady sales and checkout stops taking real payments, its stalled-sales check emails you once 48 hours pass with no successful charges, at its next Stripe check (once a day on Free, hourly on Pro). A new store with no sales history won't trigger it.

CheckoutAlarm doesn't see a declined test card. If steady sales stop for 48 hours, it sends a stalled-sales email at its next Stripe check. It won't alert for a new store with no sales history.

CheckoutAlarm is new. It only checks sites you prove you own. How to verify

Watch my app free

Docs checked on Oct 22, 2026.