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, cache exclusions and recent plugin/theme 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. Use our emergency website fixes service for a live fault. For ongoing store checks and staged updates, see website maintenance and support.
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. 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.
