Ritesh Kumar Giri
October 31, 2026
8 min read

WooCommerce Orders Stuck on Pending Payment: How to Fix

WooCommerce orders stuck on pending payment usually mean your gateway never told the store the payment went through. Here is how to find the break and fix it.

WooCommerce Orders Stuck on Pending Payment: How to Fix

Introduction

WooCommerce orders stuck on pending payment almost always mean one of two things: the customer never finished paying, or they did pay and the payment gateway's confirmation never reached your store. To fix it, check the order notes, match the order against your gateway dashboard, and then repair the webhook or callback that should move paid orders to Processing. Do not ship or ask the customer to pay again until you know which case you are in.

It is a stressful problem because money and stock are both involved, but it is very findable if you work in order. This guide walks through what the status means, how to tell an abandoned order from a paid one, and the fixes that apply to most gateways.

What does "Pending payment" mean in WooCommerce?

According to the WooCommerce order statuses documentation, Pending payment means the order has been received but no payment has been made, and such orders are generally awaiting customer action. The normal path for a card or UPI payment is Pending payment, then Processing once the gateway confirms the money, then Completed once you have shipped.

The status sits next to a few others that store owners often mix up. Here is how they differ, based on the same documentation:

WooCommerce order statuses that get confused with Pending payment
StatusWhat it meansWhat you should do
Pending paymentOrder received, no payment made yetCheck whether the customer actually paid before doing anything
On holdAwaiting payment confirmation; stock is reducedConfirm payment by hand (common with bank transfer), then update the status
FailedPayment failed or was declinedRead the decline reason in the order notes; stock is returned if it was reduced
ProcessingPayment received and stock reducedPack and ship, then mark Completed
DraftTemporary checkout record from the block-based checkoutNothing; WooCommerce cleans up inactive drafts with a daily task

A single pending order is not a fault; a shopper who closes the payment tab leaves one behind. The problem is pending orders where the customer says they paid, or where your gateway shows money WooCommerce does not.

Step 1: Did the customer actually pay?

Start with the money, not the plugin settings. The WooCommerce troubleshooting orders guide gives a clear order of checks for a payment that times out or stays pending:

  1. Note the order number, its status, the time of the attempt and any message the customer saw at checkout.
  2. Open the order and read the order notes for a transaction ID, decline reason, timeout or status change.
  3. Log in to your payment gateway dashboard and search for a matching transaction.

The guide is firm on one point that saves a lot of trouble: if the customer is unsure whether they were charged, do not let them retry until you have confirmed the first attempt did not create a charge or authorisation.

Either there is no matching transaction (the payment was abandoned or failed early), or there is a successful charge WooCommerce never recorded. The second one is the real bug.

Step 2: Read the order notes properly

Gateway plugins write timestamped errors, decline reasons and status updates into the order notes. WooCommerce's guide points out that missing notes are a clue in themselves. If a paid order has no payment notes at all, the gateway most likely failed to talk back to your store, or the payment process was interrupted before it finished.

What we look for in practice:

  • A transaction ID with no status change after it. The gateway created the payment, but the confirmation step did not land.
  • A decline or error message. This is a real failed payment, not a sync problem. Contact the customer with a fresh payment link.
  • No gateway notes at all. Treat this as a communication problem between the gateway and your site, and move to the webhook checks below.

If your gateway plugin has a debug or logging option, turn it on, place one test order and read the new entries under WooCommerce > Status > Logs. The troubleshooting guide recommends switching verbose logging off again once testing is done.

Step 3: Fix the webhook or callback

Most online gateways move an order to Processing by sending your site a message after payment, called a webhook, callback or notification. If it never arrives, or your site rejects it, the order sits on Pending payment while the money sits in your gateway account.

WooCommerce's guide notes that some gateways need webhooks set up by hand while others handle it automatically, and gives Stripe for WooCommerce as an example that needs manual webhook configuration. Whatever gateway you use, check these in its dashboard and plugin settings:

  • The webhook URL points at the live domain. After a domain change, an HTTP to HTTPS move or a switch from www to non-www, old webhook URLs are a frequent cause.
  • Live and test keys are not mixed. A webhook registered only in test mode never hears about real orders.
  • The gateway shows successful deliveries. If your gateway keeps a webhook log, error responses there mean your site is receiving the call but refusing it.
  • Nothing on your server is blocking the request. Security plugins, firewalls and some caching setups can block or interfere with incoming requests from the gateway. Check them if the gateway log shows errors or timeouts.

The guide's advice for a charge that succeeded while the order stayed pending is to follow your gateway's own steps for checking or re-sending the webhook or callback, then reconcile the order before fulfilling it.

If you are still choosing a provider, our guide to picking a WooCommerce payment gateway in India covers what to compare before you commit.

Step 4: If you still use PayPal Standard, check IPN

Older stores sometimes still run PayPal Standard, which WooCommerce now describes as deprecated and hidden by default. It confirms payments through PayPal Instant Payment Notifications (IPN), and WooCommerce's PayPal Standard documentation is direct about the symptom: if you are getting payments but orders stay pending, the IPN is failing.

The checks it lists are:

  • In your PayPal account, set the IPN URL to https://example.com/?wc-api=WC_Gateway_Paypal, with your own domain in place of example.com, and make sure receiving IPN messages is switched on.
  • Make sure the email address in the WooCommerce PayPal settings is your primary PayPal email. If it does not match the address IPN sends back, the response is rejected.
  • Check the IPN history page in your PayPal account to see whether messages were sent and what happened to them.
  • If everything looks right, speak to your host. The documentation notes that some hosts are known to have problems with IPN.

Free quote · reply within 24 hours

Stuck with a slow or broken WordPress site?

Tell us what's wrong. You get a fixed written quote to fix it, or rebuild it, within 24 hours.

WhatsApp us

Step 5: Stop paid orders being cancelled while you investigate

There is a second trap here. WooCommerce's order statuses documentation explains that when the Hold Stock setting is on, WooCommerce automatically cancels eligible Pending payment orders created at checkout once the configured time limit passes, and releases the held stock. If paid orders are stuck as pending, they can be cancelled before you reconcile them.

The PayPal Standard documentation suggests a workaround while you debug: go to WooCommerce > Settings > Products > Inventory and leave the "Hold Stock (minutes)" field empty, so unpaid orders are not cancelled automatically. Remember to put the value back once the fix is confirmed, otherwise abandoned orders will hold stock indefinitely.

Step 6: Reconcile the orders you already have

Once the cause is fixed, clear the backlog carefully:

  1. Export or list every Pending payment order from the affected period.
  2. Match each one against the gateway dashboard by amount, time and customer email.
  3. For matched orders, re-send the webhook from the gateway if you can. If not, add an order note with the transaction ID and change the status to Processing by hand.
  4. For unmatched orders, leave them pending or cancel them. If stock was held, check it has been released.
  5. Email any customer who was left waiting to confirm their order.

Then place a real low-value test order on the live site and watch it move from Pending payment to Processing on its own.

How do you stop it happening again?

Stuck orders often start after a change such as a plugin update, a new security plugin, a domain move or a hosting migration. A few habits help:

  • Test payment changes on a staging copy first. Our guide to setting up a WordPress staging site explains how. WooCommerce also warns that a staging site that is not fully isolated can process live orders by accident, so keep staging on test keys.
  • Re-check webhook URLs after any change to the domain, SSL or www setting.
  • Keep checkout fast. WooCommerce's troubleshooting guide notes that slow server responses can lead customers to resubmit the checkout form and create duplicate orders. Our WooCommerce speed guide covers where to start.

When we built the WooCommerce store for Mahhika, a wedding fashion brand, the checkout supported multiple payment gateways. In that kind of setup, every gateway's confirmation path needs testing before launch.

Frequently asked questions

Why are my WooCommerce orders pending when the customer has paid?

Usually the gateway took the payment but its confirmation (a webhook, callback or PayPal IPN) did not reach your store or was rejected. Check the order notes, find the transaction in the gateway dashboard, then repair or re-send the webhook. Confirm the payment before you ship.

Should I change pending orders to Processing by hand?

Only after you have matched each order to a successful transaction in your gateway dashboard. Add the transaction ID as an order note when you do it. Changing statuses without checking risks shipping orders that were never paid.

Do pending payment orders cancel themselves?

Yes, if the Hold Stock setting is on. WooCommerce cancels eligible pending orders created at checkout after the time limit you set and releases their stock. Leave that field empty temporarily if you are investigating paid orders stuck as pending.

Is a pending order with bank transfer a problem?

Not necessarily. WooCommerce's guidance says offline methods such as direct bank transfer or cheque need you to confirm the payment yourself before moving the order on. Check your bank statement, then update the status.

Conclusion

If your WooCommerce orders are stuck on pending payment, work from the money outwards: confirm the charge in the gateway, read the order notes, fix or re-send the webhook, pause automatic cancellation while you reconcile, and finish with a live test order. If you would rather have someone check it for you, our ecommerce development team has handled payment setups across 100+ projects delivered. Message us on WhatsApp at +91 73482 28167 and you get a fixed written quote within one working day.

Free quote · reply within 24 hours

Want a fixed price for your project?

Tell us what's wrong. You get a fixed written quote to fix it, or rebuild it, within 24 hours.

WhatsApp us

Keep reading on WordPress & WooCommerce