Bug FixesJuly 21, 20267 min read

WooCommerce checkout not working? Here are the 7 most common causes (and how to fix each).

Cart total showing $0? Payment gateway returning errors? Checkout page blank or redirecting? Every hour your checkout is broken costs sales. Here is how to diagnose and fix the 7 most common WooCommerce checkout errors.

A broken checkout is the most expensive WordPress bug there is. Every hour it stays broken, you lose sales - and the customer who abandoned their cart may not come back. The good news: 90% of WooCommerce checkout errors fall into 7 categories, and most are fixable in under an hour.

1. Cart total shows $0 or wrong amount

The cart total is wrong (usually $0), but the items are in the cart. This is almost always a caching issue.

WooCommerce uses AJAX to update cart totals dynamically. If your caching plugin (WP Rocket, W3 Total Cache, LiteSpeed Cache) is caching the cart or checkout page, the browser shows a stale total from a previous visitor.

Fix: Exclude cart, checkout, and account pages from caching. In WP Rocket, go to Advanced Rules → Never Cache URLs, and add:

/cart/
/checkout/
/my-account/

Also disable AJAX caching (WP Rocket → File Optimization → Disable for logged-in users).

2. "There has been a critical error" on checkout

This is the WordPress white screen, but only on the checkout page. It means a PHP fatal error is triggered during checkout - usually by a payment gateway plugin or a shipping method.

Diagnose: Enable WP_DEBUG in wp-config.php:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );

Try to checkout again, then check wp-content/debug.log. The fatal error will name the file and plugin that failed.

Common culprits:

  • Payment gateway plugin incompatible with your PHP version (PHP 8.x broke many older gateways)
  • Shipping plugin calling a deprecated WooCommerce function
  • Custom code in functions.php hooked into woocommerce_checkout_process

Fix: Update the offending plugin. If no update is available, switch to a maintained alternative or patch the deprecated code.

3. Checkout page is blank

The checkout page loads, but it is completely empty - no form fields, no payment options, nothing. Two common causes:

Cause A: Missing checkout shortcode

The checkout page must contain the [woocommerce_checkout] shortcode. If it was accidentally deleted (or a page builder override removed it), the page renders blank.

Fix: Go to Pages → Checkout → edit. Make sure the page content contains [woocommerce_checkout] and nothing else (no page builder blocks wrapping it).

Cause B: Theme conflict

Some themes (especially older ones) do not properly declare WooCommerce support. The checkout template fails to render.

Fix: Switch to a default theme (Twenty Twenty-Four) temporarily. If checkout works, your theme is the problem. Contact the theme developer or add add_theme_support( 'woocommerce' ); to your theme's functions.php.

4. Payment gateway not showing

The checkout form loads, but the payment method (Stripe, PayPal, etc.) is not in the list. The customer cannot complete the purchase.

Check:

  • WooCommerce → Settings → Payments: Is the gateway enabled? Is the "Enable" checkbox checked?
  • API keys: Are the Stripe/PayPal API keys correct? Test mode keys in production (or vice versa) will silently disable the gateway.
  • Gateway plugin is active: Check Plugins → Installed Plugins. Is the Stripe/PayPal plugin active and updated?
  • Geographic restrictions: Some gateways only show for certain countries. Check WooCommerce → Settings → General → Selling location(s).

5. Checkout redirects to cart or home page

The customer clicks "Proceed to checkout" and gets redirected back to the cart (or to the homepage). This is usually a page ID mismatch or a permalink issue.

Fix:

  • Go to WooCommerce → Settings → Advanced → Page setup. Verify that the Checkout page is correctly assigned.
  • Go to Settings → Permalinks. Click "Save changes" (even without changing anything). This flushes the permalink cache and fixes many redirect issues.
  • Check for a security plugin (Wordfence, iThemes Security) that may be blocking checkout POST requests as suspicious.

6. Shipping not calculating

The customer enters their address, but shipping shows $0 or "No shipping methods available."

Check:

  • WooCommerce → Settings → Shipping → Shipping zones: Is there a zone that covers the customer's location? Does it have a shipping method assigned?
  • Weight/dimensions: If you use weight-based shipping, do your products have weights set? Products without weight will not trigger weight-based rates.
  • Shipping class: If you use shipping classes, is the product assigned to a class that has a rate?

7. Checkout works for some customers but not others

This is the hardest to diagnose because it does not happen for everyone. Common causes:

  • Browser caching: Some browsers cache the old checkout JS. Add a cache-busting parameter to WooCommerce scripts.
  • CDN issues: If you use Cloudflare or a CDN, the WooCommerce checkout AJAX endpoint may be cached. Exclude /?wc-ajax= from CDN caching.
  • Geographic blocking: A security plugin or .htaccess rule blocks certain countries. Check access logs for 403 errors on checkout.
  • Ad blockers: Some ad blockers (uBlock Origin, AdGuard) block WooCommerce tracking scripts, which can break checkout. This is not your bug - but inform customers to disable ad blockers on your site.

How to prevent checkout breakage

  • Test after every update. WooCommerce, payment gateways, and shipping plugins update frequently. Always test a checkout on staging before pushing to production.
  • Use a staging environment. Most managed hosts (WP Engine, Kinsta) include staging. If yours does not, use a plugin like WP Staging.
  • Monitor checkout. Set up an uptime monitor that checks the checkout page (not just the homepage). UptimeRobot can monitor specific URLs.

If your WooCommerce checkout is broken right now and you are losing sales, message @wpservicelab on Telegram. Same-day WooCommerce checkout fixes are my most common emergency call.

Have a site to recover?

Send the domain and a Wayback link. Honest scope and price before any work starts.

Get a quote