WooCommerce Checkout Not Working? 9 Fixes to Recover Your Sales

Featured image of an online checkout page failing with a woocommerce checkout not working error while a shopper tries to pay, TechSBSInfo logo at top left
A shopper stuck at checkout while payment fails — every minute this stays broken costs real sales.

A broken checkout is the most expensive problem a store can have. Visitors add products to the cart, type their details, click “Place order” — and nothing happens. They try again, get frustrated, and leave. A woocommerce checkout not working error turns ready-to-buy customers into lost revenue, so it deserves urgent attention.

The good news is that checkout failures usually come from a short list of causes: a plugin conflict, a caching problem, a misconfigured payment gateway, or a theme issue. This guide walks through nine fixes in order, from the quickest checks to deeper repairs. Work through them one by one.

Quick Checks

Before changing anything, run through these quick checks. They take minutes and often reveal the cause immediately.

  • Try a test purchase yourself. Add a product to the cart and go through checkout exactly as a customer would. Note the exact step where it fails and any error message shown.
  • Try a different browser and device. If checkout works in one browser but not another, a browser extension or cached files are likely at fault, not your store.
  • Check your payment gateway’s status page. Stripe, PayPal and others publish live status. An active incident on their side means the fix is to wait.
  • Read the exact error message carefully. “Payment failed”, “invalid API key” and “order review failed to update” each point to a different fix — the message is your best clue.
  • Check WooCommerce → Status. In wp-admin, open WooCommerce → Status and look for red warnings about templates, database version or REST API availability.
  • Ask whether anything changed recently. A new plugin, a theme update, or a host migration right before the problem started is the prime suspect.

Diagnose Table

SymptomLikely causeGo to fix
Clicking “Place order” does nothing or spins foreverJavaScript error or AJAX blockedFix 7
“Payment failed” or gateway error messagePayment gateway misconfigurationFix 2
Checkout page shows old cart contentsPage caching on checkout pagesFix 3
Checkout broke after installing a new pluginPlugin conflictFix 4
Checkout broke after a theme updateOutdated theme templatesFix 5, 6
Browser shows “not secure” on checkoutSSL or mixed-content problemFix 8
Works on desktop but not on mobileTheme or plugin mobile bugFix 5
Orders created but no payment capturedGateway webhook or API issueFix 2, 6

1. Reproduce the Problem Like a Customer

You cannot fix what you cannot see. The first step is to experience the failure yourself, exactly as a customer does.

Close-up of a checkout error message on a store where woocommerce checkout not working blocks the order
The exact error message is your best diagnostic clue — read it carefully before changing anything.
  1. Open an incognito window. This avoids your logged-in admin session, cached pages and extensions, giving you a true customer view.
  2. Add a product and check out. Use a real product, fill in test details, and click “Place order”. Watch exactly what happens.
  3. Write down the exact failure point. Does the page reload with an error? Does the button spin forever? Does it redirect somewhere odd? Precision matters.
  4. Note the exact error text. Copy the message word for word. Error texts like “invalid API key” or “order review could not be updated” point to specific fixes.
  5. Try a second browser. If the problem only happens in one browser, the cause is on the customer’s device, not your store — still worth knowing before you rebuild anything.

With a clear reproduction in hand, you can match the symptom to the diagnose table above and jump to the right fix.

2. Check Your Payment Gateway’s Status and Settings

Most checkout failures that show a payment error trace back to the gateway — Stripe, PayPal, or whichever processor you use. Check it before touching anything else.

Payment gateway settings concept for fixing woocommerce checkout not working payment failures
Most payment failures trace back to the gateway’s settings or API keys — check these first.
  1. Check the gateway’s status page. Stripe, PayPal and others publish live operational status. If they report an incident, wait — no store-side change will help.
  2. Open WooCommerce → Settings → Payments. Confirm your gateway is enabled and that its setup shows as complete, with no warning banners.
  3. Verify you are not in test mode. Gateways have separate test and live API keys. If the store is in test mode by accident, real cards will be declined. Switch to live keys for production.
  4. Re-enter the API keys. Copy fresh keys from your gateway dashboard and paste them into WooCommerce. Keys get revoked or rotated more often than people expect.
  5. Check the webhook URL. Many gateways notify your store through webhooks. In the gateway dashboard, confirm the webhook endpoint is correct and delivering successfully.
  6. Run a small live test. After any change, place a real low-value order (refund it afterwards) to confirm payments actually capture.

WooCommerce’s own settings documentation explains the payment setup screens in detail if any option looks unfamiliar.

3. Exclude Cart, Checkout and Account Pages From Caching

Caching plugins and server caches speed up normal pages, but they must never cache the cart, checkout or account pages. A cached checkout page shows stale cart contents, stale totals, or a stale security token — and the order silently fails.

Cache settings concept showing checkout pages excluded from caching to fix woocommerce checkout not working
Cart, checkout and account pages must never be cached — stale pages break orders silently.
  1. Check WooCommerce → Status. WooCommerce automatically tells most caching plugins which pages to exclude. Confirm there are no warnings about caching on this screen.
  2. Open your caching plugin’s exclusion settings. In WP Rocket, LiteSpeed Cache, W3 Total Cache or similar, find the “never cache these pages” list and make sure it includes your cart, checkout and my-account pages.
  3. Exclude the WooCommerce cookies and URLs. The standard exclusions cover cookies starting with woocommerce_ and the cart/checkout URLs. If your plugin offers a WooCommerce compatibility toggle, turn it on.
  4. Purge all caches. After changing exclusions, purge everything — plugin cache, server cache and any CDN cache — so no stale checkout page remains.
  5. Test checkout in incognito. A fresh incognito session proves the live pages, not cached copies, are being served.

One caution: do this exclusion work before deeper debugging. Many “mysterious” checkout failures are simply a cached checkout page.

4. Deactivate Plugins That Interfere With Checkout

Checkout touches more moving parts than any other page — payments, shipping, taxes, emails, analytics. Any plugin that hooks into checkout can break it, especially after updates.

  1. Deactivate everything except WooCommerce. In wp-admin → Plugins, deactivate all plugins except WooCommerce itself and your payment gateway plugin.
  2. Test checkout. Run your incognito test purchase again. If checkout works now, a plugin was the cause.
  3. Reactivate one by one. Turn plugins back on one at a time, testing checkout after each. When it breaks again, you have found the culprit.
  4. Check the usual suspects first. Extra checkout-field editors, custom shipping plugins, currency switchers, min/max quantity plugins and aggressive optimisation plugins break checkout most often.
  5. Update or replace the culprit. Check for an update from its official source first. If none exists, look for a maintained alternative on wordpress.org.

If the dashboard is unreachable, the same one-by-one method works through FTP by renaming plugin folders — our guide to finding plugin conflicts covers that process step by step.

5. Switch to a Default Theme Temporarily

Themes control the checkout page’s layout and its JavaScript. A theme update, or a theme with outdated WooCommerce template files, can break checkout while the rest of the store looks fine.

  1. Check WooCommerce → Status for template warnings. If your theme overrides WooCommerce templates, this screen flags any that are outdated. Outdated checkout templates are a classic cause.
  2. Switch to Storefront temporarily. Storefront is WooCommerce’s official free theme and is guaranteed compatible. Activate it briefly and test checkout.
  3. Interpret the result. If checkout works under Storefront, your theme is the problem. If it still fails, switch back and keep debugging — the theme is innocent.
  4. Update the theme or its templates. Install the latest version of your theme from its official source, or ask its developer about the flagged outdated templates.

Do not leave the store on a temporary theme longer than needed for testing — switch back once you have your answer.

6. Check WooCommerce System Status and Logs

WooCommerce keeps its own diagnostics. Two screens in wp-admin often name the problem directly.

  1. Open WooCommerce → Status. Work through every red or amber warning: outdated templates, database update needed, REST API unavailable, or scheduled actions failing.
  2. Run the database update if offered. After WooCommerce updates, a pending database upgrade can leave checkout half-functional. Back up first, then run it.
  3. Open WooCommerce → Status → Logs. Look at the most recent fatal-error and webhook-delivery logs. They often name the exact file or API call that failed.
  4. Check scheduled actions. Under WooCommerce → Status → Scheduled Actions, look for failed or stuck actions related to orders or webhooks, and retry them.

The official WooCommerce status documentation explains what each warning means if anything on the screen is unfamiliar.

7. Fix the AJAX Add-to-Cart and Update Order Review Problems

WooCommerce’s checkout updates totals, shipping and taxes without reloading the page, using AJAX requests. If those requests are blocked, the “Place order” button spins forever or the order review never updates.

  1. Open the browser console. In Chrome, press F12 and open the Console tab, then try to place the order. Red JavaScript errors here point directly at the broken script.
  2. Look for admin-ajax.php failures. In the Network tab, watch for failed requests to admin-ajax.php. A 403 or 404 on that file means something — a security plugin, the host, or a bad rule — is blocking WooCommerce’s background requests.
  3. Temporarily disable security and optimisation plugins. Wordfence-style firewalls and aggressive JS-minification plugins are the most common blockers of admin-ajax.php. Disable them briefly and retest.
  4. Check for the “update order review” error. If the checkout shows “order review could not be updated”, the AJAX call that refreshes totals is failing — the same blockers above are the usual cause.

Once AJAX requests flow freely, the spinner stops and the button works again.

8. Verify HTTPS and Your SSL’s Health

Payment gateways require a secure checkout. If your SSL certificate is expired, misconfigured, or serving mixed content, gateways will refuse to process payments.

  1. Check the padlock. Load your checkout page and look at the address bar. Any “not secure” warning means the SSL needs attention before anything else.
  2. Test the certificate. Use a free SSL checker to confirm the certificate is valid, covers your domain (including www if you use it), and is not expiring.
  3. Fix mixed content. If some page elements load over plain HTTP, browsers block them on a secure page. A search-and-replace of http://yourdomain to https://yourdomain in the database (via a trusted migration plugin, with a backup first) usually fixes it.
  4. Force HTTPS in WooCommerce. In WooCommerce → Settings → Advanced, confirm the checkout endpoints use HTTPS, and consider forcing SSL across the whole site.

An expired certificate is a five-minute fix at most hosts — but while it lasts, no gateway will touch your checkout.

9. Test a Complete Order End-to-End

Once checkout appears to work, prove it with a full order. A checkout that looks fixed but silently drops orders is worse than one that is visibly broken.

Successful test order confirmation on a store where woocommerce checkout not working has been fixed
Prove the fix with a real order — a checkout that only looks fixed can still silently drop sales.
  1. Place a real low-value order. Buy your cheapest product with a real payment method. Refund it afterwards through the gateway dashboard.
  2. Confirm the money moved. Check the gateway dashboard — not just WooCommerce — to confirm the payment was actually captured, not merely authorised.
  3. Confirm the order emails. Check that both the customer confirmation and the admin new-order email arrived.
  4. Check stock and order status. The order should show as processing (or completed for virtual products) with stock correctly reduced.
  5. Repeat on mobile. A large share of shoppers check out on phones — run the same test on a mobile device before declaring victory.

Only after a complete successful order — payment captured, emails sent, stock updated — is the checkout truly fixed.

What to Avoid

  • Never test with fake card numbers on a live gateway. Use the gateway’s official test mode with its documented test cards, or place a real low-value order and refund it. Random card numbers trigger fraud flags.
  • Never leave the gateway in test mode. After testing, switch back to live API keys. Test mode silently declines every real card.
  • Never cache the checkout pages. Cart, checkout and account pages must stay out of every cache layer, or orders will fail unpredictably.
  • Never install checkout plugins from unofficial sources. Nulled checkout add-ons are a leading source of skimmers that steal card details — a far worse problem than a broken checkout.
  • Never edit WooCommerce template files directly. Copy them to your child theme first. Direct edits are wiped out by updates and reintroduce the breakage.
  • Never ignore the WooCommerce → Status warnings. Red warnings about outdated templates or the database are the store telling you exactly what is wrong — read them before guessing.

FAQ

Why does my WooCommerce checkout keep spinning when I click Place order?

The endless spinner almost always means the background AJAX request that processes the order is failing or blocked. Check the browser console for JavaScript errors and the Network tab for failed admin-ajax.php requests (Fix 7), and temporarily disable security or JS-minification plugins that may be blocking those requests.

Why do payments fail even though my gateway account is fine?

The usual causes are test-mode API keys on a live store, revoked or rotated keys, or a broken webhook endpoint. Re-enter fresh live keys from your gateway dashboard and confirm webhooks are delivering (Fix 2).

Can caching really break checkout?

Yes — it is one of the most common causes. A cached checkout page serves stale cart data and expired security tokens, so the order fails. Cart, checkout and account pages must be excluded from every cache layer (Fix 3).

How do I find which plugin breaks my checkout?

Deactivate all plugins except WooCommerce and your payment gateway, confirm checkout works, then reactivate them one by one, testing checkout after each. When it breaks again, the last reactivated plugin is the culprit (Fix 4).

Is it safe to switch themes on a live store to test checkout?

Yes, briefly. Switching to Storefront for a few minutes of testing does not delete anything — your theme, its settings and your content all remain. Switch back as soon as you have your answer (Fix 5).

Where does WooCommerce keep its error logs?

In wp-admin under WooCommerce → Status → Logs. Fatal-error logs and webhook-delivery logs there often name the exact file or API call behind a checkout failure (Fix 6).

Conclusion

A woocommerce checkout not working problem is urgent because it directly costs sales, but it is almost always fixable with a systematic approach. Reproduce the failure like a customer, check the payment gateway, exclude checkout from caching, eliminate plugin conflicts, and verify with a real end-to-end order.

For more step-by-step troubleshooting, browse the TechSBSInfo blog, learn more about us, or return to the homepage.

Leave a Reply

Your email address will not be published. Required fields are marked *