When your WooCommerce payment gateway stops working, every minute costs you sales. This guide covers the most common causes for Stripe, PayPal and other gateways โ and how to fix them fast.
๐ด Checkout not working = direct revenue loss. If this is live on your store, contact us immediately for emergency fix while you diagnose.
Check 1: Test Mode vs Live Mode
The most common "payment not working" issue is the gateway still being in test/sandbox mode after going live. In WooCommerce โ Settings โ Payments โ your gateway, check if "Enable test mode" or "Sandbox mode" is active. Disable it and use your live API keys instead. Also verify you're using the correct live API keys โ not the test ones.
Check 2: Verify API Keys Are Correct
Wrong or expired API keys are the second most common cause. For each gateway:
- Stripe: Log in to dashboard.stripe.com โ Developers โ API keys. Copy the live Secret Key and Publishable Key. They start with sk_live_ and pk_live_
- PayPal: Log in to developer.paypal.com โ My Apps & Credentials. Use the live credentials, not the sandbox ones
- Razorpay / Others: Regenerate keys in your gateway dashboard and update in WooCommerce
Check 3: SSL Certificate is Valid
Payment gateways require HTTPS. If your SSL certificate has expired or is showing a browser warning, payments will fail. Check your site URL โ it must start with https://. Visit your site in Chrome and look for a lock icon in the address bar. No lock = SSL issue.
Fix: Renew your SSL certificate in Hostinger panel โ SSL โ Free Let's Encrypt certificate (renews automatically if auto-renew is on).
Check 4: Plugin Conflict with Payment Gateway
Other plugins can break payment gateways โ especially caching plugins, page builders, and security plugins. Test by:
- Disabling your caching plugin temporarily
- Trying a test payment
- If it works, re-enable caching and configure it to exclude the checkout page
For WP Rocket: Exclusions โ Exclude URLs โ add /checkout/ and /cart/
For LiteSpeed Cache: Cache โ Exclude โ URI: /checkout, /cart
Check 5: Webhook Issues (Stripe)
Stripe uses webhooks to tell WooCommerce when payments complete. If webhooks aren't configured or the URL changed, orders get stuck as "Pending". In your Stripe dashboard โ Developers โ Webhooks, check that the webhook endpoint URL points to your current domain and is not returning errors.
Check 6: Currency Mismatch
Payment gateways only work with currencies they support. If you have WooCommerce set to a currency your gateway doesn't accept (e.g., PayPal doesn't support all currencies), payments will fail silently. Check your WooCommerce โ Settings โ General โ Currency matches what your gateway supports.
Check 7: Server Requirements
WooCommerce payment plugins require specific PHP settings:
- cURL enabled (required to communicate with payment APIs)
- OpenSSL enabled (required for HTTPS API calls)
- PHP 7.4 or higher
Check in WooCommerce โ Status โ System Status. Any red rows in this report indicate server configuration issues.
Check 8: WooCommerce Logs
WooCommerce logs every payment attempt. Go to WooCommerce โ Status โ Logs. Select your payment gateway from the dropdown and look at the most recent entries. The log will show the exact error message from the payment API โ this is the fastest way to diagnose obscure failures.
Common Error Messages and Fixes
- "Your card was declined" โ Usually a customer issue, but also occurs if Stripe's Radar fraud filters are too aggressive. Check Stripe Radar settings.
- "No such customer" โ Stripe customer ID mismatch. Clear WooCommerce's Stripe customer data in the user profile.
- "PayPal IPN not working" โ Update PayPal to use Webhooks instead of IPN (IPN is legacy).
- "Order stays pending" โ Webhook not firing. Check your site's firewall isn't blocking incoming POST requests.
WooCommerce Checkout Still Broken?
We fix WooCommerce payment issues same-day. Every hour the checkout is down is lost revenue.
Get Emergency Payment Fix โ