WooCommerce Checkout Not Working? Here’s How to Fix It
Match the symptom to the fix: a checkout page that won’t load, a dead button, failing payments, or a cart that empties.
In this guide
A broken checkout is the most expensive kind of website problem, because shoppers who reach it intend to buy. The cause is rarely mysterious, but it depends on exactly how the checkout fails. A page that won’t load needs a different fix from a button that does nothing.
Short answer: to fix a WooCommerce checkout that isn’t working, first identify the symptom, then check the checkout page setup, exclude cart and checkout from caching, test for plugin and theme conflicts, review JavaScript errors and the payment gateway’s settings, and read WooCommerce’s logs.

Step 1: Identify exactly what is failing
Place a test order yourself in a private browser window, then match what you see to a row below.
| Symptom | Most likely causes |
|---|---|
| Checkout page won’t load or shows an error | Page not assigned, missing block or shortcode, fatal error, plugin conflict |
| “Place order” does nothing | JavaScript error, script optimisation, conflicting plugin |
| Payment fails or hangs | Gateway keys, test/live mode, webhooks, SSL |
| No shipping or wrong tax | Shipping zones, tax settings, address fields |
| Cart is empty at checkout | Caching, cookies, URL mismatch |
Also open WooCommerce → Status. The System Status report flags missing pages, outdated templates and server settings that need attention.
If the checkout page won’t load
- Go to WooCommerce → Settings → Advanced and confirm the Checkout page is assigned.
- Open that page in the editor. It should contain the Checkout block or, on classic setups, the
[woocommerce_checkout]shortcode. Stores can use either, so check which yours uses. - Check for a fatal error in WooCommerce → Status → Logs or your server error log.
- If the page shows a server error, see our guide to fixing a WordPress 500 error.
If “Place order” doesn’t respond
Open your browser’s developer tools (F12) and check the Console tab for red errors when you click the button. A JavaScript error is the most common reason a button silently fails.
- Temporarily turn off minification, “combine JavaScript” and “delay JavaScript” options in your optimisation or caching plugin, then retest.
- Check anti-spam or reCAPTCHA plugins that attach to checkout forms.
- Look at the error’s file path, which usually names the plugin or theme responsible.
If payment fails or hangs
- Confirm the gateway is in the right mode and that live API keys, not test keys, are entered for live sales.
- Check that your site runs on HTTPS across the whole checkout.
- Many gateways rely on webhooks. Make sure the webhook is configured and your server or firewall isn’t blocking it.
- Review the gateway’s own dashboard for declined or errored attempts. It often gives a clearer reason than WooCommerce does.
If shipping or tax is missing or wrong
Check WooCommerce → Settings → Shipping to ensure the customer’s address falls inside a configured shipping zone, with at least one method enabled. For tax, review the tax options and rates, and confirm the store’s base location is correct. Missing shipping methods at checkout almost always trace back to zone setup.
If the cart appears empty at checkout
WooCommerce relies on cookies and sessions to remember the cart. Cart, checkout and My Account pages must not be served from a page cache, so exclude them in your caching plugin, your host’s cache and any CDN. Also check that the WordPress Address and Site Address under Settings → General use the same version of your domain (with or without www), because a mismatch can drop the session.
Step 2: Run a conflict test
- Use Troubleshooting ModeThe official Health Check & Troubleshooting plugin disables plugins and the theme for your session only, so visitors are unaffected.
- Keep only WooCommerce activeSwitch to a default theme such as Storefront, then retest checkout.
- Re-enable one by oneWhen the failure returns, the last item you enabled is the cause.
How to prevent checkout failures
- Update WooCommerce and extensions on staging before production.
- Place a test order after every significant update.
- Keep the number of checkout-related plugins low.
- Keep regular backups so you can roll back quickly.
When to bring in a developer
Involve a developer if the log shows errors in custom code, the issue involves payment gateway integration, or you’re losing orders and need a quick, safe fix.
Frequently asked questions
Why did checkout break after an update?
An update can introduce a conflict between WooCommerce, an extension, your theme or your PHP version. Roll back on staging, then run the conflict test above.
Can caching break WooCommerce checkout?
Yes. If cart or checkout pages are cached, customers may see stale or empty carts. Exclude those pages from every cache layer.
Will changing the checkout page layout affect payments?
It can, if a block or shortcode is removed or a custom layout interferes with the payment fields. Test an order after any change.
How can I test checkout without taking real payments?
Use your gateway’s test mode with its test card details, or a coupon that reduces the order total to zero, depending on what you need to verify.
Losing orders to a broken checkout?
Our WordPress development services cover WooCommerce debugging and store maintenance.
Get checkout help