Customers fill the cart, reach the checkout, and the order never goes through: the Place order button spins forever, the page says the session has expired, there are no payment methods, or there are no shipping options. Every hour this lasts is lost sales, and often nobody tells you; the orders just stop. Below is a rebuilt example (not a real client), the five-minute way to find which part is failing, and the fix for each cause.
fatal-errors log and the log of your payment plugin (Stripe, PayPal, Square) for the time of your test. A line there usually names the cause.woocommerce_items_in_cart and wp_woocommerce_session_ cookies) everywhere a cache runs, then clear all caches.[woocommerce_checkout] shortcode).http, or one that loads parts from the old address, can be blocked by the browser or the payment provider. See the "Not secure" guide and the mixed content guide.| What you see | Usual cause | Usual fix |
|---|---|---|
| "Your session has expired" or the cart empties at checkout | Cart or checkout page cached (host cache or CDN) | Exclude Cart, Checkout, My account and the Woo cookies from every cache |
| Place order spins forever, no message | A JavaScript error from a plugin or theme, or a server error | Console error names the file; plugin conflict test; read the fatal-errors log |
| "There was an error processing your order" after the card is entered | Payment keys wrong, test mode on, account not connected | Reconnect the gateway; test mode off; check the webhook |
| Card payment option missing, PayPal shows (or the reverse) | Gateway not compatible with the checkout block, or limited by country/currency | Update it, or switch to the classic checkout |
| "No shipping options were found for..." | Address not in a zone with a method | Add a method to each zone; check zone order |
| Order paid at Stripe or PayPal but shows "Pending payment" in WooCommerce | Webhook pointing at an old address or failing | Fix the webhook URL; resend the failed events |
| Works for you, fails for customers | You are logged in and skip the cache | Test logged out, in a private window, on a phone |
Once the cause is known, most checkout faults are fixed in an hour or two, and a test order proves it. If you would rather hand it over, that is what the box below is for. Related: a plugin that broke the site, order emails that never arrive and a site that is slow to load.