preloader

WP Simple Pay Works in Test Mode But Not Live Mode? Here’s Why

If your WP Simple Pay form processed test payments without a hitch but breaks the moment you switch to live — freezing, refusing card input, or not closing when clicked — you’re dealing with one of a small number of specific causes, not a general “plugin bug.” Here’s how to isolate which one you’re facing.

Check Whether Every Form Actually Switched to Live Mode

This is the most common cause and the easiest to miss. WP Simple Pay lets each individual form override the account-wide test/live setting. Switching your global Stripe connection to Live Mode does not automatically switch every form you’ve built — a form can stay in Test Mode independently, or a form can be in Live Mode while your global setting says Test.

To check: go to WP Simple Pay → Payment Forms and look at each form’s mode in the listing, don’t rely on the global setting alone. Then open the specific form, go to its Payment tab, and confirm the Payment Mode setting matches what you expect for that form. This mismatch is also why test-mode card numbers sometimes seem to “not work” in live mode — that’s actually correct behavior. Live mode forms will not accept Stripe’s test card numbers (like 4242 4242 4242 4242); only real cards process in live mode, and only test cards process in test mode. If you’re seeing rejected payments after switching to live and you’re testing with a Stripe test card, that’s expected, not a bug.

Reconnect Your Stripe Account in Live Mode Specifically

Test mode and live mode use separate Stripe API keys, and connecting WP Simple Pay to Stripe in test mode does not carry over to live mode automatically. After switching your global setting to Live Mode under WP Simple Pay → Settings → Stripe → Account, you need to click Connect with Stripe again and complete the connection while live mode is active. If this step gets skipped, forms can appear to load but fail silently when a customer tries to submit payment, since the form is trying to authenticate against the wrong Stripe environment.

After reconnecting, visit a live page containing your form directly (not the WordPress editor preview, which doesn’t render the shortcode) to confirm the “TEST MODE” badge is gone and the form loads correctly.

Third-Party Builder or Overlay Conflicts That Only Show Up in Live Mode

If you’re embedding your WP Simple Pay form through a page builder integration (pricing table plugins, third-party button/CTA elements, overlay triggers) rather than the plugin’s own shortcode or block, some of these integrations behave differently once live payment fields are active — the form may load and display correctly in test mode but freeze, fail to close, or reject card input once real payment processing kicks in. This typically points to a JavaScript conflict between the third-party builder’s script and WP Simple Pay’s Stripe Elements integration, which only activates fully in live mode.

To isolate this: temporarily place the same form using WP Simple Pay’s native shortcode or block on a plain page (no page builder, no third-party wrapper) and test live mode there. If it works normally on the plain page, the issue is in the builder integration, not WP Simple Pay itself — worth reporting to the builder plugin’s support team with that specific finding, since it narrows down the conflict significantly.

Confirmation Page Errors After a Successful Live Charge

If the payment itself goes through in live mode (visible in your Stripe dashboard as a real, successful charge) but the customer lands on a server error page instead of your confirmation page, that’s a different issue — usually a hosting-level security rule (mod_security) blocking the redirect, not a payment failure. Check Stripe first before assuming the transaction failed; don’t refund based on the error page alone. See our full WP Simple Pay troubleshooting guide for how to resolve that specific redirect error.

Quick Checklist Before Contacting Support

  1. Confirm the individual form’s Payment Mode, not just the global setting
  2. Reconnect Stripe under Live Mode specifically — don’t assume the test-mode connection carries over
  3. Test with a real card in live mode (test card numbers are expected to fail in live mode)
  4. If using a page builder or overlay integration, test the same form with the native shortcode on a plain page to isolate the conflict
  5. If payment succeeds in Stripe but the customer sees an error, check Stripe before assuming the charge failed

Related Reading

For the broader set of WP Simple Pay issues — caching conflicts, JavaScript optimization breaking forms, and nonce errors — see our complete WP Simple Pay troubleshooting guide. If you’re still deciding whether WP Simple Pay fits your needs, our full review covers pricing and feature comparisons.

Keep Reading

Previous Post How to track custom WooCommerce events with Google Tag Manager

Need Help With Your WordPress Site?

If you need help with WordPress fixes, plugin issues, theme customization, or development work, feel free to get in touch.

Get a Free Estimate