If customers cannot complete their purchase, your WooCommerce checkout has stopped doing its job, even if the rest of the shop looks perfectly normal.
The problem can show up in different ways:
- the "Place order" button does nothing
- the page keeps spinning after the customer clicks
- an error message appears, sometimes a vague one
- the customer pays, but no order appears in WooCommerce
- the checkout page is blank or only partly loaded
- shipping options or payment methods are missing
A broken checkout affects sales directly, and often silently: customers rarely write to tell you, they simply leave.
The good news is that a checkout problem rarely means that your products, customers or past orders are lost. In most cases something in the chain between the cart and the payment has stopped working, and it can be found with a calm, step-by-step approach.
This guide explains the most common symptoms and causes, which checks are safe, how to test the checkout properly and when it is better to ask for technical support.
What does "checkout not working" actually look like?
Before trying anything, write down exactly what happens. The symptom is one of the most useful clues.
The "Place order" button does nothing
The customer clicks and nothing happens: no error, no loading, no redirect. This often points to a JavaScript error on the page, which stops the checkout script from running.
The page keeps spinning
The checkout shows a loading animation that never finishes. The request may be failing on the server, timing out, or receiving an unexpected answer, for example because a cache or security rule is interfering.
An error message appears
Messages can be specific, such as a card being declined, or generic, such as "There was an error processing your order". A generic message usually means the real error is recorded in a log, not on the screen.
The customer pays but no order is created
This is one of the most serious cases. The money may reach your payment provider, but WooCommerce never receives the confirmation. It often involves the payment gateway or the way it communicates back with your website.
The checkout page is blank or broken
The page may be empty, show a critical error or load without the payment section. This can be caused by a plugin or theme conflict, a PHP error or a problem with the checkout page itself.
Shipping or payment options are missing
Without a shipping or payment method the order cannot be placed. This often comes from settings rather than code.
What may have caused the problem?
The most common causes include the following.
A plugin or theme conflict after an update
The checkout depends on WooCommerce, the theme, the payment plugin and often several other plugins working together. An update to any of them can introduce a conflict.
The update does not have to be related to payments: plugins for marketing, translations or custom fields also add code to the checkout. A PHP version change or a new server security rule can have a similar effect.
The payment gateway
The gateway plugin may have been updated, its credentials may have changed or expired, or test mode may have been left on. If the checkout fails only with one payment method, the gateway is the first suspect. Our guide on payment gateway problems covers this in detail.
The cart or checkout page is being cached
Caching makes a website faster by saving copies of pages. The cart, checkout and account pages, however, are different for every customer and should not be cached.
If a caching plugin, the hosting cache or a CDN saves a copy of the checkout, customers may see someone else's cart, an outdated page or a checkout that cannot submit.
JavaScript errors
The WooCommerce checkout relies heavily on JavaScript. A script error from another plugin, the theme or an optimization tool that combines or delays scripts can stop the checkout from working while the page still looks normal.
Shipping or tax rules
If no shipping method matches the customer's address, or a shipping zone or tax setting was changed, the checkout may refuse to continue. This is common after editing shipping zones or adding new countries.
Block checkout and classic checkout compatibility
WooCommerce offers two ways of building the checkout page:
- the Checkout block, used by default on many newer shops
- the classic checkout, based on the
[woocommerce_checkout]shortcode
Some payment gateways, extensions and customizations only work with one of the two. If the checkout page was recently changed, rebuilt or created by a newer WooCommerce version, a plugin that worked before may no longer appear or behave correctly.
First, try to understand what changed
Think about what happened just before the checkout stopped working.
For example:
- Was WooCommerce, WordPress, the theme or a plugin updated or installed?
- Did someone change the payment, shipping or tax settings?
- Was a caching or optimization plugin installed or reconfigured?
- Was the checkout page edited or rebuilt?
- Did the hosting provider or a developer make any changes?
Also try to identify when the last successful order was placed. Open WooCommerce > Orders and look at the date of the most recent completed or processing order. If orders stopped on a specific day, compare that date with any updates or changes.
How can you test the checkout safely?
Testing is the only reliable way to know whether the checkout works, and whether a fix has really solved the problem.
Test in a private window
Open the shop in a private or incognito window, without being logged in. Administrators sometimes see a different version of the page, and logged-in users may bypass the cache.
Add a product to the cart and go through the checkout as a normal customer would.
Use a test mode where available
Many payment gateways offer a test or sandbox mode, which lets you place orders with test payment details instead of real cards. The exact steps depend on the provider and plugin, so check its documentation.
Be careful: while test mode is active, real customers may not be able to pay. Only enable it if you can do it briefly, or on a staging copy of the shop.
Place a real low-value order
A real order is the most accurate test, because it uses the live payment method exactly as a customer would. If possible, use a low-value product or a temporary low-price test product, and refund or cancel the order afterwards.
Check that:
- the payment reaches your payment provider
- the order appears in WooCommerce with the expected status
- the confirmation email arrives
- stock levels are updated correctly
Try different payment and shipping methods
If one payment method fails and another works, the problem is probably in that specific gateway. If every method fails, the cause is more likely to be general: a conflict, a cache, a JavaScript error or a server problem.
What can you safely try?
Check WooCommerce > Status
Go to WooCommerce > Status. The System status page summarizes your WooCommerce setup and highlights some problems, such as outdated template overrides in the theme, missing pages or server limits.
The Logs tab may contain errors recorded by WooCommerce and by payment plugins. Look for entries from the time the checkout failed.
Clear the cache
If you use a caching plugin, a hosting cache or a CDN, clear the cache and test again. Then check that the cart, checkout and my account pages are excluded from caching. Many caching tools do this automatically for WooCommerce, but custom rules or optimization settings can override it.
Contact your payment provider
If customers are charged but orders are not created, or payments are declined unexpectedly, check your payment provider dashboard and contact their support. They can see whether payments arrive and whether their notifications to your website succeed.
Deactivate a suspected plugin
Only try this if you have a strong reason to suspect a specific plugin, for example one updated just before the problem appeared, and only if you have a recent backup.
Deactivating a plugin on a live shop can affect other functions, such as shipping calculations, discounts or invoices. After any change, place another test order.
What should you avoid doing?
When sales are affected, it is tempting to try everything at once. This usually makes the cause harder to find.
Avoid:
- updating all plugins together in the hope that it fixes the problem
- deactivating many plugins at once on the live shop
- restoring an old backup without checking which orders would be lost
- switching between block and classic checkout without testing
- disabling security features permanently to "see if it helps"
- leaving test mode active on a live shop
- editing WooCommerce or plugin files directly
Restoring a backup deserves particular care on an ecommerce site. A backup from yesterday may not contain today's orders, customers or stock changes. Restoring it can remove real data.
Change one thing at a time and write down what you did.
When should you ask for technical support?
Technical support is recommended when:
- no orders have come in for an unusual length of time
- customers are charged but orders are not created
- the checkout fails with every payment method
- the problem started after an update and you cannot identify which one
- the logs show errors you do not understand
- the checkout uses custom code or heavy customization
- you do not have a recent, verified backup
- the problem comes back after a temporary fix
- you are not comfortable deactivating plugins on a live shop
You do not need to know the cause first: a clear description of what customers see is a good starting point.
What information should you collect?
Useful details include:
- the website URL
- a screenshot or screen recording of the error
- the date and time of the last successful order
- which payment and shipping methods are affected
- any recent updates or changes
- whether customers have reported being charged without an order
- the name of your payment provider and hosting provider
- the WooCommerce system status report (see below)
- whether a recent backup is available
Do not send passwords, API keys or full payment details by email. D4Hub can explain how to share access safely.
How D4Hub can help
The goal is not only to get one order through, but to understand why the checkout broke and make sure it keeps working.
Depending on the problem, D4Hub can help with:
- reproducing the problem and identifying where the checkout fails
- reviewing WooCommerce logs, server logs and browser errors
- finding the plugin, theme or update that caused a conflict
- checking payment gateway settings and the connection with your provider
- fixing caching and optimization rules that affect the cart and checkout
- reviewing shipping zones, methods and tax settings
- checking block checkout and classic checkout compatibility
- recovering orders that were paid but not recorded, where possible
- testing the full purchase flow after the fix
- recommending staging, monitoring and maintenance to prevent future problems
You can ask for support at any stage of the process.
For example, D4Hub can confirm whether a check is safe on a live shop, take over after an unsuccessful attempt, complete the full repair or review the checkout after a temporary fix.
Open a support ticketFor hands-on users: technical checks for a broken checkout
The following checks are for users who are comfortable with the WordPress dashboard, browser developer tools and WP-CLI.
Most of them only read information. Before changing anything on a live shop, make sure you have a recent backup that includes the database, and work on a staging copy if you can. Change one thing at a time and test with an order after each change.
Read the WooCommerce logs
Go to WooCommerce > Status > Logs.
Depending on your WooCommerce version, you will see a list of log files or log entries that can be filtered by source. Look for:
- sources named after your payment gateway
fatal-errors, which records PHP fatal errors caught by WooCommerce- entries with a date and time matching a failed checkout
Some payment plugins only log details when a debug option is enabled. Turn it off when you are done.
Logs can contain customer data, email addresses or technical details. Do not publish them or paste them into public forums.
Check the browser console for JavaScript errors
Open the checkout page, then open the browser developer tools:
- in Chrome, Edge or Firefox, right-click the page, choose Inspect, then open the Console tab
- in Safari, first enable the developer tools in the advanced settings
Reload the page and try to place an order. Errors shown in red are worth noting, especially if they mention a plugin or theme folder in the file path.
The Network tab can also help: when you click "Place order", a request is sent to the server. If it returns an error status, such as 403 or 500, the problem is on the server side rather than in the browser.
Exclude cart, checkout and my account from cache
Make sure the following pages are never cached, by your caching plugin, your hosting cache or your CDN:
- the cart page
- the checkout page
- the my account page
Their addresses are set in WooCommerce > Settings > Advanced, under page setup. If you have a multilingual shop, check the translated versions of these pages too.
Many caching tools also skip the cache for visitors who have WooCommerce cookies, such as woocommerce_items_in_cart or wp_woocommerce_session_. If you use custom cache rules, check that they respect these cookies.
If you use script optimization features, such as combining, minifying or delaying JavaScript, try excluding the checkout page from them and test again.
List the active plugins
With WP-CLI you can see which plugins are active and their versions:
wp plugin list --status=activeTo check which plugins have updates available:
wp plugin list --update=availableCompare the list with any recent updates. A plugin updated just before the problem started is a good candidate for testing on staging.
To test a single plugin, deactivate it, place a test order, then reactivate it:
wp plugin deactivate plugin-slug
wp plugin activate plugin-slugReplace plugin-slug with the folder name shown in the list. Do this on staging whenever possible.
Check which checkout the page uses
Open the checkout page in the editor. If it contains the Checkout block, the shop uses the block checkout. If it contains the [woocommerce_checkout] shortcode, or a classic shortcode block, it uses the classic checkout.
When you select the Checkout block, the editor may warn you about extensions that are not compatible with it. If a key plugin is not compatible, ask its developer whether a compatible version exists before switching the checkout type. Always test the full purchase flow after switching.
Generate the system status report
Go to WooCommerce > Status and use the Get system report button. It produces a text report with your WordPress and WooCommerce versions, active plugins, theme, template overrides and server settings.
Review it before sharing it, and only share it through a private support channel.
D4Hub can help you read the logs and the report and decide on the next safe step.
FAQFrequently asked questions
Usually not. A checkout problem prevents new orders from being placed or recorded, but existing orders and customer accounts normally remain in the database.
If customers have been charged without an order being created, the payment details are usually visible in your payment provider dashboard, which can help reconstruct the missing orders.
As an administrator, you may be logged in, bypass the cache or use a different browser. Customers may be in another country, use a different payment method or see a cached version of the page.
Always test in a private window, without being logged in, and try more than one payment and shipping option.
It can solve compatibility problems with some plugins, but it is not a universal fix. It can also break features that rely on the block checkout.
Make the change only after checking which extensions are affected, and test the full purchase flow afterwards.
Place at least one real or test order after the fix and check that the payment, the order status, the confirmation email and stock levels are all correct. Then keep an eye on orders over the following days.
Yes. Explain which changes you made and what happened after each one. This helps reconstruct what happened and find the next safe step.