WooCommerce checkout is down: a runbook
What to do, in order, when customers cannot pay on a WooCommerce store. Go through the checkout yourself and read the latest orders, work out which of three faults you have, keep orders coming in with a second way to pay, then account for every payment made while it was broken.
- By
- WP Ministry
- Updated
In short
- Go through the checkout in a private window, as far as the payment step, before you change anything. Note where it stops.
- A checkout that will not load, a payment that is refused and a paid order that is not recorded are three different faults.
- Compare your payment provider's dashboard with your orders before asking any customer to try again.
- A second way to pay keeps orders coming in while the first is repaired.
- Restoring a backup on a store removes the orders taken since. Leave it until last.
This runbook is for the hour when customers say they cannot pay, or orders stop arriving. Work from the top. The first thing to do is go through the checkout yourself, as a customer would, and watch where it stops.
In the first few minutes
Step 1: Go through the checkout yourself
Open a private browser window, stay logged out, add a product to the cart and fill in the checkout as far as the payment step. Do not pay. Write down the time, the exact message and the step where it stopped. If the page loads and the payment fields appear, the fault is in the payment itself, and the next step reads it from the orders your customers have placed.
Step 2: Look at the latest orders in two places
Open WooCommerce, then Orders, and read the status and the notes of the most recent orders. Then look for the same payments in your payment provider's dashboard. Whether an order was created, and whether money moved, is what separates the three faults below.
Step 3: Read your provider's rules before you pay with your own card
WooCommerce's guide to test orders says to keep test payments on a staging site, with the gateway in its test or sandbox mode. That shows whether the checkout's code works. It does not show whether your live account takes money now. If you mean to find that out by paying on the live store, read the provider's rules first. Stripe's testing documentation says its services agreement prohibits testing in live mode using real payment method details. WooPayments' documentation says the fees on a real order are not returned when you refund yourself.
Step 4: Check the payment provider before the site
Open the provider's status page, and look for a notice on your account in its dashboard. If the provider has an incident, or has restricted your account, nothing you change on the store will help.
Step 5: Write down what changed last
List the past few days: an update, a new plugin, a caching or speed setting, replaced payment keys, a move to another host, a push from staging. The fault most often follows the last change.
Step 6: Tell whoever answers customers
Ask them not to tell anyone to pay again yet. A second attempt on top of a hidden first charge is how a customer is charged twice.
Find out what happened
What you saw at the checkout, and what the latest orders show, put the fault in one of three groups.
- The checkout will not load, or the button does nothing, and no order is created. The fault is on the site. Work through WooCommerce checkout not working.
- An order is created and the payment is refused. WooCommerce marks the order "Failed": the payment failed or was declined, and no money was taken. Read the order's notes, then go to WooCommerce payment gateway errors.
- The money was taken and the order is not recorded as paid. The provider shows the charge and the order sits in "Pending payment": the provider's confirmation is not reaching the store. The same page covers it. This is the most urgent of the three, because customers are paying for orders nobody will ship.
Then read what WooCommerce recorded. Go to WooCommerce, then Status.
- The status report. Items that need action are highlighted in red. Check the section on WooCommerce's pages and the list of active plugins with their versions. Copy the whole report with the button there, for whoever helps you.
- The Logs tab. A log named
fatal-errorsis kept automatically. A payment gateway's own log must first be switched on in that gateway's settings. Entries are deleted after 30 days by default, so save today's.
Match what you find against your list of changes. If an update came first, the failed update runbook covers going back one version. If a caching or speed change came first, a stored copy of the checkout is likely: how to speed up a WooCommerce store lists the pages that must stay out of every cache.
Bring it back
Safest first. Stop at the first route that gets orders through.
Switch on a second way to pay. If the checkout loads and one gateway fails, another keeps the store open while you repair the first. Go to WooCommerce, then Settings, then Payments, and enable a second provider you already hold an account with, or an offline method under "Take offline payments". With direct bank transfer, each order waits in "On hold" until you confirm the money arrived. With cash on delivery, orders go to "Processing" and you collect on delivery.
Undo the last change. Put back the one setting, deactivate the plugin you added, or go back one version of the plugin you updated. Then go through the checkout again and watch the next real order.
Repair the cause. Follow the error page your fault led to. Where it asks you to switch plugins off or change theme, do it on a clone of the store, as WooCommerce's own conflict test advises.
Restore a backup last. A restore puts the database back as it was, and the orders since go with it. Before one, export every order placed since the backup.
Account for lost and doubled orders
Do this the same day. Go through the provider's payments for the outage beside WooCommerce's orders, line by line.
- Paid, and the order says "Pending payment". Confirm the payment in the provider's dashboard, then set the order to "Processing" by hand so it is shipped.
- Charged twice. Check that the count of transactions at the provider matches the count of orders, as WooCommerce's guide to duplicate orders advises. Refund the extra one from the order's Refund button. The choice that names your gateway sends the money back through it. The manual choice only marks the order, and you must return the money from the provider's dashboard yourself.
- Tried, failed, not charged. Open each "Failed" and unpaid "Pending payment" order from the outage. Where the customer left an email address, write to them once the checkout works.
Who to tell
- Customers on the site. Say plainly that payment is not working and when to come back. A classic theme has a store notice under Appearance, then Customize, then WooCommerce. A block theme does not use the Customizer, so add a line to the cart page.
- Customers who were charged twice or charged with no order. Write to them before they find it on a statement, and say what you have done about it.
- Your payment provider's support, with the times and transaction references, if payments fail and the store's settings look right.
- Your host, if the log shows a server error or the provider's messages are being turned away.
Code on the checkout that nobody on your side put there is a different incident: use the hacked site runbook.
Afterwards
- After every update and every change to caching, place a test order on a staging copy with the gateway in its test mode, then watch the next real order on the live store.
- Keep the second payment method set up and switched off, ready for next time.
- Keep on file the timeline, the order numbers and transaction references, the status report and the saved logs.
- Put a figure on the outage with the downtime cost calculator, to see what prevention is worth.
On the Store plan, our WooCommerce maintenance tests checkout and payment after every update.
When to hand it over
- Customers are being charged and the orders stay unpaid, and you cannot see why.
- The checkout fails on a copy with a default theme and only WooCommerce active.
- You cannot make the fault happen yourself, and customers still report it.
- There is no staging copy and every test is made on the live store.
WP Ministry repairs a broken checkout as an Emergency Fix, a one-time job that needs no care plan: see emergency support.
Common questions
Should I close the store while I fix it?
Usually not. If only the payment step is broken, customers can still browse and fill a cart, and a notice tells them when to return. Close the checkout only if customers are being charged for orders that are not recorded.
Can I test without spending money?
On a staging copy, yes: put the gateway in its test or sandbox mode there. On the live store, leave the gateway in live mode and check without a card: its settings show a live connection with test mode off, the most recent real orders reached "Processing", and the provider's dashboard shows no notice on your account. Delete your test orders afterwards so they are not shipped or counted in your reports.
How do I know it is fixed?
Go through the checkout again in a private window, then watch the next real order by each payment method you offer. A paid order should reach "Processing", the status WooCommerce gives once payment is received, or "Completed" if it holds only virtual, downloadable products. Its payment should show in the provider's dashboard, and its notes should record that the order emails were sent. If you have a staging copy, place a test order there too, with the gateway in its test mode.
- Error fixHow to fix WooCommerce payment gateway errors
- GuideHow to maintain a WooCommerce store: before every update, every week, every month and before a sale
- GuideHow to migrate from Shopify to WooCommerce
- GuideHow to set up WooCommerce email notifications
- GuideHow to speed up a WooCommerce store
- GuideHow to update WooCommerce safely: before, on staging, on the live store, and if it breaks

