Broken WooCommerce checkout means no sales. Before doing anything else, identify exactly what is failing – the symptom tells you where to look. A button that does nothing is a JavaScript problem. Missing shipping options are a zone configuration problem. A payment that goes through without creating an order is a webhook problem. Start by reading the exact failure, then go to the matching fix below.
Step 1: Identify the Exact Symptom
The specific failure mode determines where to look:
- Checkout page loads but “Place Order” button does nothing when clicked – JavaScript error, usually a plugin conflict
- Checkout page shows a blank white area where the form should be – CSS or JS conflict hiding the form
- Order goes through but payment is not processed / customer is not charged – payment gateway configuration issue
- Checkout loads but shipping options are missing – shipping zone not configured for customer’s address
- Checkout page redirects to itself or another page – page configuration issue or caching problem
- Checkout works in test mode but fails in live mode – live payment gateway credentials wrong
Fix: Place Order Button Does Nothing
Open browser DevTools (F12) -> Console while on the checkout page. Click Place Order. JavaScript errors in the console pinpoint the conflict. The most common causes:
jQuery is not loading or a plugin loaded a conflicting jQuery version. WooCommerce requires jQuery. If another plugin loads jQuery in no-conflict mode or loads an incompatible version, WooCommerce’s checkout JavaScript breaks. Deactivate plugins one by one to find the conflict.
A caching plugin minified or combined WooCommerce’s checkout JavaScript incorrectly. Disable JavaScript minification and combination in your caching plugin and test. If checkout works without minification, add WooCommerce’s checkout scripts to the exclusion list in your caching plugin.
Problem not solved? Describe the issue and get a free estimate.
Fix: Shipping Not Showing at Checkout
If no shipping options appear on the checkout page, the customer’s address is not matched by any shipping zone. Go to WooCommerce -> Settings -> Shipping -> Shipping Zones. Check that your zones cover the customer’s country. Also verify that the zone has at least one shipping method configured with a rate. Enable “Calculate shipping” on the cart page to let customers see shipping costs before checkout.
Test by going through checkout yourself and entering the customer’s country and postcode. If shipping appears for your test, the problem was specific to that customer’s address. Check for unusual address formats or a country code your zones do not cover.
Fix: Payment Not Processing
Go to WooCommerce -> Settings -> Payments and verify your payment gateway is enabled and configured. For Stripe: check that the Publishable Key and Secret Key are the live keys, not test keys, if you are in live mode. For PayPal: verify the email address matches your PayPal account. Test the payment gateway’s webhook URL is correctly configured (Stripe and PayPal both send webhook notifications that WooCommerce needs to receive).
Enable WooCommerce logging: WooCommerce -> Status -> Logs. Set the log type to your payment gateway. Attempt a payment and check the log for specific error messages from the gateway API.
Fix: Checkout Page Redirect Loop
If the checkout page redirects back to itself or to the cart, the checkout page assignment is incorrect. Go to WooCommerce -> Settings -> Advanced and verify that “Checkout page” is set to your actual checkout page. Also check that the checkout page contains the [woocommerce_checkout] shortcode (in classic editor) or the Checkout block (in block editor). Without this, WooCommerce does not recognise the page as checkout and redirects away from it.
Fix: Test Mode vs Live Mode Problems
Most payment gateways have a test mode (no real charges) and live mode (real charges). If checkout works in test mode but fails in live mode: verify you switched to live API keys in the payment gateway plugin settings (test and live keys are different), check that your domain is approved by the payment provider for live transactions, and verify SSL is working on the live checkout page (payment gateways require HTTPS for live transactions).
Checking WooCommerce Logs for Exact Errors
Before spending time on trial-and-error, check the WooCommerce logs. Go to WooCommerce -> Status -> Logs. Select your payment gateway from the dropdown (stripe, paypal, etc.) and read the most recent entries. The log shows the exact API request and response – if the gateway returned an error code, that code tells you precisely what went wrong. Common entries and what they mean:
INVALID_REQUEST_ERROR– wrong API credentials or malformed request. Check your API keys are correct for the current mode (test vs live).card_declined– the test card being used is configured to decline. Use the gateway’s specific success card number instead.webhook_not_found– the webhook URL is not registered with the gateway. Re-register it in the plugin settings.
If there are no log entries when you attempt a checkout, the payment gateway is not being reached at all – the problem is happening before the payment step (JavaScript error on the Place Order button, or a PHP error on checkout page load).