WooCommerce fixes / orders stuck on pending payment

WooCommerce Orders Stuck on Pending Payment? Causes & Fix

If your WooCommerce orders sit on Pending payment and never move to Processing, the store almost always took the customer to checkout but never heard back that the payment cleared. Here's how to find the exact reason and fix it.

Last updated: 16 Jul 2026 · ~6 min read

Quick answer

The most common cause is a payment gateway that never sent the confirmation back to WooCommerce — a broken Stripe webhook or PayPal IPN. Open your gateway's webhook log, look for a failed delivery, and repair the endpoint. Note that bank transfer and cheque orders land on On hold, not Pending — so if yours are on Pending, that's not the manual-payment flow, it's an unfinished checkout.

What "pending payment" actually means

Pending payment means the order was created but WooCommerce never got confirmation that payment cleared. Until the gateway says the money arrived, the order won't move to Processing — so a stuck order is almost always a communication problem, not a lost sale.

The most common causes (most likely first)

  1. The gateway webhook / IPN never reached your storeStripe webhook or PayPal IPN failed — the payment cleared on their side but WooCommerce was never notified. By far the #1 cause.
  2. The customer abandoned a redirect gatewayThey were sent to PayPal/an off-site page and closed it before returning. Order stays pending, no payment taken.
  3. You're reading On hold as Pending (bank transfer / cheque)BACS and cheque orders go to On hold — "Awaiting BACS payment" — not Pending. That one is working as designed. A BACS order actually sitting on Pending means checkout was never completed.
  4. A security plugin or firewall is blocking the callback URLA WAF or security plugin blocks the gateway's IPs, so the confirmation request never gets through.
  5. Test-mode keys on a live store (or key-mode mismatch)The gateway is in test mode, or the webhook signing secret doesn't match the store's live/test mode.

Where to look first

Not sure which cause is yours?

That's the slow part — checking each gateway, log and setting by hand. DiagnosticIQ's free dashboard checks all of these in one screen, and the AI names the exact cause — down to "Stripe webhook returning 401 in live mode" — in about 30 seconds. And it keeps watching after the fix — so if this breaks again, you hear it from DiagnosticIQ, not from a customer.

Get the free plugin

Made by Prima Digital — the team behind this guide. Free forever; no card to install.

How to know you fixed it

Verify

Place a test order — it should move Pending payment → Processing on its own, with a fresh 200 in the gateway's webhook log.

Frequently asked

Was the customer charged?

Only if the gateway shows a successful charge — if it does, mark the order complete after confirming there.

Will I lose the order?

Not immediately — WooCommerce holds pending orders until the hold-stock window, so fix the webhook and recover them.

Do pending orders auto-cancel?

Yes, after the hold-stock limit under WooCommerce → Settings → Products → Inventory.

>_
John O'Keane — Founder, Prima Digital · LinkedIn
Contributions by David Zhang · LinkedIn
I build DiagnosticIQ, the WooCommerce diagnostic plugin, and I've spent more hours than I can count untangling stuck pending-payment orders for real store owners.