How to Fix WooCommerce Checkout Not Working

Your WooCommerce checkout isn't working. Orders aren't going through. Customers are abandoning their carts because they can't complete a purchase. Every hour this is happening, you're losing revenue.

WooCommerce checkout problems are particularly urgent — they directly block sales. And they manifest in many different ways: a blank white page, an endless loading spinner, an error message, a redirect loop, or a payment that appears to process but no order is created.

This guide covers every known cause of WooCommerce checkout failures and provides step-by-step fixes for each.

Common WooCommerce Checkout Symptoms

Identify which scenario you're dealing with to jump to the right fix:

  • Checkout page is blank (white screen) — PHP fatal error or plugin conflict
  • "Sorry, your session has expired" error — WooCommerce session or cookie issue
  • Checkout page redirects to cart — Cart validation issue or misconfigured pages
  • "Your cart is empty" on checkout — Session/cookie not persisting
  • Payment gateway error — Gateway misconfiguration or SSL issue
  • "Order cannot be placed" error — Stock, shipping, or validation error
  • Checkout loads but payment button does nothing — JavaScript error
  • Checkout works but order not created — Payment webhook failure
  • Checkout works in browser but not on mobile — JavaScript or cache issue
01
Deactivate All Plugins Except WooCommerce

Plugin conflicts are the most common cause of WooCommerce checkout failures. A caching plugin serving a cached checkout, a security plugin blocking the payment AJAX request, or a form plugin conflicting with checkout fields can all silently break checkout.

Via FTP (if wp-admin is inaccessible):

  1. Navigate to /wp-content/plugins/
  2. Rename the plugins folder to plugins_disabled
  3. Create a new folder called plugins
  4. Copy only the woocommerce folder back into the new plugins folder
  5. Test the checkout

Via wp-admin:

  1. Go to Plugins → Installed Plugins
  2. Deactivate everything except WooCommerce
  3. Test checkout

If checkout works with only WooCommerce active, reactivate plugins one by one and test after each to identify the conflict.

Most common conflicting plugin types:

  • Caching plugins (serving cached checkout to wrong user)
  • Security plugins (blocking AJAX payment requests)
  • Form plugins (conflicting with checkout form validation)
  • Minification plugins (breaking payment gateway JavaScript)
  • Cookie consent plugins (blocking WooCommerce session cookies)
02
Switch to a Default WordPress Theme

A theme conflict can break WooCommerce checkout — particularly themes that load custom JavaScript that conflicts with payment gateway scripts.

  1. Go to Appearance → Themes
  2. Activate Twenty Twenty-Four (or any default WordPress theme)
  3. Test checkout

If checkout works with the default theme, your active theme is the cause. Check with your theme developer for a WooCommerce-compatible update.

03
Fix the Blank Checkout Page

A blank checkout page is almost always a PHP fatal error or a page cache serving the wrong content.

Check for PHP Errors

Enable debug mode in wp-config.php:

PHP — wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', true);

Reload the checkout page — the actual error should now display, pointing you to the responsible plugin or theme file.

Regenerate Checkout Page

If the checkout page is missing its [woocommerce_checkout] shortcode or blocks:

  1. Go to WooCommerce → Settings → Advanced
  2. Find "Checkout page" and note the assigned page
  3. Go to that page in Pages → All Pages
  4. Ensure it contains either the [woocommerce_checkout] shortcode (classic editor) or the WooCommerce Checkout block (block editor)

If the page was accidentally deleted:

  1. Go to WooCommerce → Settings → Advanced → Page Setup
  2. Click Create pages or manually create a new page with the checkout shortcode/block and assign it
04
Fix "Your Session Has Expired" Error

This error appears when WooCommerce can't maintain the customer's session — usually due to cookie issues.

Check your site URL settings:

If your WordPress Address and Site Address in Settings → General don't match the exact URL customers are using (especially http vs https or www vs non-www), session cookies may not be set correctly.

Ensure both URLs use the same protocol and subdomain format as what's in your browser address bar.

Add session cookie configuration to wp-config.php:

PHP — wp-config.php
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
define('ADMIN_COOKIE_PATH', '/admin');
define('COOKIE_DOMAIN', '');

Check HTTPS is properly configured:

Mixed content (some pages on HTTP, some on HTTPS) prevents session cookies from persisting. Ensure your entire site redirects to HTTPS consistently.

Clear all caches:

Clear server-side cache (WP Rocket, LiteSpeed Cache) and Cloudflare cache. A cached checkout page from a previous session can cause this error.

05
Fix "Cart Is Empty" on Checkout

If the cart shows items correctly but checkout shows an empty cart, the cart session isn't persisting between pages.

Check WooCommerce session handling:

Go to WooCommerce → Status → Tools → Clear customer sessions — this clears corrupted sessions that may be interfering.

Check for caching conflicts:

Your caching plugin may be caching the cart page and serving a blank cart to customers. In your caching plugin settings, add /cart/, /checkout/, and /my-account/ to the "Never cache" list, then clear all caches.

For WP Rocket specifically:

Go to WP Rocket → Advanced Rules → Never Cache These URLs and ensure:

TEXT
/cart/
/checkout/
/my-account/

Check cookie domain settings:

If your site recently moved domains or SSL was recently enabled, old cookies with the previous domain may be causing conflicts. Ask customers to clear their cookies and browser cache, then test again.

06
Fix Payment Gateway Errors

Payment-specific errors at checkout are usually configuration or SSL issues.

Verify SSL is active on checkout:

All payment gateways require HTTPS on the checkout page. If you see http:// in the URL on your checkout page, fix your SSL redirect:

Apache — .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Verify API credentials:

Go to WooCommerce → Settings → Payments → [Your Gateway] and verify your API keys. Common mistakes:

  • Test keys entered when Live Mode is enabled (or vice versa)
  • Extra spaces before/after API keys when copy-pasting
  • Expired or revoked API keys

Test mode vs. live mode:

Confirm your gateway is set to Live Mode (not Test Mode) before expecting real payments. In Test Mode, real cards will fail.

Check gateway webhook configuration:

Some gateways require a webhook URL to be configured in their dashboard (a callback URL that WooCommerce uses to receive payment confirmations). If this isn't set up, payments appear to go through but orders aren't created.

Example — Razorpay webhook: Dashboard → Settings → Webhooks → Add new webhook → enter https://yourdomain.com/wc-api/WC_Razorpay
07
Fix JavaScript Errors on Checkout

If the checkout form loads but clicking "Place Order" or payment buttons does nothing, a JavaScript error is the cause.

Find the error:

  1. Open Chrome DevTools (F12)
  2. Go to the Console tab
  3. Load your checkout page
  4. Look for red error messages — these indicate JavaScript conflicts

Common causes:

  • Minification plugin breaking payment gateway scripts
  • jQuery version conflict from a plugin
  • Ad blocker or privacy browser extension interfering (test in incognito)

Fix minification conflicts:

In WP Rocket or Autoptimize, add payment gateway scripts to the "Excluded scripts" list to prevent them from being minified or deferred:

WP Rocket Exclusions (examples)
/wp-content/plugins/woocommerce-gateway-stripe/assets/
/wp-content/plugins/woocommerce-razorpay/assets/
08
Fix Order Not Created After Payment

Payment appears to succeed but no order appears in WooCommerce — this is a webhook/IPN (Instant Payment Notification) configuration issue.

Check WooCommerce status logs:

Go to WooCommerce → Status → Logs → select the log for your payment gateway. Look for error messages about webhook receipt or payment confirmation.

Verify webhook URL:

In your payment gateway's dashboard, ensure the webhook/IPN URL is set correctly:

  • Razorpay: https://yourdomain.com/wc-api/WC_Razorpay
  • PayU: https://yourdomain.com/?wc-api=WC_PayuMoney
  • Stripe: https://yourdomain.com/wc-api/WC_Stripe

Check for security plugin blocking webhooks:

Your security plugin (Wordfence, iThemes Security) may be blocking incoming POST requests from payment gateway servers. Check the firewall logs for blocked requests from gateway IP addresses and whitelist them.

09
Force SSL on Checkout

Ensure WooCommerce forces HTTPS on the checkout page. Add this to wp-config.php:

PHP — wp-config.php
define('FORCE_SSL_CHECKOUT', true);
define('FORCE_SSL_ADMIN', true);

This forces any HTTP request to the checkout to redirect to HTTPS, preventing insecure checkout page loading that blocks payment gateways.

WooCommerce Checkout Troubleshooting Checklist

  • Clear all caches (plugin cache + CDN cache)
  • Enable WP_DEBUG and check for PHP errors
  • Deactivate all plugins except WooCommerce and test
  • Switch to default WordPress theme and test
  • Verify checkout page has correct shortcode/block
  • Verify site URLs match in Settings → General
  • Check SSL is active on checkout page
  • Verify payment gateway API keys are correct and in Live Mode
  • Check webhook URL is configured in payment gateway dashboard
  • Check browser console for JavaScript errors
  • Exclude payment gateway scripts from minification
  • Check security plugin logs for blocked AJAX requests

Frequently Asked Questions

Q: My checkout works on desktop but fails on mobile. Why?
A: Usually a JavaScript or caching issue. Some minified scripts behave differently on mobile browsers. Test in Chrome for Android incognito mode. Also check if your mobile CDN or caching is configured differently. Ensure payment gateway scripts aren't being deferred.
Q: WooCommerce shows "There are no shipping methods available" on checkout. Why?
A: A shipping zone may not be configured for the customer's location. Go to WooCommerce → Settings → Shipping and ensure your shipping zones cover the regions you sell to, or add an "Everywhere else" zone as a fallback.
Q: WooCommerce checkout worked yesterday and broke today. What changed?
A: The most common sudden causes: a plugin update (check your WooCommerce/payment gateway plugin updates), a WordPress core update, your host changed PHP version, or your SSL certificate expired. Check each systematically.

Final Thoughts

A broken WooCommerce checkout is a business emergency that demands immediate attention. Work through this guide systematically — disable plugins, switch themes, check SSL, verify gateway credentials, and check webhook configuration. Most checkout problems are resolved within these steps.

The most important preventive measure: test your checkout thoroughly after every plugin update or WordPress core update — before customers discover the problem.

Need urgent help fixing a broken WooCommerce checkout? Our team provides same-day WooCommerce emergency support.

Contact us today for immediate WooCommerce troubleshooting
Views: 143