A broken checkout is the worst bug a webshop can have: the customer did everything right, wanted to pay you, and the store said no. Before you start disabling things at random โ the panic move that creates second and third bugs โ run this diagnosis. Ten minutes of checking beats two hours of guessing.
Minute 0โ2: Reproduce it like a customer
Open your store in a private/incognito window, on your phone if you can. Add a product, go to checkout, and go as far as the payment step. Write down exactly where it fails and what it says: a spinning loader forever, a red error, a blank page, a payment that declines? Also note whether you are logged in โ many checkout bugs only appear for guests, or only for logged-in customers, and shop owners test while logged in as admin, which hides half of all problems.
Minute 2โ4: Check for the update that changed everything
Checkout bugs very often start right after an update โ WordPress, WooCommerce, your theme, or a plugin. In your dashboard, check what updated recently and whether the problem began around the same time. Also visit WooCommerce โ Status: red warnings there (outdated templates are the classic) point straight at trouble. If your theme overrides WooCommerce template files and those overrides are from an old WooCommerce version, that is a prime suspect.
Minute 4โ6: The plugin conflict test โ safely
The most common cause of a suddenly broken checkout is a plugin conflict: two plugins, or a plugin and your theme, fighting over the checkout page. Never test this by disabling plugins on your live store during selling hours. Use a staging copy if your host offers one-click staging (many do). On staging, switch to a default theme like Storefront and disable plugins except WooCommerce and your payment gateway. If checkout works there, re-enable things in small groups until it breaks again โ the last group contains your culprit.
Minute 6โ8: Interrogate the payment gateway
If the checkout page itself works but payments fail, the problem is usually at the gateway: expired API keys, a gateway still in test/sandbox mode, or a webhook that stopped working. Log into your payment provider's dashboard and check three things: are you in live mode, are the keys in WooCommerce settings current, and are there failed transactions with error messages? Gateway error codes are blunt but honest โ they usually tell you exactly what is wrong.
Two quiet killers worth 30 seconds
- Expired SSL certificate โ browsers block or warn on the checkout page, and some gateways refuse to process. Check your site shows the padlock with no warnings.
- AJAX errors at checkout โ if the order review spins forever when you change country or shipping, open your browser console (F12) and look for red errors; the file names in them often name the guilty plugin directly.
Minute 8โ10: Check the logs, then decide
WooCommerce keeps logs under WooCommerce โ Status โ Logs. A 'fatal errors' log with a fresh entry, timestamped when checkout failed, is gold: it names the file and line that broke. With the reproduction steps, the timing, and a log entry, you now know whether you are looking at a plugin conflict, an outdated template, a gateway problem or a hosting issue โ and each has a different fix.
One last rule: take a backup before you fix anything, and change one thing at a time. The stores that stay broken for days are almost always the ones where five things were changed at once and nobody knows which one mattered.