Fixing WooCommerce checkout not working

How to troubleshoot and fix WooCommerce checkout problems including payment failures, blank checkout pages, shipping calculation errors, coupon issues and JavaScript conflicts.

A broken checkout means lost sales. Whether customers are seeing a payment error, a blank page, a loading spinner that never finishes or an error when applying a coupon, something in the checkout is failing.

WooCommerce's checkout relies on several things working together: your payment gateway, shipping and tax settings, the basket, JavaScript and your theme. A problem in any one of these can stop customers completing an order, and the error messages are often vague or missing. A customer might simply tell you "checkout doesn't work".

The steps below work through the most common causes, starting with the simplest checks.

Check the basics first

Before looking at code or configuration, rule out the simple things.

Make sure your checkout page is set correctly under WooCommerce → Settings → Advanced → Page setup. WooCommerce needs specific pages set for the basket, checkout, My Account and terms and conditions. If the checkout page has been deleted, moved to draft or swapped for a different page, the checkout won't load properly.

Check that your payment methods are enabled and set up under WooCommerce → Settings → Payments. If no payment methods are active, customers will see an empty checkout or an error. If you use a gateway that connects to an outside service, check its connection or API keys are still valid. The gateway's settings screen and the provider's dashboard usually show this.

If customers can't get as far as the basket because product options won't select, the problem is on the product page rather than the checkout. See our guide to fixing WooCommerce product variations not showing.

Try placing a test order yourself, using your gateway's test or sandbox mode if it has one. This lets you see the exact error rather than relying on customer reports.

Fix blank or broken checkout pages

A completely blank checkout page, or one that shows the header and footer but no checkout form, is usually caused by a JavaScript error, a missing checkout page setting or a theme conflict.

Open your browser's developer tools (F12, or right-click and choose "Inspect") and check the Console tab for errors shown in red. WooCommerce relies on JavaScript to display the checkout, update totals, check fields and submit payment. A single JavaScript error from any plugin or theme can stop all of this, so the form never appears.

Stores set up since WooCommerce 8.3 use the Checkout block by default rather than the older checkout shortcode.1 The Checkout block talks to WooCommerce through the WordPress REST API, so anything that blocks the REST API can break it too. If the block shows an error or won't place orders, our guide to fixing "not a valid JSON response" covers the usual causes. Some older plugins that add checkout fields only work with the shortcode checkout, so check a plugin's documentation if its fields have gone missing.

Resolve payment gateway errors

If the checkout loads but fails at the payment stage, the problem is usually in the payment gateway's settings or connection.

Common causes include expired or incorrect API keys, test and live settings being mixed up, the gateway not supporting your store's currency and SSL certificate problems. Payment gateways generally need your checkout to load over HTTPS, and our guide to fixing "Not Secure" warnings covers certificate and HTTPS problems.

If payments go through but orders stay on Pending payment, the problem is the confirmation coming back from the gateway rather than the checkout itself. See our guide to orders stuck on Pending payment.

Check your gateway's settings under WooCommerce → Settings → Payments match what your payment provider's dashboard shows. If your gateway has a debug or logging option, switch it on temporarily to capture the exact error, then switch it off again afterwards. Gateway logs are usually under WooCommerce → Status → Logs and often contain much more detail than the message customers see.

If you recently updated your payment gateway plugin, check its changelog or support forum for any steps needed after the update. For anything about your payment account itself, such as declined payments, account restrictions or which card checks are switched on, your payment provider's support team is the right contact.

Fix shipping problems

If customers can't get past the checkout because shipping won't calculate, or no shipping options appear, check your shipping zones under WooCommerce → Settings → Shipping.

WooCommerce uses shipping zones to decide which shipping methods to offer for an address. If a customer's address doesn't match any zone you've set up, it falls into the Rest of the world zone, and if that zone has no shipping methods, the customer is told no shipping is available.2 Make sure you have zones for the places you sell to, each with at least one shipping method enabled.

If you use calculated shipping (based on weight, size or live rates from a carrier), make sure your products have weights and dimensions entered. Missing product data can stop rates being calculated, so no shipping options appear.

Some setups also won't show shipping options until the customer enters their postcode or country, which can look like a broken checkout if the customer doesn't realise they need to fill in more fields first. If totals appear but the tax on them looks wrong, see our guide to fixing VAT calculation problems.

Fix coupon errors

If coupons aren't applying or show an error at checkout, review the coupon under Marketing → Coupons (or WooCommerce → Coupons in older versions).

Check the usage restrictions: minimum and maximum spend, product or category restrictions, email restrictions and any usage limits. Also check the expiry date. A coupon that has expired or reached its limit will be rejected, and the error message doesn't always make the reason clear.

If customers say a coupon isn't valid with no obvious explanation, test it yourself with a basket that matches what customers are likely to have. The restrictions may be narrower than you intended.

Check for plugin conflicts

Checkout problems are often caused by conflicts between WooCommerce and other plugins, particularly ones that change the checkout, add fields, add JavaScript or handle caching.

Caching deserves special attention. The basket, checkout and My Account pages should never be cached, because they contain information specific to each customer.3 If they are, customers may see old information or errors that stop the checkout completing. Check your caching plugin, your host's cache and any CDN rules all exclude them.

To find a plugin conflict, you'll need to deactivate plugins one at a time and test the checkout after each. Be very careful doing this on a live shop: deactivating plugins switches their features off for customers, and deactivating your payment gateway plugin stops orders altogether. Test on a staging copy if at all possible. If you have to test on the live site, the Health Check & Troubleshooting plugin's troubleshooting mode lets you disable plugins for your own session only while customers see the normal site.4 Take a backup first either way.

Check your theme

To check whether your theme is the cause, test the checkout with a default WordPress theme. On a live shop this changes how the whole site looks to customers, so do it on a staging copy or with the troubleshooting mode mentioned above.

On the shortcode checkout, themes can override WooCommerce's checkout templates by placing their own copies in a woocommerce folder inside the theme.5 If those copies were written for an older version of WooCommerce, they may be missing fields or changes that newer versions expect. WooCommerce → Status → System Status lists all overridden templates and flags any that are out of date.

Template overrides only apply to the shortcode checkout. If your store uses the Checkout block, its layout is edited in the site editor or page editor instead, and outdated PHP overrides won't be the cause.1

If outdated templates are flagged, the usual fix is an updated version of the theme from its developer. Take a backup of your theme before changing any template files.

Review WooCommerce status and logs

WooCommerce → Status shows a report that can flag configuration problems, missing requirements and template issues. Check it for warnings shown in red.

The logs under WooCommerce → Status → Logs record errors from payment gateways and other parts of WooCommerce. If something is failing during checkout, there's often a detailed error in the logs that customers never see.

Need help fixing your checkout?

If your checkout still isn't working after these steps, or you're losing sales and need it fixed quickly, my WooCommerce and WordPress development and emergency WordPress support cover WooCommerce checkout problems, payment gateway setup and plugin conflicts. Your payment provider is the best contact for problems with the payment account itself.


  1. FAQ: Cart and Checkout Blocks by Default, WooCommerce Developer Blog, 6 November 2023. ↩ ↩

  2. Setting up shipping zones, WooCommerce. ↩

  3. Configuring caching plugins, WooCommerce Developer Docs. ↩

  4. Health Check & Troubleshooting, WordPress.org Plugin Directory. ↩

  5. Template structure and overriding templates via a theme, WooCommerce. ↩

Adam Greenough

Written by Adam Greenough

Freelance web developer with over 15 years of experience building and fixing WordPress sites. I work with businesses across the UK on everything from emergency support to full builds.

Need emergency WordPress support today?

If your site is down, hacked or throwing errors, send me the details and I will assess the problem quickly. Support starts from £50, you will get a fixed quote before any work begins, and if I cannot fix the issue, you will not pay.