WooCommerce Checkout Not Working? Here's How to Fix It Fast
WooCommerce checkout broken? Most failures come down to caching, page assignments, URL mismatches, or a plugin conflict. Here's the short fix list.

A broken checkout stops customers at the worst moment. The spinner spins forever, the Place Order button does nothing, or shipping options never appear. Most of the time, it's caching, a page assignment, or a plugin conflict. Here's the short fix list.
Fix 1: Exclude Cart and Checkout From Caching (Most Common Cause)
If the checkout spinner spins forever, caching is the likely culprit. Cart and checkout pages hold customer session data. Full-page caching serves a stale copy and breaks the checkout.
Exclude these URLs from your caching plugin, host cache, and CDN:
/cart/
/checkout/
/my-account/
Also exclude these WooCommerce cookies:
woocommerce_items_in_cart
woocommerce_cart_hash
wp_woocommerce_session_
Then purge the cache. Test in a private window.
For more on this, see the WooCommerce guide on endless checkout spinners.
Fix 2: Check Page Assignments
Go to WooCommerce → Settings → Advanced. Confirm that Cart, Checkout, and My Account each have the correct page selected.
Then open the checkout page in the editor. Make sure it contains either:
- The shortcode
[woocommerce_checkout], or - The Checkout Block
If you recently switched from shortcode to block (or the other way), some payment gateways may stop working. Switch back and test.
Fix 3: Check URLs and SSL
Go to Settings → General. WordPress Address (URL) and Site Address (URL) must match exactly. Same domain. Same https://. Same www or no www.
If they don't match, checkout AJAX requests get blocked. Fix the URLs. Then go to Settings → Permalinks and click Save Changes.
Fix 4: Test One Payment Gateway at a Time
If one gateway fails and another works, the problem is that integration—not WooCommerce itself.
- Check the gateway is set to Live Mode (or Test Mode if testing).
- Verify API keys and secret keys.
- Check webhooks in your Stripe or PayPal dashboard. If webhooks fail, WooCommerce never gets the payment confirmation.
Use the gateway's test mode. Don't place real orders repeatedly.
Fix 5: Check the Browser Console
Press F12 in your browser. Open the Console and Network tabs. Click Place Order.
Look for a red JavaScript error. It usually names the file and plugin causing the crash.
In the Network tab, look for a failed request to:
?wc-ajax=checkout
If that request returns 403 or 500, a security plugin, Cloudflare WAF, or a PHP timeout is blocking it. Click the request to see the server response.
Fix 6: Run a Quick Conflict Test
On staging, switch to a default theme (Storefront or Twenty Twenty-Four). Deactivate all plugins except WooCommerce and your payment gateway. Test checkout.
If it works, reactivate plugins one at a time. Test after each one. The plugin that breaks checkout is the culprit.
Start with these usual suspects:
- Checkout field editors
- Custom fee or discount plugins
- Currency switchers
- Shipping calculators
- Minification and script-delay tools
- Security plugins
After the Fix: Test One Full Order
Don't just assume it's fixed. Place one real order with a live payment method. Refund yourself after.
Check that:
- Order status changes from Pending Payment to Processing or Completed
- Customer and admin emails fire
- Refunds process correctly
If all three work, the checkout is fixed.
That's It
Most checkout problems come down to caching, page assignments, URL mismatches, or a plugin conflict. Work through the fixes in order. Change one thing at a time. Test after each change.
Share





