A failing checkout is the most urgent fault a shop can have. Narrow it down before changing anything.
Establish where it fails
Place a test order yourself and note the exact point: adding to the basket, reaching checkout, submitting the form, at the payment provider, or on return. Each points somewhere different.
Fails before payment
- A caching problem. If the checkout page is cached, it will misbehave in exactly this way. Confirm cart, checkout and account pages are excluded.
- A JavaScript error. Press F12, open the Console, and reload. A single script error from a plugin or theme can stop the form submitting, with no message shown to the customer.
- A validation rule rejecting an address or postcode format, particularly for overseas customers.
Fails at the payment provider
Check the gateway dashboard and the WooCommerce logs under Status, Logs. Test versus live mode mismatches and expired API keys are the usual answers.
Fails on return
See Orders stuck on pending payment – almost always a webhook or callback problem.
Intermittent failures
If it works sometimes, suspect resources. Check Resource Usage for entry process or memory limits being hit at the times it fails. Checkout is the heaviest page on the site, so it fails first when the account is under pressure.
What not to do
Do not start deactivating plugins on a live shop at random. Reproduce it on a staging copy and test there. If you must test on live, do it at the quietest hour and change one thing at a time.