AI Overview
A broken WooCommerce checkout is usually caused by a plugin or theme update, a cached checkout page, payment gateway settings, a JavaScript error or a firewall. Here is how to diagnose it step by step and catch the next one early.
Key takeaways
- Write down the exact symptom first: a blank page, a dead Place order button, a missing gateway and an empty cart have different causes.
- Plugin and theme updates, cached cart or checkout pages and payment gateway settings cause most WooCommerce checkout failures.
- The browser console, the Network tab and WooCommerce > Status > Logs usually point to the plugin or request that fails.
- Test with a default theme and only WooCommerce and the gateway active, using Health Check troubleshooting mode on a live store.
- Monitor the Shop, Cart, Checkout and My account pages and check them after every update, because uptime checks miss a broken checkout.
Summarize with AI
Opens the assistant in a new tab with a link to this post.
On this page
When the WooCommerce checkout stops working, the store keeps taking traffic and stops taking money. Customers rarely report it. They leave, and you find out when the orders dry up or someone finally sends an email.
This guide covers the common symptoms, their usual causes, and a step by step way to find the cause. It ends with how to hear about a broken checkout before your customers do.
Common symptoms of a broken WooCommerce checkout#
"Checkout not working" can mean several different things. The symptom points to the cause, so start by writing down exactly what you see.
| Symptom | Most likely causes |
|---|---|
| Checkout page is blank or keeps spinning | JavaScript error, blocked AJAX or REST API request, PHP error |
| Place order button does nothing | JavaScript error, security plugin blocking the request, cached page |
| Payment gateway missing from checkout | Gateway disabled, wrong country or currency, gateway not compatible with the checkout type |
| "No payment methods available" style message | No gateway enabled for that customer, gateway settings or API keys |
| Cart empties at checkout | Cart or checkout page cached, session cookies not saved, domain mismatch |
| Checkout redirects back to the cart | Empty cart from a session problem, wrong page assignment |
| Endless redirect loop | SSL or HTTPS settings, conflicting redirect rules |
| Checkout page not loading at all (error page) | PHP fatal error, server error, firewall |
If the whole site shows "There has been a critical error on this website", the problem is not limited to checkout. Start with our guide to the WordPress critical error. If the browser says the page redirected too many times, see ERR_TOO_MANY_REDIRECTS.
What causes WooCommerce checkout problems#
1. A plugin or theme update#
This is the most common trigger. An update to WooCommerce, a gateway, a checkout add-on, a caching plugin or the theme changes something checkout depends on, often overnight through an automatic update. If you run auto-updates, read our guide to WordPress automatic updates and consider holding WooCommerce and payment plugins for manual updates.
Themes deserve a special mention. Many themes override WooCommerce templates. When WooCommerce changes those templates, an old override can break the page. WooCommerce > Status lists template overrides in your theme and flags outdated ones.
2. Caching the cart, checkout or my account pages#
These pages are different for every customer. If a page cache, a CDN or your host serves a cached copy, you get empty carts, stale security tokens and a Place order button that fails.
Most WordPress caching plugins exclude WooCommerce pages automatically, but server caches, CDN rules such as "cache everything", and some host-level caches do not always know about them. Minification and "delay JavaScript" settings can also break checkout scripts even when the page itself is not cached.
3. Payment gateway settings or API keys#
A gateway can disappear or fail because:
- It is disabled in WooCommerce > Settings > Payments.
- It only supports certain countries or currencies, and the customer or store does not match.
- The API keys expired, were rotated, or are test keys on a live store (or live keys in test mode).
- The gateway account itself has a problem on the provider's side, such as a verification requirement.
When no gateway is available for a customer, WooCommerce shows a message saying no payment methods are available.
4. Block checkout and shortcode checkout mismatch#
WooCommerce has two ways to build the cart and checkout pages:
- The Cart and Checkout blocks, which new stores now use by default.
- The classic shortcodes,
[woocommerce_cart]and[woocommerce_checkout], which many older stores still use.
Problems appear when the two get mixed. Some payment gateways and checkout plugins only work with the shortcode checkout. If a page switched to the Checkout block, or a page was recreated, those gateways or custom fields can quietly vanish. The reverse also happens: a plugin that expects the block checkout does nothing on a shortcode page.
Open the checkout page in the editor to see which one you have. When an extension is not compatible with the Checkout block, the editor usually shows a notice and offers to switch to the classic checkout.
5. JavaScript errors#
The checkout relies on JavaScript to update totals, load payment fields and submit the order. One error from any plugin or the theme can stop all of it. This is the usual cause of a spinning checkout or a dead Place order button.
6. SSL and mixed content#
Checkout should always run on HTTPS, and most payment gateways require it for live payments. If some files still load over HTTP, browsers block them as mixed content, and payment fields may not appear. Mismatched addresses in Settings > General (for example www in one and not the other, or http in one and https in the other) can also break sessions and cause redirect loops.
7. Security and firewall plugins#
The checkout sends requests in the background. The shortcode checkout uses WooCommerce AJAX requests (URLs containing wc-ajax=), and the block checkout uses the WooCommerce Store API under /wp-json/wc/store/. Security plugins, server firewalls or rules that restrict the REST API can block these, and the customer just sees nothing happen.
8. Wrong page assignments#
WooCommerce needs to know which page is which. Go to WooCommerce > Settings > Advanced and check the Cart page, Checkout page and My account page settings. The Shop page is set under WooCommerce > Settings > Products. If a page was deleted, duplicated or replaced, these settings can point to the wrong page or to nothing.
How to diagnose WooCommerce checkout not working, step by step#
Work through these in order. Most problems are found by step 4.
Step 1: Reproduce it and note the details#
Open the store in a private browser window, add a product to the cart and go through checkout as a customer would. Note:
- Which step fails: cart, checkout page, payment fields or Place order.
- Any error message, word for word.
- Whether it fails on mobile and desktop, logged in and logged out.
If it only fails when logged out, caching is the first suspect. If it only fails for some countries, look at gateway and shipping settings.
Step 2: Check the browser console#
- On the checkout page, open the browser developer tools (right click, Inspect, then the Console tab).
- Reload the page and try to place the order.
- Look for red errors. The file name in the error often names the plugin or theme responsible.
- Open the Network tab and try again. Look for failed requests containing
wc-ajax=or/wc/store/. A 403 status points to a security rule. A 500 status points to a PHP error.
Step 3: Read the WooCommerce logs#
Go to WooCommerce > Status > Logs. Look for:
- A fatal-errors log with a recent date. It usually names the file and plugin that failed.
- Your payment gateway's log. Many gateways only write detailed logs when a debug or logging option is turned on in their settings, so turn it on, reproduce the problem and check again.
Then open WooCommerce > Status (the System status tab) and check the WooCommerce pages section. It shows which pages are assigned to cart, checkout and my account, and flags problems with them. The Templates section lists outdated theme overrides.
If WooCommerce logs show nothing, turn on WordPress debugging in wp-config.php to capture PHP errors:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Errors are written to wp-content/debug.log. Turn this off again when you are done.
Step 4: Test with a default theme and only WooCommerce active#
This isolates conflicts. Do it on a staging copy if you have one. On a live store, use the Health Check & Troubleshooting plugin: its troubleshooting mode disables plugins and switches theme for your session only, so customers are not affected.
- Switch to a default theme such as Storefront or a current Twenty-something theme.
- Disable every plugin except WooCommerce and your payment gateway.
- Test checkout.
- If it works, turn plugins back on one at a time, testing after each, until it breaks.
- Turn the theme back on last.
The plugin that breaks checkout when you turn it on is your culprit. If it was recently updated, roll it back first and contact the developer. Here is how to roll back a WordPress plugin.
Step 5: Exclude cart, checkout and my account from caching#
In your caching plugin, CDN and host cache, make sure these are never cached:
- The cart page, for example
/cart/ - The checkout page, for example
/checkout/ - The my account page, for example
/my-account/
Also make sure caching is skipped when WooCommerce cookies such as woocommerce_items_in_cart are present, and that WooCommerce scripts are not delayed or combined. Then purge every cache layer and test again in a private window.
Step 6: Check payment settings and run a test order#
- Go to WooCommerce > Settings > Payments and confirm the gateway is enabled.
- Open its settings and check the API keys and the test or live mode.
- Check country and currency restrictions against the customer you tested with.
- Use the gateway's test mode, or temporarily enable a simple method such as Cash on delivery, to confirm the checkout itself works.
If a simple method works but your gateway does not, the problem is the gateway: its settings, keys, compatibility with your checkout type, or the provider's account.
Step 7: Check page assignments and the checkout content#
Confirm the settings under WooCommerce > Settings > Advanced, then open the checkout page and make sure it contains either the Checkout block or the [woocommerce_checkout] shortcode, not both and not neither. If pages are missing entirely, WooCommerce > Status > Tools includes a tool to create the default WooCommerce pages.
Step 8: Check HTTPS and redirects#
Make sure Settings > General uses the same https:// address for both the WordPress Address and the Site Address, and that the checkout page loads over HTTPS with no mixed content warnings in the console. If you see a redirect loop, check redirect rules in your host, CDN, .htaccess and any SSL or redirect plugin.
How to prevent checkout problems#
Most checkout failures follow a change: an update, a new plugin, a cache setting, a page edit. Prevention means checking after every change.
Update store plugins carefully#
- Hold WooCommerce, payment gateways and checkout add-ons for manual updates.
- Back up first, update one plugin at a time, and test checkout after each one.
- Read the changelog of major WooCommerce releases before updating.
Our guide on how to safely update WordPress plugins has the full routine.
Watch the store pages, not just the homepage#
Uptime monitors usually check the homepage. A broken checkout does not take the homepage down. Watch the pages where money changes hands: Shop, Cart, Checkout and My account.
The free MyKavo WordPress plugin has a store guard for this. When WooCommerce is active, it shows whether your Shop, Cart, Checkout and My account pages are monitored, and adds the missing ones in one click. MyKavo then compares those pages against an approved baseline and alerts you when one returns an error, changes visually, loses content, or a script such as your payment provider's stops loading. You can also choose specific buttons and forms to watch as conversion elements, so a missing button is flagged.
MyKavo checks pages the way a visitor sees them. It does not place orders, so a periodic real test order is still worth doing.
Check after every update#
The moment that matters is right after an update. MyKavo's Safe Updates check your monitored pages after every plugin, theme and WordPress update, including automatic ones, and name the update behind any change, for example "Appeared after: Updated WooCommerce 8.1.0 to 8.2.0". Update checks with verdicts are included in every paid plan, from Starter at $7 a month; on the free plan, updates are still listed so you can see what changed and when.
To see which scripts your checkout page loads right now, including payment and analytics scripts, try the free script detector. For the wider routine, see our WordPress maintenance checklist.
Frequently asked questions
Why is my WooCommerce checkout not working?
The most common causes are a recent plugin or theme update, a cached cart or checkout page, payment gateway settings or API keys, a JavaScript error, a security plugin blocking checkout requests, or the wrong pages assigned under WooCommerce > Settings > Advanced.
Why is my WooCommerce checkout page not loading?
A blank or spinning checkout usually means a JavaScript error or a blocked background request. Check the browser console and Network tab, then WooCommerce > Status > Logs for a fatal error. If the page shows an error, turn on WP_DEBUG_LOG to capture the PHP error.
Why does the Place order button do nothing?
Usually a JavaScript error from a plugin or the theme, a cached checkout page with an expired security token, or a firewall blocking the wc-ajax or Store API request. The browser console and Network tab will show which.
Why is my payment gateway not showing at checkout?
Check that it is enabled in WooCommerce > Settings > Payments, that it supports the customer's country and your currency, that its API keys and test mode are correct, and that it is compatible with your checkout type, block or shortcode.
Why does my WooCommerce cart empty at checkout?
The cart or checkout page is probably being cached, or session cookies are not saved. Exclude cart, checkout and my account from every cache layer, and make sure the WordPress Address and Site Address in Settings > General match exactly.
How can I know when my WooCommerce checkout breaks?
Monitor the Shop, Cart, Checkout and My account pages and check them after every update. The MyKavo plugin shows which store pages are monitored, adds missing ones in one click and alerts you when they change or return errors.
Get alerted when your site breaks. Free, no card.
Start free