
A broken checkout costs money every hour. So the first job is not to fix but to narrow down. Checkout is a chain of the cart, the checkout page, the payment provider and the order confirmation. The fault is always in one of those four, and you can find out which in a couple of minutes.
Buy the cheapest product with a real payment method. Note down where things stop. This is the only reliable approach, because the symptom a customer describes is often not where the chain actually breaks.
This is almost always caching. Checkout pages must be excluded from the cache, because they are specific to each customer. If the cache stores the cart, everyone sees the same cart or an empty one. The layers of caching are covered in our guide on changes not showing on the site.
Check the payment method settings for limits on amount, country or currency. Another common cause is that the method is still in test mode or the keys have expired. A third is shipping. If no shipping method suits the customer address, the checkout offers no payment either.
This is the most important case. The payment provider notifies the shop with a separate call, and if that call does not arrive, the order hangs even though the money has been taken. The usual causes are a wrong return address in the provider settings, a security plugin blocking the call, and maintenance mode being on at that exact moment.
Then the order is usually fine and the fault is in email. It is covered in our guide on WordPress not sending email. Check the order list before assuming the shop is broken, because the order may be safely stored even though the message did not arrive.
A slow checkout is also a broken checkout, because buyers give up. Start from our guide on why a WordPress site is slow, and if a server error appears, see 502, 503 and 504.
Do not test the checkout while logged in as an administrator. You see different prices, different shipping methods and you often bypass the cache entirely, so the symptom does not reproduce. Always test in a private window as an ordinary customer.
We narrow the fault down to the right one of the four parts and fix it. We also go through the orders left in limbo, because they often include paid orders nobody has shipped.