WooCommerce checkout not working

PlatformWooCommerce Doing it yourself30 to 90 minutes Checked

The short answer

Most broken checkouts come from one of four things: a cache serving the checkout page, a script error from another plugin, a payment gateway set up wrong, or no shipping method for the address. Place a test order as a customer, read the browser console and the WooCommerce logs, and they point to which one.

Is this your problem?

  • The Place order button spins forever
  • The checkout page is blank or missing fields
  • It works on a laptop but not on a phone
  • "There are no payment methods available"
  • "No shipping options were found"

What usually causes it

1
The checkout page is cached

How to tell: It breaks for some customers and not others, or after a while. A caching or speed plugin is installed.

2
A script error from another plugin or the theme

How to tell: The browser console shows a red error when you press Place order.

3
A payment gateway problem

How to tell: Test mode is on, keys are wrong, or the gateway does not support your currency or country.

4
No shipping method covers the address

How to tell: The message says no shipping options were found.

5
The checkout block and an older extension do not work together

How to tell: It started after switching to the new checkout, or after installing an extension.

Before you touch anything

  • Do all testing in a private window, logged out, the way a customer would.

How to fix it, step by step

  1. 1

    Place a test order as a customer

    Use a private window on a phone and a laptop. Write down exactly where it fails.

  2. 2

    Read the browser console

    Press F12, open Console, then press Place order. A red error names the script at fault, and usually the plugin it came from.

  3. 3

    Read the WooCommerce logs

    Go to WooCommerce, Status, Logs. Check fatal-errors and the log for your payment gateway.

  4. 4

    Keep caching off the checkout

    Exclude /cart/, /checkout/ and /my-account/ from every cache, and turn off script combining and delaying on those pages. Clear all caches after.

  5. 5

    Test without other plugins, safely

    The Health Check and Troubleshooting plugin switches plugins off for you only, so customers are not affected. Turn them back on one by one.

  6. 6

    Try the classic checkout

    If you use the Checkout block, create a test page with the classic shortcode. If that works, an extension does not yet support the block.

    [woocommerce_checkout]
  7. 7

    Check gateways and shipping

    In each gateway, check test mode, live keys and the webhook. In Shipping, make sure a zone covers every country you sell to.

Stop and get help if

  • Customers are charged but no order appears in WooCommerce. That is a webhook problem and needs reconciling with the gateway.
  • You see many small failed payments in a row. That is card testing and needs protecting now.
Fix it for me

Stop it happening again

  • Test a real order after every update.
  • Keep checkout, cart and account pages out of all caches.
  • Watch the gateway dashboard for failed webhooks.

Questions people ask

Why does checkout work for me and not for customers?

You are logged in, and caches often skip logged-in users. Test logged out.

Should I switch back to the classic checkout?

Only if an extension you need does not support the block yet. The block is where WooCommerce is heading.

Still broken? We can fix it.