Skip to main content

Troubleshooting

WooCommerce Checkout Not Working? 11 Things to Check, in Order

A step-by-step way to find out why your WooCommerce checkout is failing, starting with the quickest and most likely causes.

Jump to a section

When a WooCommerce checkout stops working, the symptoms vary: the place-order button does nothing, the page keeps reloading, payment options disappear, or customers see an error and leave. The cause is usually one of a short list of things. This guide takes them in the order that finds the problem fastest.

Before you start: reproduce it

Open your store in a private (incognito) window and try to buy something. Note what happens, which device and browser you used, whether you were logged in, and which payment method you chose. If it only fails for one payment method, or only for logged-out visitors, that already narrows things down.

1. Rule out caching

The cart, checkout and account pages must never be served from a page cache. WooCommerce asks caches to skip them, but some hosts, CDNs and optimisation plugins ignore that. Clear your site cache and your CDN cache, then test again. If it works, add the cart, checkout and my-account pages to your cache exclusion list.

2. Open the browser console

In Chrome, press F12 on the checkout page and open the Console tab. Red errors such as Uncaught TypeError or jQuery is not defined usually mean a script failed, and a failed script is the most common reason a checkout button does nothing. Note which file the error points to: it often names the plugin or theme at fault.

If you use an optimisation plugin, try turning off JavaScript minify, combine and delay options for the checkout page. These settings are a frequent cause of broken checkouts.

3. Look at what changed recently

Checkouts rarely break by themselves. Think about what changed in the last few days: a plugin update, a theme update, a WooCommerce update, a new plugin, a settings change. The Plugins screen shows which plugins updated recently, and your hosting panel may show server or PHP version changes. The most recent change is the first suspect.

4. Run a conflict test

Switch to a default theme such as Storefront and deactivate every plugin except WooCommerce, then try the checkout. Do this on a staging copy, not on the live store. If you cannot use staging, the official Health Check and Troubleshooting plugin has a troubleshooting mode that changes the theme and plugins only for your own session, so visitors are not affected. Re-enable plugins one at a time until the problem returns.

5. Check the checkout page itself

Go to WooCommerce, Settings, Advanced and check that the Checkout page is set and still exists. Open it in the editor and confirm it contains the checkout block or the checkout shortcode. A page that was edited, duplicated or deleted can silently break checkout.

6. Check the payment gateway

In WooCommerce, Settings, Payments, confirm the gateway is enabled and that its keys match the mode you are in (test or live). A common mistake is live keys in test mode, or the reverse. Most gateways also have a debug log option, and the logs appear under WooCommerce, Status, Logs.

7. Check shipping

If a customer’s address matches no shipping zone, or a zone has no method available, there are no shipping options and checkout cannot complete. In WooCommerce, Settings, Shipping, check that every zone has a method and that shipping classes are priced where you use them.

8. Check required fields and validation

Custom checkout field plugins, address validators and phone or postcode rules can reject valid input. Try a plain address with every field filled in. Also look for a required field that is hidden by your theme, which would block submission without any visible message.

9. Look for SSL and mixed content problems

Your store should load completely over HTTPS. In the console, warnings about mixed content mean something on the page is still loading over HTTP, and browsers may block it. Check that the WordPress and Site addresses in Settings, General, both start with https.

10. Check the server

Open the Network tab in your browser tools while you press the place-order button. Look for failing requests: a 500 error often points to a PHP error, and a 403 often means a firewall or security rule is blocking the request. Turn on WP_DEBUG_LOG temporarily, repeat the test and read the log in wp-content. Also check that your PHP memory limit is not too low for your plugins.

11. If you use the checkout block, check the REST API

The block-based checkout talks to WooCommerce through the REST API. A security plugin, firewall rule or server setting that blocks or restricts REST requests will break it. Test your REST API by visiting /wp-json/ on your site while logged out: if it returns an error, that is your lead.

How to stop finding out from customers

Everything above works, but it only helps once you already know there is a problem. The harder part is knowing quickly.

The free Kodenzo Commerce Health plugin runs read-only checks on demand across WooCommerce setup, shipping, SSL, background jobs and server configuration, and gives you a health score with plain-language fixes. It will not tell you why a specific customer failed to pay, but it quickly clears many of the configuration causes above.

Commerce Health PRO goes further by watching continuously: it records payment failures for each gateway, checkout JavaScript errors, plugin changes and real-visitor checkout speed, and flags a problem as it shows up. Read how WooCommerce checkout monitoring works.

Free download · PDF

WooCommerce Checkout Checklist

This order of checks on one printable page, plus what to test after every update.

Download the checklistOr run a free health check →

KODENZO Commerce Health

Don't wait for a customer to report a broken checkout.

Scan your store for free, or let PRO keep watching payments, checkout errors and plugin changes for you.

Run a free scan Explore Commerce Health PRO

Learn about WooCommerce Checkout Monitoring →

Try Commerce Health Free