Illustration of a shopping cart with a loading spinner for a WooCommerce checkout stuck on Processing guide

WooCommerce Checkout Stuck on Processing: How to Fix It

If customers click “Place order” and the page just spins or sits on “Processing”, you are losing sales every minute it stays broken. The good news is that this problem almost always comes from a short list of causes. Here is the order we check them in, starting with the quickest.

1. Look at the actual error first

Before changing anything, open your store in a private window, add a product to the cart and go to checkout. Open the browser developer tools (F12) and check two tabs:

  • Console: JavaScript errors often point straight at the plugin or script that is breaking checkout.
  • Network: find the checkout request (it usually includes wc-ajax=checkout) and look at its status code and response. A 500 means a PHP error on the server, a 403 usually means a firewall or security rule, and a response that is not clean JSON usually means something printed an error or notice into it.

2. Check the WooCommerce and server logs

Go to WooCommerce → Status → Logs and look for recent fatal-errors files and your payment gateway’s log. Also check your hosting’s PHP error log. A fatal error that appears at the exact time of your test order is the cause in most cases.

3. Make sure caching is not touching checkout

Cart, checkout and account pages must never be served from a page cache. Check that your caching plugin and your CDN both exclude them, and that the WooCommerce cookies (such as woocommerce_cart_hash, woocommerce_items_in_cart and wp_woocommerce_session_*) are not cached or stripped. A cached checkout page causes empty carts, wrong totals and expired security tokens that make the order fail.

4. Test for a plugin or theme conflict

A troubleshooting tool such as the Health Check & Troubleshooting plugin lets you disable plugins and switch to a default theme only for your own session, while visitors still see the normal site. Disable everything except WooCommerce and your payment gateway, then re-enable plugins one by one until the problem returns. Optimization, security, checkout-field and currency plugins are the usual suspects.

5. Check JavaScript optimization settings

Minify, combine and “delay JavaScript” options can break checkout scripts. If checkout started failing after you changed speed settings, exclude the checkout page and WooCommerce scripts from JavaScript delay and combining, then test again.

6. Confirm SSL and payment gateway settings

Mixed content (an http resource on an https page) and the wrong live or test mode keys are simple causes that are easy to miss. Check that the whole checkout loads over https and that the gateway is in the correct mode with the correct keys.

7. Check PHP limits

If the log mentions memory or time limits, your hosting may need a higher PHP memory limit or maximum execution time. Do not guess here; confirm in the log first.

Check the Network tab in your browser

Open your browser developer tools (F12), go to the Network tab and filter by Fetch/XHR. Reload the checkout, click Place order and look at the request that fails. Note its status code and read the response. WooCommerce expects a clean JSON response. If you see an HTML page, a blank response or a security error instead, something between the browser and WooCommerce is interfering, such as a firewall, a caching layer, a redirect or a plugin.

Make sure your WordPress and Site URLs match

Checkout refreshes its order review with AJAX requests, and AJAX does not work across different domains. In Settings, then General, confirm that WordPress Address (URL) and Site Address (URL) match exactly, including http versus https and www versus non-www. A mismatch is a common cause of an endless spinner after a migration or an SSL change.

Classic checkout or Checkout block: where to look

If your store uses the classic shortcode checkout, problems usually come from AJAX, caching or JavaScript conflicts. If it uses the Checkout block, requests go through the WooCommerce Store API under /wp-json/wc/store/v1/. Security plugins or firewall rules that block REST requests from logged-out visitors can stop the block from working. Before you change anything else, open WooCommerce, then Status, and check for highlighted errors.

Memory limit and slow checkout emails

WooCommerce recommends a WordPress memory limit of at least 64 MB. You can see yours under WooCommerce, then Status, in the WP Memory Limit row. On some servers, sending order emails during checkout slows the response enough to break it. WooCommerce documents a filter that defers those emails until after the order completes. Add it with a code snippets plugin or a child theme, and only after taking a backup:

add_filter( 'woocommerce_defer_transactional_emails', '__return_true' );

When to bring in a developer

If the cause is not obvious after these steps, or the store is live and losing orders, it is usually faster to get a second pair of eyes. Our WooCommerce development and support team traces checkout problems through logs and fixes the actual cause, taking a backup first. Send us the details and we reply within 24 hours.

Frequently Asked Questions

Why is my WooCommerce checkout stuck on Processing?

Usually the checkout request fails or does not return clean JSON. Common causes are caching, a plugin or theme conflict, JavaScript optimization, mismatched site URLs, a low memory limit or a payment gateway problem. The Network tab and the WooCommerce logs show which one it is.

Can caching break WooCommerce checkout?

Yes. Cart, checkout and My account pages, and any URL containing wc-ajax=, should be excluded from page caching and CDN caching. Also check any JavaScript delay or defer setting that touches checkout scripts.

Is it safe to deactivate plugins on a live store?

It carries risk because customers may be checking out. Test on a staging copy if you can. If you have to test live, take a backup first, do it at a quiet time and re-enable plugins one at a time.

Further reading: WooCommerce documentation on endless loading and spinner problems on the checkout page.

Related guides: WooCommerce checkout optimization, fixing WooCommerce cart issues and WooCommerce caching setup.

Leave a Reply

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

638028265_26170227569275320_6333876549114972331_n

Meet Muhammad Aziz

Muhammad Aziz is a results-driven web developer specializing in WordPress, WooCommerce, and custom web solutions that transform ideas into scalable, high-performance digital products.

Related Posts

Explore more

Keep reading

Latest articles

Practical WordPress, WooCommerce and speed guides from real client projects.

View all articles

Ready to start your project? Contact us

Tell us about your goals, and we’ll respond within 24 hours
with a clear plan and detailed quote.