New 24/7 monitoring and daily cloud backups now included in every Shield Pro plan.

Checkout

Learn how to fix WooCommerce checkout not working.

Checkout is where revenue dies quietly. A spinner that never finishes, a grey screen, or a form that reloads without charging usually means JavaScript, sessions, or a payment plugin conflict. This tutorial walks through the checks store owners can run before touching live payment keys.

Time: 25-45 minutes Level: Intermediate
Neil McNaught, founder of BugShield and WordPress author
Written by
Written by
Updated
Updated

What this problem looks like

WooCommerce checkout depends on AJAX updates, PHP sessions, and often third-party payment iframes. When any layer breaks, customers see endless loading or a form that submits but creates no order.

Most checkout failures are not payment gateway bugs on day one. They are minified JavaScript errors, full-page cache serving stale cart data, or a security plugin blocking REST requests to wp-json.

Step 1: Confirm what customers actually see

Ask for a screenshot or screen recording. Checkout can fail at three different points: loading the page, updating shipping or totals, or placing the order. Each points to a different layer.

Test as a guest and as a logged-in customer. If only guests fail, look at cookie consent banners or caching that treats anonymous users differently.

  • Blank checkout page: PHP fatal or theme template conflict.
  • Spinner on Place Order: JavaScript error or blocked AJAX.
  • Order created but no payment: gateway configuration issue.

Step 2: Enable WooCommerce logging and WP debug

Turn on logging under WooCommerce → Settings → Advanced → Logs. Choose a log source such as fatal-errors or a payment gateway, then reproduce the failure and download the log file.

Open wp-config.php in your site root, next to wp-admin and wp-content. Search for existing WP_DEBUG constants before adding duplicates:

php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Step 3: Exclude checkout from cache and CDN

Never cache cart, checkout, or my-account pages. LiteSpeed, WP Rocket, W3 Total Cache, and Cloudflare APO all need explicit exclusions. Cached checkout often shows wrong totals or stale nonces that break Place Order.

  1. Add /cart/, /checkout/, and /my-account/ to do-not-cache rules.
  2. Purge all cache after changing exclusions.
  3. Disable Rocket Loader or similar JavaScript optimisers on checkout as a test.

Step 4: Check SSL, cookies, and mixed content

Payment fields require HTTPS. If siteurl and home still use http, or assets load over http, browsers block card fields. Confirm both WordPress URLs use https and that your certificate covers www and apex.

Cookie paths must match your domain. Staging copies with wrong URLs in the database break sessions when copied to production without search-replace.

Step 5: Isolate plugin and theme conflicts

Rename wp-content/plugins to plugins.disabled via File Manager, SFTP, or FTP. If checkout works, rename the folder back to plugins and activate plugins one at a time in wp-admin until the checkout error returns.

Switch to Storefront for thirty minutes. If checkout works, the active theme or a plugin template override is the cause.

When to stop DIY and hire help

Hire a WooCommerce developer if checkout still fails with a default theme, if logs show core WooCommerce fatals, or if you run a high-volume shop and cannot afford trial-and-error during trading hours. BugShield fixes checkout errors at a confirmed price without hourly billing surprises.

Questions answered

WooCommerce checkout not working FAQs

Answers about checkout errors, caching, JavaScript, payment gateways, logs, testing, and restoring orders safely.

Why does WooCommerce checkout keep spinning?

Usually a JavaScript error or blocked AJAX request. Open browser DevTools on checkout, click Place Order, and read the Console and Network tabs for red errors.

Can caching break WooCommerce checkout?

Yes. Full-page cache on checkout is a common cause of invalid nonces and stale cart sessions. Exclude /checkout/ and /cart/ URLs from every cache layer including CDN.

Should I reinstall WooCommerce to fix checkout?

Reinstalling rarely helps. Deactivating WooCommerce does not remove database tables. Focus on logs, conflicts, and gateway settings first.

Does Cloudflare break checkout?

Aggressive bot fight, Rocket Loader, or caching HTML on checkout can cause a checkout error. Create a page rule or cache rule to bypass checkout and cart.

What causes WooCommerce checkout not to work?

Common causes include JavaScript errors, cached checkout pages, plugin or theme conflicts, invalid address rules, blocked AJAX or REST requests, and payment-gateway configuration.

How do I test a broken WooCommerce checkout?

Use staging or a controlled live test with the correct gateway mode. Test as a logged-out customer, enter a real delivery area, and complete every step through the order confirmation page.

Where can I find WooCommerce checkout errors?

Check WooCommerce status logs, the PHP error log, browser Console and Network panels, payment-provider events, and failed or pending order notes.

Can a JavaScript error stop WooCommerce checkout?

Yes. A failing theme script, consent tool, optimisation plugin, or payment field can prevent checkout updates or order submission. Fix the first meaningful browser error.

Why does checkout work until the customer selects payment?

The chosen gateway may have invalid credentials, blocked scripts, unsupported currency, failed webhooks, or a conflict triggered only when its fields load.

When should a developer fix WooCommerce checkout?

Get help immediately when customers cannot order, payment status is unclear, or live testing could create duplicate charges, stock changes, or emails.

Would you rather a developer fixed it?

Request a fix at a confirmed price and speak directly with the BugShield developer working on your site.

Request a Fix