Live Checkout Stuck in Test Mode
Customers received generic decline errors at checkout. The store had launched without ever switching out of Stripe test mode.
A store owner launched their WooCommerce store and immediately started receiving reports from customers that payments weren't going through. The checkout page loaded normally, but every payment attempt failed with a generic error. Orders weren't recording. Revenue was zero.
The cause wasn't a processor outage, a declined card, or a theme conflict. The store had never been switched out of Stripe test mode.
A working checkout that can't process a single payment
The store appeared fully set up. Customers could fill in billing details, enter a card number, and submit the order. The payment step failed every time with no actionable error message.
From the customer's perspective, their card had been declined, or the store seemed broken. From the store owner's perspective, no revenue was coming in and there was no obvious reason why. Neither read on the situation pointed to the actual cause.
Investigation
The first place to check in any checkout failure is the payment gateway configuration. The Stripe Gateway account details screen showed two things immediately: test mode was enabled, and payment was marked as disabled. The store was connected to a test Stripe account, not a live one.
I confirmed this against the WooCommerce gateway log. The payment attempt had reached Stripe and was rejected, with the response showing a decline_code of generic_decline and livemode set to false. That last field was the definitive answer: every transaction on this store was being processed in test mode. Real cards cannot be charged in test mode regardless of the card number, account balance, or card type.
The misconfiguration was invisible to the customer. The checkout page loaded, the form accepted card details, and the error message gave no indication the problem was on the store's end. Customers assumed their card had been declined and abandoned the purchase.
Resolution
I disabled test mode in the WooCommerce Stripe Gateway settings and reconnected the store to the live Stripe account, replacing the test API keys with live keys. I ran a real low-value transaction to confirm the charge processed and appeared correctly in both WooCommerce and the Stripe dashboard before closing the engagement.
| Metric | Before | After |
|---|---|---|
| Checkout success rate | 0% — every attempt declined | 100% on live cards |
| Gateway mode | Test mode, live storefront | Live mode, verified |
| Revenue processed | $0 | Confirmed live transaction |
| Time to diagnose | — | Under 1 hour |
| Customer-facing error | Generic decline, no cause shown | Resolved — no customer-side error |
Test mode is meant to be invisible to customers right up until launch — and invisible to a store owner once it's live, which is exactly the danger. A gateway can be fully configured, branded correctly, and accepting form submissions while quietly rejecting every real payment. Before any go-live, confirm live mode is active and run one real transaction to verify.
Not sure if your store is fully live?
A quick gateway check can confirm whether your store is processing real payments or quietly running in test mode. Schedule a free 15-minute consultation.
Schedule free consultation