Checkout is the one page on a WooCommerce store where downtime has an immediate, obvious cost — every hour it's broken is orders you didn't take. That's also why it's worth being systematic instead of guessing and hoping the third plugin you deactivate happens to be the problem. This checklist comes out of the same WooCommerce integration work I've done building and connecting stores to custom backends.
First, narrow down what "not working" actually means
"Checkout isn't working" covers several genuinely different problems, and each one points somewhere different:
- The checkout page spins or hangs and never completes
- The payment is declined or the gateway shows an error
- The order is created, but no payment is recorded against it
- The payment succeeded on the gateway's side, but WooCommerce shows the wrong order status
- A payment or shipping method that used to appear has disappeared
Figuring out which of these you're actually seeing — before touching any settings — saves a lot of wasted troubleshooting.
Checkout spins or never completes
Open the browser console (F12) on the checkout page and look for JavaScript errors — a theme or plugin script conflict is a common cause, and it usually shows up clearly there. Also check whether a caching plugin is serving a stale, cached version of the checkout page: cart and checkout pages should almost always be excluded from full-page caching, since they contain session-specific data. I covered this caching exclusion in more detail in my WordPress and WooCommerce speed optimization guide.
Payment fails or the gateway shows an error
This is usually one of: the payment gateway plugin misconfigured (wrong API keys, wrong account mode), an SSL certificate problem specifically on the checkout domain, a currency or amount-formatting mismatch between WooCommerce and the gateway, or restrictions on the merchant/gateway account itself (a limit, a flag, an unverified business account). Reading the specific error message the gateway returns — not just "payment failed" — usually points directly at which of these it is.
Order created, but the payment is missing
This is the case people are often surprised by: the order exists in WooCommerce, but no payment is attached to it, or the order sits in "pending payment" indefinitely even though the customer's bank shows the charge went through. This most often points to a webhook (or IPN) problem — the payment gateway tried to notify WooCommerce that the payment succeeded, but the notification never arrived or was rejected.
Worth checking: the webhook URL configured on the gateway's side matches what WooCommerce expects, WooCommerce's own webhook logs (Status → Logs, or the gateway plugin's own log) for failed delivery attempts, and whether a firewall, security plugin, or aggressive caching rule is blocking the incoming webhook request before it reaches WordPress.
Sandbox versus live credentials
An easy one to miss, and common enough to check early: the gateway plugin still pointing at sandbox/test API keys after the site went live, or — less often — the reverse, live keys still active on what should be a staging environment. This produces exactly the "looks configured but nothing actually works" symptom.
Plugin conflicts
The standard test is deactivating all plugins except WooCommerce and the payment gateway, then reactivating one at a time until the checkout breaks again. The plugin categories most likely to interfere with checkout specifically: aggressive JavaScript/CSS minification or combination plugins, security plugins that block or rate-limit requests (including the gateway's own callback requests), and anything that alters the checkout template directly.
A payment or shipping method disappears at checkout
Usually a shipping-zone or payment-method-restriction rule that's more specific than intended (a zone that only matches certain postcodes, a payment method restricted to certain shipping zones or order totals), or a plugin conflict hiding the option. Geolocation-based shipping rules are also a common source of "it works for me but not for the customer," since the two of you may be geolocated differently.
Server and PHP-level issues
Gateway SDKs sometimes require a minimum PHP version, and API calls to the payment gateway can time out on slow hosting or hit a server-side execution time limit. If the checkout process seems to hang specifically during the payment step (rather than failing instantly), a server-side timeout is worth ruling out.
Before changing anything
Take a backup, and if possible, reproduce the issue on a staging copy of the site rather than live. Check WooCommerce → Status → Logs first — the gateway plugin usually logs far more detail than what's shown to the customer, and it's often the fastest way to identify which of the causes above you're actually dealing with.
FAQ
Is a broken checkout usually WooCommerce's fault, or the payment gateway's?
Can I test a fix without risking the live store?
What if the site was working fine and just stopped without any changes I'm aware of?
Related expertise
- Diagnosing a broken WordPress site
- WordPress and WooCommerce speed optimization
- Syncing WooCommerce and Shopify with Laravel
- Freelance WordPress and Laravel services
If your WooCommerce checkout has stopped accepting payments, send me the store URL, the gateway you use, and what changed recently — I can help narrow down whether it's a plugin, webhook, or gateway-configuration issue. See my freelance developer page or get in touch.
About the author
Ashiq S is a Full Stack Developer based in Dubai, working with Laravel, PHP, WordPress, WooCommerce, APIs, Docker and Linux. See his projects and experience. Hiring? See freelance Laravel development or full-stack roles in the UAE.