Specialist service
WooCommerce checkout troubleshooting
A checkout that keeps loading, a Place Order button that does nothing, an error on submit, or a checkout that works for some customers and not others. We follow the checkout request through the browser, WordPress, WooCommerce and the gateway until the failing layer is isolated.
Typical problems
Checkout symptoms we investigate
Checkout keeps loading
The spinner never stops: the checkout request failed, timed out or returned something the page cannot read.
Place Order does nothing
No request is sent — usually a JavaScript error or a blocked script.
“There was an error processing your order”
A generic message hiding a PHP error, a validation failure or a gateway response.
Works for some customers only
Logged-in vs guest, one country, one shipping method, one device or browser.
Wrong totals, taxes or shipping
Fees, coupons, tax rules or shipping plugins disagreeing during the order review.
Slow checkout
Seconds spent in PHP, the database or external API calls before the order is created.
What we check
- Which checkout is in use: the classic shortcode (
?wc-ajax=checkout) or the Checkout block (Store API) - The browser console and the checkout request in the Network panel
- PHP and WooCommerce
fatal-errorslogs at the moment of failure - Hooks and custom code on the checkout path: fees, fields, validation, shipping
- Page caching, script optimisation and security rules applied to checkout
- The gateway's response and what happens after it
What you receive
- The failing layer and the exact cause, with evidence
- The fix, tested with guest and logged-in orders on staging
- Notes on what to check after future updates
The first question: where does the failure start?
Checkout has three phases, and finding which one fails narrows the cause from dozens of possibilities to a few:
- Before the request — nothing is sent when the customer clicks Place Order. The cause is in the browser: a JavaScript error, a script blocked by an optimiser or consent tool, a missing payment field.
- During the request — the request is sent but returns an error, a timeout or invalid output. The cause is on the server: a PHP fatal error in a hook, a validation failure, a security rule, an exhausted PHP worker.
- After the gateway — the order is created but payment confirmation or post-payment processing fails. The cause is in the payment handoff.
Classic checkout or Checkout block?
The Checkout block became the default checkout for new WooCommerce stores, while many existing stores still use the classic [woocommerce_checkout] shortcode. They use different endpoints, different JavaScript and different extension points. Extensions that only support one of them, and security rules that restrict the REST API, are a frequent cause of checkout failures after a migration or update.
Technical resources
Checkout guides
- WooCommerce / Checkout WooCommerce checkout problems Checkout that keeps loading, Place Order that does nothing, errors on submit, guest checkout broken.
- WooCommerce / Payments WooCommerce payment problems Charged without an order, orders stuck in pending, failed payments, webhooks and 3D Secure.
- WooCommerce / Errors WooCommerce errors: PHP, JavaScript, database and conflicts Critical errors, white screens, JavaScript and AJAX errors, plugin and theme conflicts, database errors.
FAQ
Frequently asked questions
Why does checkout work when I'm logged in but not for guests?
Common causes are page caching serving a stale checkout (with expired nonces) to visitors without a session, guest checkout or account settings, and plugins that only run for logged-out users. The guest checkout request in the Network panel shows which.
Does it matter whether we use the Checkout block?
Yes. The classic checkout posts to ?wc-ajax=checkout; the Checkout block uses the Store API under /wp-json/wc/store/. Security plugins, REST API restrictions and extensions that only support one of the two cause failures that look identical to customers.
Can a theme break checkout?
Yes — through outdated template overrides, JavaScript conflicts or removed hooks. The theme's overrides are listed under WooCommerce → Status, flagged when they are out of date.
$ describe the problem
Have a WooCommerce problem?Request a diagnosis.
Tell us what is failing, what changed recently and the business impact. We review every request and recommend the appropriate next step.
Never send passwords, API keys or card data through the form.