A WooCommerce store can look completely normal while the checkout is broken. Products load, the basket works and customers reach the final step — then card fields disappear, the order review spins forever or the payment button does nothing.
A working homepage does not prove a working store.
Test the full journey: product → basket → checkout → payment → order email. Then check browser console errors, WooCommerce Status, payment logs and failed Stripe payments, cache exclusions and recent plugin/theme changes and PHP compatibility.
WooCommerce checkout issues: what to check first
If WooCommerce shows failed to update checkout, the problem is usually happening before the final payment completes. Check whether shipping, tax, coupons or the order review stop refreshing, then inspect the browser Network panel for failed AJAX requests. A checkout that will not update can be caused by JavaScript errors, cache or optimisation rules, session problems, plugin conflicts or a server response that WooCommerce cannot process.
If the checkout fields are visible but totals or payment options do not refresh, test the checkout update request itself before changing gateway settings. If the payment section disappears or the Place Order button stops responding, compare console errors, WooCommerce logs and the most recent plugin, theme or caching changes.
What “checkout not working” can mean
Checkout failures are not all the same. The exact symptom matters because it points to a different part of the stack.
AJAX or JavaScript request may be failing.
Gateway scripts, caching or plugin conflict may be involved.
Payment, validation, tax, shipping or server error may be stopping it.
Gateway callbacks or payment confirmation may be failing.
1. Reproduce the problem like a customer
Use a private browser window and complete the full checkout. Record the time, device, payment method and exact point of failure. If the problem happens only on mobile or only with one gateway, that immediately narrows the investigation.
2. Check WooCommerce Status
Open WooCommerce > Status and review highlighted errors, outdated template notices and scheduled-action problems. WooCommerce’s current checkout spinner guidance recommends starting with status checks before deeper debugging.
3. Look for JavaScript and AJAX errors
Checkout relies heavily on JavaScript and background requests. A theme script, optimisation plugin, cookie tool or third-party extension can break the order-review request without taking down the rest of the website.
Open the browser console and network panel while reproducing the fault. A failed request or JavaScript exception is much more useful than simply knowing the spinner is stuck.
4. Check cache and optimisation exclusions
Basket, checkout and account pages are dynamic. Aggressive page caching, JavaScript delay or script combination can interfere with the values WooCommerce needs to keep a session and calculate an order.
If the issue began after changing a cache or CDN setting, review checkout exclusions before disabling the whole optimisation stack.
5. Test the payment gateway separately
If bank transfer works but card payment fails, the checkout itself may be healthy and the gateway layer is the problem. Review gateway logs, API connection status, webhooks and recent extension updates.
WooCommerce’s official payment error guidance recommends using logs and a staging environment when troubleshooting gateway-specific issues.
Can it be added?
Do totals update?
Do shipping and tax load?
Does the order complete?
6. Check recent updates and template overrides
If the checkout broke immediately after WooCommerce, a gateway, theme or checkout-extension update, compare version compatibility. Outdated template overrides can also become incompatible with newer WooCommerce versions.
7. Check order emails and scheduled actions
A successful payment is only part of the customer journey. Confirm the order appears in WooCommerce, stock changes correctly and both customer and admin emails are generated. Failed scheduled actions can expose deeper store-health problems.
Do not test risky changes directly on the live store
WooCommerce recommends backups and staging before important updates. Our WordPress update guide explains the same principle for business-critical websites.
If customers cannot pay, every minute can represent lost revenue. A live checkout failure belongs in emergency website fixes, while website maintenance and support is the better fit for ongoing store checks and staged updates.
Use the checkout symptom to narrow the fault
WooCommerce’s current troubleshooting guidance separates several checkout failures that look similar to a customer. An endless order-review spinner often points to an AJAX request that is not completing. Missing or unresponsive card fields can indicate a payment-extension, theme or JavaScript conflict. A checkout that works until the final button is pressed may instead be failing during payment creation, validation, stock handling or an external gateway request.
Check WooCommerce Status, JavaScript errors, AJAX responses and matching WordPress/Site URLs.
Test theme/plugin conflicts and payment-extension scripts.
Read gateway logs and server errors at the exact test time.
Check caching, sessions, scheduled jobs, firewall rules and upstream gateway availability.
What to exclude from caching and optimisation
Checkout is dynamic. Do not treat it like a static marketing page. Cart, checkout and account flows need correct session cookies, AJAX requests and current totals. Cart quantities that will not update point to a problem earlier in the buying journey. If a performance or CDN rule was recently changed, temporarily test without that layer on staging and confirm that checkout, coupons, shipping, tax and each payment method still behave correctly.
WooCommerce’s official guide on an endless checkout loading spinner recommends starting with WooCommerce Status and checking URL mismatches, JavaScript conflicts, invalid AJAX responses, slow transactional email and memory limits.
Checkout symptoms that point to different causes
Current WooCommerce guidance separates several high-intent checkout problems that are often bundled together. An endless spinner usually points towards AJAX or JavaScript failure; missing card fields often point to a gateway/theme/plugin conflict; a Place Order button that does nothing can be validation, tax, shipping or JavaScript; and orders stuck Pending can indicate payment confirmation or webhook problems.
Check WordPress Address and Site Address
WooCommerce notes that mismatched site URLs can break checkout AJAX because requests cannot complete correctly across different hostnames. Check HTTP/HTTPS and www/non-www consistency before changing payment settings.
Inspect XHR responses, not only console errors
The checkout review uses AJAX. In the browser Network panel, filter for XHR/fetch and inspect the failed response. HTML returned where JSON is expected, a cached nonce returning -1, or a server error can each explain an endless spinner.
Do not cache dynamic checkout pages
Basket, checkout and account flows depend on sessions, nonces and live totals. Review page cache, object cache, CDN edge rules and JavaScript delay settings if the problem appeared after optimisation work.
Transactional email can also slow checkout
WooCommerce documents that slow synchronous email sending can contribute to checkout timeouts on some servers. If payment succeeds but the browser hangs, compare order creation timestamps with mail and server logs.
Competitor gap: verify the whole order lifecycle
Do not stop when the payment screen loads. A complete test checks product → basket → shipping/tax → payment → WooCommerce order status → stock reduction → customer email → admin notification. That is the commercial journey customers actually need to complete.
FAQ
Why is WooCommerce checkout stuck loading?
Common causes include JavaScript errors, AJAX failures, mismatched site URLs, cache or optimisation conflicts and extension interference.
Why are card fields missing?
Payment scripts may be blocked or delayed, a plugin/theme conflict may exist, or the gateway integration may not be initialising correctly.
How often should I test checkout?
Regularly, and especially after WooCommerce, payment gateway, theme, cookie, cache or checkout-extension changes.
Check the checkout AJAX response itself
WooCommerce checkout depends on background requests that update shipping, tax, totals and payment methods. If the spinner never finishes, open the browser Network panel and inspect the failed XHR/fetch response.
The expected response is structured data. If the request returns HTML, a login page, a firewall block, a PHP warning or a cached response instead, that gives you a much more useful starting point than disabling random plugins.
Confirm cart, checkout and account pages are excluded from full-page cache
These pages depend on customer-specific sessions and live totals. They should not be served as ordinary cached marketing pages. Also review CDN edge caching and JavaScript-delay rules that can interfere with checkout scripts.
Test with the simplest possible order
Use one simple product, no coupon, a normal shipping method and a supported test gateway. If the simple order works, add complexity back one piece at a time. This separates base checkout health from a specific coupon, shipping, tax or gateway rule.
