Skip to content

WooCommerce Checkout Not Working? 7 Checks to Find and Fix the Cause

Place order spinning, no payment methods, or orders stuck on pending? Work through the logs, caching, conflicts, the checkout block, and payment gateway settings.

Online store owner managing orders on a laptop

When WooCommerce checkout breaks, the store looks open but nobody can pay. The “Place order” button spins forever, an error appears, or customers are told there are no payment methods available. Every hour costs real sales, so it pays to work through the causes in the right order.

This guide covers the checks our WooCommerce specialists start with. Most checkout failures come down to a handful of causes: caching, a plugin or theme conflict, payment gateway settings, or a PHP error.

Work safely: test on a staging copy if your host offers one, or at least take a backup first. Use your payment gateway’s test mode so you do not create real charges while testing.

Common checkout symptoms and what they usually mean

  • The “Place order” button spins and nothing happens: a JavaScript or PHP error, often from a plugin conflict or a cached checkout page.
  • “There are no payment methods available”: gateways are disabled, restricted by country or currency, or failing to load.
  • “No shipping options were found”: shipping zones do not cover the customer’s address.
  • “Sorry, your session has expired”: caching or cookie problems on cart and checkout pages.
  • Payment taken but order stays “Pending payment”: the payment gateway cannot reach your site to confirm (webhook or IPN problems).

Step 1: Read the WooCommerce logs

Go to WooCommerce → Status → Logs. Look for logs named fatal-errors and for logs from your payment gateway (Stripe, PayPal, and others write their own). A fatal error log usually names the plugin file that crashed, which can save you hours.

Also open WooCommerce → Status and scroll to the bottom. WooCommerce lists any outdated template files in your theme. Outdated checkout templates are a classic cause of broken checkouts after a WooCommerce update.

Step 2: Check the browser console

Open the checkout page, press F12 (or right-click and choose Inspect), and open the Console tab. Try to place a test order. Red errors here point to a broken script. The file name in the error often reveals which plugin it belongs to.

Step 3: Exclude cart, checkout, and account pages from caching

Cart, checkout, and My Account pages must never be served from a page cache. Cached versions carry expired security tokens and other shoppers’ session data, which breaks checkout.

  • In your caching plugin (LiteSpeed Cache, WP Rocket, W3 Total Cache, and so on), make sure /cart/, /checkout/, and /my-account/ are excluded. Most do this automatically, but custom page slugs need to be added by hand.
  • If you use Cloudflare or another CDN with full-page caching, add bypass rules for the same pages and for requests with the woocommerce_items_in_cart cookie.
  • Turn off JavaScript “delay” or “defer” options for checkout scripts if your optimization plugin has them.

Step 4: Test for plugin and theme conflicts

Install the free Health Check & Troubleshooting plugin and enable Troubleshooting Mode. It disables plugins and switches to a default theme for your browser session only, so customers are not affected.

  1. Enable only WooCommerce and your payment gateway, and switch to the Storefront theme.
  2. Test checkout. If it works, the problem is another plugin or your theme.
  3. Re-enable plugins one at a time, testing checkout after each, until it breaks again.

Step 5: Check the checkout block versus the classic shortcode

New WooCommerce stores use the Checkout block by default. Some older payment gateways, checkout field editors, and extensions only support the classic checkout. If an extension’s features are missing or checkout fails after adding it, check its documentation for block compatibility.

To switch back to the classic checkout, edit the Checkout page and replace the Checkout block with the shortcode [woocommerce_checkout]. Do the same for the cart with [woocommerce_cart] if needed.

Step 6: Review payment gateway settings

  • Confirm the gateway is enabled and that test mode is off on the live site (and on while you test).
  • Re-enter API keys. Keys from test mode do not work in live mode, and vice versa.
  • Check country and currency restrictions. Some gateways hide themselves for unsupported currencies.
  • Check webhooks. In Stripe or PayPal, make sure the webhook URL points to your current domain (including https://) and recent deliveries are succeeding. Failed webhooks are why orders stay “Pending payment”.

Step 7: Check shipping zones, SSL, and PHP errors

  • Shipping: in WooCommerce → Settings → Shipping, make sure there is a zone and method for every country you sell to. A “Rest of the world” zone catches the rest.
  • SSL: checkout must load fully over HTTPS. Mixed-content warnings (images or scripts loaded over HTTP) can stop payment fields from loading.
  • PHP errors: if the logs above were empty, enable the WordPress debug log (WP_DEBUG_LOG) briefly and try another test order.

Prevent checkout problems

  • Test a real order after every WooCommerce, theme, or payment plugin update.
  • Keep theme template overrides up to date, or avoid overriding checkout templates at all.
  • Use a staging site for updates on busy stores.
  • Set up uptime and order monitoring so you hear about failures before customers complain.

Losing sales right now? Our WooCommerce Fix service troubleshoots checkout, cart, and payment problems and tests the full purchase path. Fixed price of $49, confirmed before we start, with our Service Guarantee. Request a WooCommerce fix.

Frequently asked questions

Why did checkout break after an update?

Updates to WooCommerce, your theme, or a payment plugin can make older code or template overrides incompatible. The WooCommerce → Status page shows outdated templates, and the logs show fatal errors.

Can caching really break WooCommerce checkout?

Yes. A cached checkout page contains expired security tokens and can mix up shopper sessions. Cart, checkout, and account pages must always be excluded from page caching.

Customers were charged but orders show “Pending payment”. What happened?

The payment provider took the payment but could not notify your site. Check the gateway’s webhook or IPN settings and its delivery log, and make sure no security plugin or firewall is blocking those requests.

Still Stuck? We Can Fix It for You

Tell us what is going on. We confirm the scope and price before any work begins.