When a WooCommerce payment gateway is in test mode, it sends payments to the provider’s sandbox, where no real money moves. Real customers get errors like “Your card was declined. Your request was in test mode, but used a non test card”, and any order paid with a test card shows up as “Processing” with nothing in your bank. To fix it, untick test mode in the gateway’s settings, make sure the live keys or the live account are connected, and place one real order to confirm.
Why it happens
- Test mode was left on after launch. You tested the checkout before opening, and the box stayed ticked.
- The gateway is only connected in test. In the official Stripe extension, connecting a test account puts the plugin in test mode, and if your Stripe account is test-only you can’t turn test mode off at all. WooPayments has “test accounts”: you leave them with Activate payments, not with a checkbox.
- Live mode with test keys. The box says live, but the key fields still hold test keys (in Stripe they start with
pk_test_andsk_test_). - A copy or a move of the site. Some gateways switch to test mode when the site address changes. In one support thread, the YITH Stripe plugin switched itself back to test every day after a URL change, with a notice offering “Keep test mode” or “Set live mode”. WooPayments only allows test accounts on sites it treats as development or staging.
- Another plugin overrides the setting. In one thread, a booking plugin had its own Stripe setting that kept WooCommerce’s Stripe in test mode, even with the box unticked.
- The setting doesn’t save. In another thread, the owner switched Payment Plugins for Stripe to live, saved, and found it back on test when they returned. The plugin author pointed to the database not saving changes.
How to check it yourself
- Go to WooCommerce > Settings > Payments and open each enabled method. Look for a box called “Enable test mode”, “Sandbox” or “Test mode”, or a badge that says test.
- For Stripe, open WooCommerce > Settings > Payments > Stripe > Settings and look at the General section. If you can, also check that the keys start with
pk_live_andsk_live_. - For WooPayments, open Payments > Settings and look at Enable test mode. If WooCommerce > Settings > Payments shows an Activate payments button, you are on a test account.
- For PayPal Payments, open WooCommerce > Settings > Payments > PayPal and see if the connected account is a sandbox account.
- Open your checkout in a private window, logged out. Many gateways add a test notice and a test card number under the payment method when test mode is on.
- Look at your recent orders. WooPayments marks test orders with a notice on the order page and adds
[Test]to the order emails. For other gateways, compare the transaction ID in the order with your provider’s live dashboard: if it’s only in the test view, nobody paid. - Check WooCommerce > Status > Logs for your gateway’s log. The “request was in test mode” error means real customers are being declined.
How to fix it
- Turn test mode off. Untick the test box in the gateway’s settings and click Save changes. Reload the page to make sure it stayed off. If it switches back, look for a notice about the site address (accept live mode there), then for another plugin with its own payment settings, and ask your host to check that settings save to the database.
- Connect the live account. If the gateway was connected only in test, connect the live account. In Stripe, connect again in live mode. In WooPayments, click Activate payments and finish the sign-up (the test account is deleted). In PayPal Payments, disconnect the sandbox account and connect the live one.
- Check the keys and the webhook. If your gateway uses keys, paste the live ones. Stripe has a separate webhook and signing secret for live and test, so set up the live one too.
- Place one real order. Buy something cheap with a real card, check that the money shows in your provider’s live dashboard, then refund it.
- Deal with the orders taken in test mode. Don’t ship them yet. Open each one and check whether the money arrived:
- If a real customer placed it, nothing was charged. Change the status to Pending payment, save, and use Order actions > Send order details to customer: the email includes a link to pay. Explain what happened in one line.
- If it was your own test or someone using a test card, change it to Cancelled. WooCommerce puts the stock back. Move it to the trash only when you’re sure, because test orders also count in your reports.
- With downloads or memberships, check that a test order didn’t give access to anything.
How to stop it from happening again
Test mode is a setting, so it can come back with every update, site move or new plugin, and the checkout keeps working while it’s on. Melopo Radar checks your enabled payment methods on every analysis and flags any one that is in test mode as a critical issue, with its name, so you can turn on an email alert for new critical issues. It only shows what it can read: it looks at the gateway’s standard testmode setting (the one Stripe and the old PayPal Standard use), so if your gateway saves test mode another way, Radar won’t warn you about it. It also doesn’t fix the setting for you: you change it in the store. Radar is free for one store. If you’d rather not install anything, the free scanner gives you a first look at your store.
FAQ
Are orders placed in test mode charged? No. The payment went to the provider’s sandbox, so no money moved. The order exists in WooCommerce, but you have to ask the customer to pay again or cancel it.
Why does my gateway keep switching back to test mode? Usually one of three things: the plugin switched itself after the site address changed, another plugin has its own payment setting, or your site isn’t saving settings. Check them in that order.
Can I keep test mode only for administrators? Some gateways have that option, but not all. If yours doesn’t, test on a staging copy of the store, not on the live checkout.
Do test orders affect stock and reports? Yes. They reduce stock and count in WooCommerce’s reports until you cancel or delete them. Cancelling puts the stock back; deleting does not.
How do I know a real order was paid? Look for the transaction ID in the order and find it in your provider’s live dashboard, not in the test view.


