WooCommerce fixes / orders auto cancelling

WooCommerce Orders Auto-Cancelling? Causes & Fix

Orders come in, sit on Pending payment, and then cancel themselves — often almost exactly an hour later, and often after the customer has already paid. This isn't WooCommerce misbehaving. It's a timer doing precisely what it was told. Here's how to find out what it's racing against.

Last updated: 16 Jul 2026 · ~6 min read

Quick answer

The most common cause is the hold stock window at WooCommerce → Settings → Products → Inventory → Hold stock (minutes), which defaults to 60. Any unpaid pending order older than that gets cancelled automatically — so if your gateway's confirmation is slow or broken, WooCommerce cancels the order before the payment news arrives. Fix the confirmation first; widen the window only as a stopgap.

What auto-cancelling actually is

When stock management is on, WooCommerce reserves stock for unpaid orders — but not forever. The Hold stock (minutes) setting decides how long. Past that, a scheduled job sweeps up pending orders created through checkout and cancels them, releasing the stock back to the shop. Default: 60 minutes.

That's sensible behaviour for abandoned carts, and quietly catastrophic when payment confirmation is delayed. The customer paid, their bank is happy, and their order says Cancelled — because from WooCommerce's side, nothing ever confirmed the money arrived, and the hour ran out. The timer isn't the bug. It's just the thing holding the knife.

The most common causes (most likely first)

  1. The hold stock window expires before the gateway confirmation landsThe order was paid, but the webhook or IPN was slow, retried, or arrived after the sweep. Tell: cancelled orders whose age at cancellation is suspiciously close to your hold stock value — and a successful charge sitting in the gateway dashboard for an order marked Cancelled.
  2. The confirmation never arrives at allA broken Stripe webhook or PayPal IPN means the order was never going to move off pending, and hold stock simply executes it on schedule. Tell: it's every order through one gateway, not the occasional one, and the gateway's webhook log shows failures.
  3. The payment method is legitimately slower than the windowDelayed and asynchronous methods — SEPA Direct Debit, iDEAL, Klarna, Multibanco, Boleto, bank transfer — can take hours or days to confirm. A 60-minute window guarantees they cancel. Tell: only certain payment methods are affected, and they cancel with mechanical regularity.
  4. Hold stock is set far too low, or overriddenSomeone set it to 5 or 10 minutes, or a plugin filters the value. Tell: orders die within minutes of checkout — far too fast to be a webhook race. Check the field itself before you check anything else.
  5. Something other than WooCommerce is cancelling themAbandoned-cart, order-cleanup, fraud-screening and inventory plugins all cancel orders on their own schedules. Tell: the order note names a plugin or a user rather than reading like WooCommerce's own automatic cancellation — and the timing doesn't match your hold stock value at all.
  6. A cron backlog fires the sweep in burstsWordPress cron only runs when the site gets traffic, so on a quiet store the cancel job can sit and then run late — cancelling a batch of orders in one clump. Tell: cancellations arrive in bursts rather than steadily, and WooCommerce → Status → Scheduled Actions shows overdue jobs.

Where to look first

Don't want to find out from a customer whose paid order says "Cancelled"?

The nasty part is that hold stock is the symptom, not the disease — widen the window and you just move the failure an hour later. DiagnosticIQ's free dashboard checks the thing the timer is racing: whether your gateway's confirmations are actually arriving, and how long they're taking to get there. It names the gateway and the delay rather than leaving you to reverse-engineer timestamps out of cancelled orders. And it keeps watching, so a webhook that starts failing on a Friday doesn't cost you a weekend of orders.

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 and leave it past your hold stock window — it should reach Processing on its own well before the deadline, and a full day should pass with no new automatic cancellations behind successful charges in your gateway dashboard.

Frequently asked

The order cancelled but the customer paid. What now?

Their money is safe — a cancelled WooCommerce order doesn't refund anything. Confirm the charge in your gateway dashboard, then set the order back to Processing manually and fulfil it. Then fix the confirmation, because it will happen again.

Should I just turn hold stock off?

It stops the cancellations, but it also means abandoned carts hold your stock indefinitely — which brings its own overselling problems. Treat it as a stopgap while you fix the gateway confirmation, not as the fix.

What's a sensible hold stock value?

Long enough to outlast your slowest legitimate payment method. If you accept delayed methods like bank transfer or SEPA, an hour is far too short — but the real answer is to stop relying on the timer to paper over a slow webhook.

Does cancelling an order restore the stock?

Yes — that's the whole point of the window. Which is why a wrongly cancelled paid order also quietly puts an item back on sale that you've already sold.

>_
John O'Keane — Founder, Prima Digital · LinkedIn
Contributions by David Zhang · LinkedIn
I build DiagnosticIQ, the WooCommerce diagnostic plugin, and I've watched a store lose a morning of paid orders to a 60-minute hold stock window and a webhook that had been quietly failing since the night before.