3 min read
reads
← Blog

WooCommerce checkout not working? Common causes + fixes

WooCommerce WordPress Bug fixes Payments Ecommerce

“WooCommerce checkout not working” usually means one of a few things: the pay button spins forever, the page reloads with no order created, a payment fails, or you get a vague error.

The good news: most checkout issues come from conflicts, caching, or broken scripts — and can be diagnosed quickly. Here’s the checklist I use on real client sites.

Symptoms (what you’re seeing)

  • Spinning “Place order” button (no order created)
  • Checkout refreshes and loses fields
  • Payment fails (Stripe/PayPal) with generic message
  • “There was an error processing your order”
  • AJAX 400/500 errors on ?wc-ajax=checkout

Step 1: Check your browser console + network

Open DevTools → Console/Network and look for red errors. Specifically check the request to:

  • / ?wc-ajax=checkout
  • /wp-admin/admin-ajax.php

If you see a 500 error, it’s usually a PHP/plugin problem. If you see 400/403, it can be security rules, caching, or missing nonce/session.

Step 2: Plugin conflict test (fastest win)

Most checkout breakages are caused by one plugin interfering with checkout scripts, validation, or sessions.

✅ Quick test: temporarily disable non-essential plugins (especially “optimisation”, “security”, “checkout customiser”, “analytics”) and re-test checkout.

If disabling a plugin fixes it, you’ve found your culprit. Then you either:

  • Replace the plugin, or
  • Configure exclusions, or
  • Patch the conflict properly

Step 3: Caching/CDN exclusions (very common)

Checkout pages must not be cached. If you’re caching checkout, users can get mismatched sessions, missing nonces, or “invalid order key” style issues.

Exclude these URLs from caching

  • /cart/
  • /checkout/
  • /my-account/
  • /?add-to-cart=
  • /?wc-ajax=

Also exclude WooCommerce cookies from cache variation if your caching layer supports it.

Step 4: Theme overrides and checkout templates

If your theme overrides WooCommerce templates, outdated overrides can break checkout on Woo updates.

Check for overrides at:

wp-content/themes/YOUR_THEME/woocommerce/
If you updated WooCommerce recently and checkout broke right after, outdated overrides are a top suspect.

Step 5: Payment gateway configuration

For Stripe/PayPal failures:

  • Confirm live keys vs test keys
  • Check webhook delivery (Stripe dashboard → Webhooks)
  • Confirm server time is correct (bad time can break signatures)
  • Check for blocked requests by security plugins/WAF

Step 6: Server-side errors (logs)

If checkout returns 500, check:

  • WooCommerce → Status → Logs
  • PHP error log in hosting panel
  • wp-content/debug.log (if enabled)

A common cause: a fatal error in a custom plugin or functions file.

Quick “fix it fast” summary

✅ Check console/network for wc-ajax=checkout errors
✅ Disable non-essential plugins (conflict test)
✅ Exclude checkout/cart/account from caching/CDN
✅ Check theme WooCommerce template overrides
✅ Verify payment gateway keys + webhooks
✅ Review Woo logs + server logs for fatal errors

If you’re stuck, send me the site link + what you’re seeing ↗. I can usually identify the root cause quickly and fix it without trial-and-error.

Next step

Need help improving a site?

If you want cleaner structure, faster performance, or a safer codebase to maintain — I can help.

Get a quote See work
More reading

Back to the blog

Browse all articles