WooCommerce Orders Stuck on Pending Payment: What It Means
WooCommerce orders are stuck on "Pending payment" — they appear in your order list but never move to Processing, even when some customers insist they paid. Some of these are normal abandoned checkouts; others mean payment confirmations are not reaching your site.
Common signs of this issue
- WooCommerce orders are stuck on Pending payment and never change to Processing on their own.
- A customer says they paid and has a receipt from PayPal, Stripe, or their bank, but their order still shows Pending payment.
- The money appears in your payment provider account, but the matching order in WooCommerce was never updated.
- Pending orders are later switched to Cancelled automatically, sometimes with a note about an unpaid order being cancelled after a time limit.
- Stock is reduced or reserved for orders that never complete, or products show out of stock when they should not.
- Customers did not get an order confirmation email and you did not get a New order email.
Safe checks you can do yourself
None of these require sharing passwords with anyone.
- Start by separating two groups. Compare pending orders with your payment provider's dashboard for the same time and amount. Pending orders with no matching payment are almost always customers who reached the payment step and left. Pending orders with a matching successful payment are the real problem.
- Open a stuck order and read the Order notes. A healthy paid order usually has a note from the gateway saying the payment was received or the charge succeeded. If there is no gateway note at all, the confirmation never reached your site.
- In your payment plugin's settings (for example under WooCommerce, Settings, Payments, then the gateway's Manage link), look for anything about webhooks, IPN, or notifications. Many gateways show whether a webhook is configured and when one last arrived. Wording and layout differ between gateways and versions.
- In your payment provider's own dashboard, look for a webhooks, events, or notification history area. Failed deliveries to your site — often with an error code like 403, 404, 500, or a timeout — are strong evidence that your site is blocking or mishandling the callback.
- Check whether you have added or changed a security plugin, firewall, Cloudflare rule, or bot protection recently. These sometimes block the automated requests gateways send, because they do not come from a normal browser. The same goes for maintenance mode or a coming-soon page left on.
- Check caching. Page caching plugins and host caches should not cache checkout, cart, account, or the gateway's callback address. If a caching plugin was just installed or reconfigured, it is a prime suspect.
- Look at WooCommerce, Settings, Products, Inventory and the Hold stock (minutes) setting. When it is set, unpaid Pending orders are cancelled after that time. That is intended behaviour for abandoned checkouts, but if paid orders are being cancelled, it means the confirmation arrived late or never.
- Confirm you are in live mode, not test or sandbox mode, and that the API keys in WooCommerce belong to the same account you are checking in the provider's dashboard. A mismatch means the provider sends confirmations for a different setup.
- Place a small real test order and watch it: does the order note appear within a minute or two, and does the status change? Note the time so it can be matched against provider and server logs.
What this usually means
Pending payment is the status WooCommerce gives an order the moment it is created, before any money is confirmed. Every time a customer fills in checkout and is sent to the payment step, an order is born. If they close the tab, their card is declined, or they change their mind, that order stays Pending and is later cancelled. A handful of these every week is completely normal for any shop and is not a fault.
The real problem is paid orders that stay Pending. For most gateways, WooCommerce only learns a payment succeeded when the payment provider sends a message back to your site — a webhook, IPN, or return callback. If that message is blocked by a firewall or security plugin, served from cache, sent to an old address after a domain or HTTPS change, rejected because of mismatched keys, or never configured in the first place, the money arrives but the order never updates. Exactly how each gateway confirms payments varies, so its own documentation is the final word.
Knock-on effects follow from there. Because the order never reaches Processing, the confirmation and New order emails are never sent (see WooCommerce emails not sending), stock may be held or released incorrectly, and the hold stock timer may cancel an order that was actually paid. If customers cannot get as far as paying, that is a different problem — see WooCommerce checkout not working or payments declined at checkout.
What not to do
- Don't mark orders as Processing or Completed just because they are pending. Only do that after confirming the payment in your provider's dashboard.
- Don't ship goods for a Pending order without checking the payment first. Pending with no matching payment usually means nobody paid.
- Don't panic about a few pending orders with no payment behind them. Abandoned checkouts are a normal part of running a shop.
- Don't turn off your firewall or security plugin entirely to test. Ask for a narrow exception for the gateway instead.
- Don't delete old pending orders in bulk before comparing them with your payment records. Some may be paid orders you need to fulfil.
- Don't regenerate or swap API keys on a live shop without knowing where else they are used.
When to get help
If paid orders keep getting stuck, if your payment provider shows failed webhook deliveries with errors you cannot trace, or if orders are being cancelled after customers paid, it is worth bringing in help quickly. Every stuck order risks an unfulfilled sale, a confused customer, and a possible chargeback. Someone experienced will match provider event logs against your server's access and error logs, find exactly which layer — firewall, cache, redirect, or plugin — is swallowing the callback, and fix it without weakening your security.
Glenn at WebsiteSelfHelp traces stuck WooCommerce payments for small shops and gets orders updating on their own again. Send him a quick description of which gateway you use and what you are seeing, and you will get an honest read on the cause before anything is touched — no passwords required to start.
Not sure what to do next?
Answer a few short questions and we'll point you to the safest next step — DIY, a freelancer, or a direct review. No passwords required.
Is this a business website? If this issue may be costing you leads, sales, or trust, you may want a direct review instead of trial and error.
Frequently asked questions
What does Pending payment mean in WooCommerce?
It means the order was created but WooCommerce has not received confirmation that it was paid. It is the normal starting status for every order, and it only becomes a problem when orders that really were paid stay stuck there.
Why are WooCommerce orders stuck on Pending payment when the customer paid?
Usually the payment provider's confirmation message never reached your site. Firewalls, security plugins, caching, wrong API keys, test mode, or a changed site address can all block or break that callback.
Are pending payment orders abandoned carts?
Many are. If there is no matching payment in your provider's dashboard, the customer most likely left at the payment step or their payment failed. Those orders are normal and are usually cancelled automatically.
Why does WooCommerce cancel pending orders automatically?
The Hold stock setting cancels unpaid Pending orders after a set number of minutes so the stock is released. It is helpful for abandoned checkouts but a warning sign if paid orders are being cancelled.
Should I manually change pending orders to Processing?
Only after you have confirmed the payment in your payment provider's account. Doing it for unpaid orders means shipping goods for free.
How long should an order stay on Pending payment?
For a paid order, usually only seconds to a few minutes. If paid orders stay pending for hours, the payment confirmation is not getting through.
Can I fix stuck pending payment orders myself?
You can do the checks: compare with the provider's dashboard, read order notes, and look for failed webhook deliveries. Fixing firewall rules, server logs, or gateway configuration is often where outside help pays for itself.