How to Fix WooCommerce Payment Gateway Errors
WooCommerce payment gateway errors typically fall into three categories: configuration problems (wrong API keys, incorrect webhook URLs, currency mismatches), connectivity issues (your server cannot reach the payment processor’s API), or checkout-level conflicts (a plugin or theme breaks the payment form). The fix depends on the specific error — but in most cases, verifying your API credentials and checking WooCommerce’s payment logs will point you directly to the cause within minutes.
Payment gateway errors are uniquely dangerous because they directly prevent sales. Unlike a slow page or a visual bug, a broken payment gateway means zero revenue until it is fixed. Worse, many gateway failures happen silently — your site looks fine, customers can browse and add items to their cart, but when they click “Place Order,” the payment fails. You may not notice until you check your order dashboard and see a gap. This guide covers the most common payment errors across all major gateways and how to fix each one.
For a broader view of checkout troubleshooting beyond payment issues, see our complete WooCommerce checkout fix guide.
Step 1: Check WooCommerce Payment Logs
Before troubleshooting blind, check what WooCommerce is actually logging about the payment failure. Go to WooCommerce → Status → Logs. Look for log files named after your payment gateway — stripe, paypal, woocommerce-payments, etc. Open the most recent log file and look for error messages.
Gateway logs typically contain the specific error code returned by the payment processor, the API endpoint that was called, timestamps, and sometimes the full request/response data. These details are far more diagnostic than the vague error message customers see on the checkout page.
If logging is not enabled, go to WooCommerce → Settings → Payments → [Your Gateway] → click “Manage.” Look for a “Debug Log” or “Enable logging” checkbox and enable it. Then attempt a test transaction to generate log entries.
Step 2: Verify API Credentials
Incorrect or expired API credentials are the most common cause of payment gateway errors. Every payment gateway uses API keys (or equivalent credentials) to authenticate your store’s connection.
Stripe
Go to WooCommerce → Settings → Payments → Stripe → Manage. Verify your Publishable Key and Secret Key. Log in to your Stripe Dashboard (dashboard.stripe.com) → Developers → API Keys and compare. Ensure you are using Live keys for production (starting with pk_live_ and sk_live_) and not Test keys (pk_test_ and sk_test_). If you recently rotated your API keys in Stripe, the old keys in WooCommerce will no longer work — update them.
PayPal
For PayPal Standard, verify your PayPal email address is correct. For PayPal Checkout (the newer integration), verify your Client ID and Secret in WooCommerce → Settings → Payments → PayPal → Manage. Log in to developer.paypal.com and check your app credentials. Ensure you are using Live credentials, not Sandbox.
Other Gateways
The same principle applies to Square, Authorize.net, Mollie, Razorpay, Braintree, and any other gateway. Verify that the API keys or credentials in WooCommerce match what the gateway’s dashboard shows. Check for expired API keys — some gateways expire keys periodically. Ensure you are in Live mode, not Test/Sandbox mode.
Step 3: Check Webhook Configuration
Most modern payment gateways use webhooks — HTTP callbacks from the gateway to your WordPress site — to confirm payment status. When a customer pays, the gateway processes the payment and then sends a webhook notification to your WooCommerce site saying “payment confirmed.” WooCommerce then marks the order as paid and triggers order confirmation emails.
If the webhook URL is incorrect, unreachable, or blocked, payments may process on the gateway side but WooCommerce never receives the confirmation — resulting in orders stuck as “Pending Payment” even though the customer was charged.
Common Webhook Issues
Wrong webhook URL. Each gateway expects a specific webhook endpoint URL on your site. For Stripe, it is typically https://yourdomain.com/?wc-api=wc_stripe or configured in Stripe’s dashboard under Developers → Webhooks. Verify the URL matches your site’s actual domain (including www vs non-www and http vs https).
Firewall blocking webhook requests. Your security plugin or hosting firewall may be blocking incoming POST requests from the payment gateway’s servers. Check your security plugin’s blocked requests log for entries from Stripe’s, PayPal’s, or your gateway’s IP addresses. Whitelist these IPs in your firewall configuration.
SSL certificate issues. If your SSL certificate is expired, misconfigured, or not trusted by the gateway’s servers, webhook deliveries will fail. Verify your SSL is valid at ssllabs.com/ssltest/. See our guide on fixing SSL certificate issues.
Site is behind maintenance mode or password protection. If your site is in maintenance mode, behind a coming-soon page, or requires HTTP authentication, webhook requests from payment gateways will be blocked. Ensure your webhook endpoint is accessible without authentication.
Step 4: Check Currency and Country Settings
Payment gateways have specific requirements about which currencies and countries they support. If your WooCommerce store’s currency does not match what your gateway account is configured to accept, payments will fail.
Verify your store currency in WooCommerce → Settings → General → Currency options. Compare this with your payment gateway account’s accepted currencies. Some gateways require specific currency formatting or decimal precision — for example, some gateways do not support zero-decimal currencies (like JPY) if they are configured for two-decimal currencies (like USD).
Also check country restrictions. Some gateways only operate in specific countries. If your store’s selling locations include countries your gateway does not serve, customers in those countries will see payment errors.
Step 5: Test in Sandbox/Test Mode
Most payment gateways offer a test mode (Stripe calls it “Test Mode,” PayPal calls it “Sandbox”) that lets you process fake transactions without moving real money. This is invaluable for diagnosing whether the error is in your WooCommerce configuration or in the gateway itself.
Switch your gateway to test mode in WooCommerce → Settings → Payments → [Your Gateway] → Manage. Use the test mode API keys (not your live keys). Use the gateway’s test card numbers — for Stripe, 4242 4242 4242 4242 is the standard test card. For PayPal Sandbox, use a sandbox buyer account. Process a test order. If the test payment succeeds, your WooCommerce configuration is correct and the issue is with your live API keys, account status, or the customer’s actual payment method. If the test payment fails, the issue is in your WooCommerce or server configuration.
Step 6: Check for Plugin Conflicts
Payment processing on the checkout page involves complex JavaScript interactions between your WooCommerce checkout form, the payment gateway’s JavaScript library (Stripe Elements, PayPal Buttons, etc.), your theme’s checkout template, and any other plugins that add scripts to the checkout page.
If a plugin or theme conflict prevents the gateway’s JavaScript from initialising or executing, customers will see errors like “Payment processing failed,” a spinning loader that never completes, or the payment form fields not rendering at all.
To diagnose, switch to a default WordPress theme (Twenty Twenty-Four) and deactivate all plugins except WooCommerce and your payment gateway plugin. Test a payment. If it works, reactivate plugins one at a time (testing between each) to identify the conflict. Common culprits include checkout customisation plugins, analytics or tracking scripts that modify the DOM, popup or overlay plugins, and other JavaScript-heavy plugins. See our plugin conflict troubleshooting guide.
Step 7: Check Server Requirements
Payment gateways communicate with your server via HTTPS API calls. If your server cannot make outbound HTTPS connections to the gateway’s API endpoints, payments will fail.
cURL must be enabled. Most gateway plugins use PHP’s cURL library to communicate with the payment API. Verify cURL is enabled in WooCommerce → Status → System Status. If cURL is disabled, contact your hosting provider to enable it.
TLS version must be current. Payment processors require TLS 1.2 or higher for secure connections. Older servers running TLS 1.0 or 1.1 will be rejected. Check your TLS version in WooCommerce → Status or by contacting your host. Most modern hosting environments support TLS 1.2+ by default, but very old or unmaintained servers may not.
PHP version must be supported. Gateway plugins have minimum PHP requirements. Check the plugin’s WordPress.org page or documentation. Running an outdated PHP version can cause the gateway plugin to malfunction. As of 2026, most payment plugins require PHP 7.4 or higher, and PHP 8.1+ is recommended.
Firewall allowing outbound connections. Some hosting firewalls restrict outbound connections to specific ports or domains. Ensure your server can reach your gateway’s API endpoints — for Stripe, this includes api.stripe.com and js.stripe.com. For PayPal, this includes api.paypal.com and www.paypal.com.
Step 8: Check for Account-Level Issues
Sometimes the error is not technical — it is at the gateway account level.
Account not fully verified. Some gateways restrict payment processing until account verification is complete. If you recently created your Stripe or PayPal account, check for pending verification steps (identity verification, bank account confirmation, business documentation).
Account restricted or suspended. If the gateway has flagged your account for suspicious activity, high chargeback rates, or policy violations, payments may be blocked. Check your gateway dashboard for any account alerts or restrictions.
Payout method not configured. Some gateways require a bank account or debit card for payouts before they allow incoming payments. Ensure your payout method is configured and verified.
How to Prevent Payment Gateway Issues
Monitor gateway health continuously. Our WooCommerce maintenance service includes real-time payment gateway monitoring. If transaction success rates drop or the gateway starts returning errors, we detect it immediately and begin investigating — often before a single customer is affected.
Test after every update. After updating WooCommerce, your payment gateway plugin, or your theme, test a complete checkout flow — including payment processing — before assuming everything works. Our WooCommerce plan automates this checkout validation after every update.
Keep gateway plugins updated. Payment gateway plugins release updates to maintain compatibility with the gateway’s API changes, new security requirements, and WooCommerce core updates. An outdated gateway plugin is a common source of payment failures.
Set up payment failure notifications. Configure WooCommerce to notify you when orders fail. By default, WooCommerce emails the admin for some order statuses — verify this in WooCommerce → Settings → Emails. Consider a monitoring plugin that alerts you specifically when payment processing failure rates spike.
Frequently Asked Questions
Customers are charged but the order shows as “Pending Payment” in WooCommerce. What happened?
This almost always means the webhook from the payment gateway failed to reach your WooCommerce site. The payment was processed on the gateway side (customer is charged), but WooCommerce never received confirmation. Check your webhook configuration (Step 3) — the webhook URL may be wrong, blocked by a firewall, or failing due to an SSL issue. Check your gateway’s dashboard for webhook delivery logs to see if the webhook was sent and what response it received.
Payments work with one gateway but not another. Why?
If one payment method processes successfully but another fails, the issue is specific to the failing gateway’s configuration — not a general WooCommerce or checkout problem. Focus your troubleshooting on that specific gateway: verify its API credentials, check its webhook URL, ensure its plugin is updated, and test in sandbox mode.
The payment form fields do not appear on the checkout page. What is wrong?
This is typically a JavaScript conflict. The payment gateway’s JavaScript library (which renders the card input fields, PayPal buttons, etc.) is being blocked or erroring out. Open Chrome DevTools (F12) → Console tab and look for JavaScript errors. Common causes include another plugin conflicting with the gateway’s scripts, a theme that overrides the checkout template incompatibly, or a caching plugin caching JavaScript that should not be cached. See Step 6 above.
I see “Payment processing failed. Please retry.” but no specific error. How do I find the cause?
Enable logging for your payment gateway (WooCommerce → Settings → Payments → [Gateway] → Enable Debug Log). Attempt the payment again. Then check WooCommerce → Status → Logs for the gateway’s log file. The log will contain the specific error code and message from the payment processor — information that is not displayed to the customer for security reasons but is essential for diagnosis.
Need Expert Help? Let WP Ministry Handle It
Payment gateway errors cost you revenue every minute they persist. If you have worked through this guide and cannot identify the cause, or if you need the issue resolved as quickly as possible, our 24/7 team specialises in WooCommerce troubleshooting.
Call (901) 249-0909 for immediate assistance. Our WooCommerce maintenance plan ($249/month) includes continuous payment gateway monitoring, checkout validation after every update, and 30-minute emergency response for critical store issues.
Related Articles
How to Fix WooCommerce Checkout Not Working (Step by Step)
How to Speed Up WooCommerce (Complete Performance Guide)
How to Fix “Your Connection Is Not Private” Error on WordPress