Troubleshooting order problems

How to diagnose and fix common WooCommerce order issues: missing orders, stuck statuses, wrong emails, and more.

Time
7 min read
Difficulty
Beginner
Last updated
Updated
Share

Something's gone wrong with an order. Don't panic: most order problems have straightforward solutions. This guide covers the most common issues and walks you through fixing them.

Troubleshooter

What's wrong with the order?

What's the problem?

Problem: A customer paid but no order appeared

This is one of the most alarming situations. Here's what to check:

Check your payment gateway dashboard first. Log in to Stripe or PayPal and look for the payment. If it's there, the money was collected.

Search WooCommerce Orders for "Failed" or "Pending" orders. Go to WooCommerce → Orders and filter by "Failed" status. The order may exist but with the wrong status.

Check the customer's email. Ask them for their order confirmation email. If they received one, the order exists. It may just be hard to find (try searching by their email).

Read the order notes. If you do find the order, its notes often carry the gateway's own message: a transaction ID, a decline reason, or a timeout. No payment notes at all is itself a clue: it usually means the gateway never finished talking to your site.

Look at WooCommerce logs. Go to WooCommerce → Status → Logs and look for entries from the payment gateway, on the day the order was placed. Logs only exist if logging was enabled in the gateway's settings, and only for transactions since then.

If payment was taken and no order exists: Contact us. We'll check the gateway's webhook or callback settings. This is usually the cause.

If payment was taken but no order exists, do not process another payment

Contact the customer to let them know you're investigating. Do not ask them to pay again until you've confirmed no duplicate charge exists.

Problem: Order is stuck in "Pending payment"

"Pending payment" means WooCommerce received the order but payment hasn't been confirmed. This can happen when:

  • The customer abandoned checkout partway through.
  • The payment gateway notification (webhook or callback) didn't reach your site.
  • The customer paid by bank transfer or cheque, which you have to verify by hand. Those methods usually leave the order On hold rather than Pending payment.
  • Your gateway is set to authorise only, not authorise and capture, so the money is held but never taken. The order notes will say the payment was authorised but not captured.
How a WooCommerce order moves between statusesThe routes an order takes between its statuses and what causes each move, showing that cancelling an order never issues a refund on its own: a refund is always something you process separately.declinedcancelled, never paidpayment confirmedyou confirm receiptcancelled once paidyou refund it separatelyyou refund ityou fulfill ityou refund itFailednot chargedPendingpaymentnot paid yetOn holdwaiting to clearCancelleddoes not refund on its ownProcessingpaid, needs fulfillingRefundedfull refund issuedCompletedfulfilled and finished

Cancelling stops an order; it never issues a refund on its own. If the customer had already paid, you process the refund separately, and that is what records the order as Refunded.

Read this as text

An order starts as Pending payment: created, but payment not received yet. If the payment is confirmed it becomes Processing. If it is declined the order becomes Failed, and the customer typically needs to try again with a different card or payment method.

On hold sits alongside those as the other unpaid status: payment has been submitted but not confirmed, most often a direct bank transfer or a check that has not cleared. Once you confirm the money arrived, you change it to Processing yourself.

Processing is where your work happens: payment is confirmed and the order is waiting for you to fulfill it. Once you have, it becomes Completed.

Two statuses sit off that line, and they are the ones people mix up. Cancelled is reached from an order that was cancelled before payment, or from Processing when the order is stopped before fulfillment. Refunded is what WooCommerce records once you process a full refund, from Processing, from Completed, and from Cancelled too, because cancelling does not issue a refund on its own. If the customer had already paid, that refund is still yours to process separately.

Two things are not drawn here. Draft is the temporary record the block checkout creates before an order is submitted, and WooCommerce deletes the inactive ones daily. Trash is where a deleted order goes, not a step in the life of an order. WooCommerce will also let you set any status by hand from the order page. These are the routes orders normally travel, not a list of the only changes the software allows.

What to do:

  1. Check your payment gateway to see if the payment was actually taken. If the customer isn't sure whether they were charged, confirm that before letting them retry, so you don't end up with a duplicate charge.
  2. If payment was received, manually update the order status to "Processing."
  3. If payment was not received, the order is genuinely pending. You can contact the customer, or leave it, with the Hold stock (minutes) setting enabled, WooCommerce cancels eligible pending checkout orders once that limit passes and releases the stock they were holding.

Problem: Customer isn't receiving order emails

Check WooCommerce → Settings → Emails. Confirm the relevant email (e.g., "Processing order") is enabled.

Check that the email address on the order is correct. Open the order and verify the billing email.

Ask the customer to check their spam folder. WooCommerce emails often land in spam.

Check the email log. WooCommerce records every transactional email attempt. Go to WooCommerce → Status → Logs and open the log source named transactional-emails. It tells you whether each email was sent, failed, disabled or skipped, which separates "WooCommerce never tried" from "WooCommerce tried and it didn't arrive."

Send a test email. Go to WooCommerce → Settings → Emails, find Email preview, and use Send a test email. If the test arrives, the issue may be specific to that customer's email provider.

Check your site's email configuration. WooCommerce sends mail through WordPress's built-in mail function, which many hosts handle badly. Make sure the "From" address on the Emails screen is on your own domain, and consider a dedicated SMTP provider: WooCommerce recommends this itself. A plugin like WP Mail SMTP connects one up. Contact us if needed.

Unpaid orders don't trigger an email

If an order is still in Pending payment status, WooCommerce sends nothing. That's expected, not a fault.

Problem: Orders showing wrong or confusing amounts

If the order total doesn't look right:

  • Check whether taxes were included or excluded in the displayed price.
  • Check if a coupon was applied (the coupon deduction is shown in the order).
  • Verify the shipping cost was calculated correctly.
  • Look at the "Order notes" section for any adjustments made after the fact.

Problem: Stock levels aren't updating after orders

Stock tracking has to be switched on in two places. If either one is off, WooCommerce won't reduce stock when an order comes in.

Check the store-wide setting. Go to WooCommerce → Settings → Products → Inventory and confirm Enable stock management is ticked. WooCommerce also recommends leaving Hold stock (minutes) set: 60 is the default.

Check the product. Go to Products, open the product, scroll to the Product data section, and on the Inventory tab confirm Track stock quantity for this product is ticked. Then check the Quantity field. This box only appears when the store-wide setting above is on.

For variable products, check the right level. You can track stock at the product level, the variation level, or a mixture. A variation with its own Manage stock? box ticked keeps its own count; a variation without it pulls from the product-level stock, if that's enabled.

Check the order status. Stock is reduced for orders in Processing and On hold. Draft and Pending payment orders only reserve stock, for as long as the Hold stock setting allows. When an order moves to Failed or Cancelled, stock already reduced goes back to inventory, and the order notes record it.

Common questions

A customer says they were charged twice. What do I do?

Log in to your payment gateway (Stripe/PayPal) and check the transaction history for that customer's email or card. If there are two charges, issue a refund for the duplicate immediately. Then check WooCommerce Orders to see if two orders were created or just one.

Before assuming it's a bug, WooCommerce suggests ruling out the ordinary explanations: ask the customer whether they meant to order twice, compare the order numbers (different numbers can mean two genuine purchases), and compare the timestamps and payment notes on each. Double-clicking Place Order, or refreshing checkout while it's processing, can produce two attempts, and a slow server makes that more likely. Contact us to investigate how the duplicate occurred.

Can I manually create an order for a customer?

Yes. Go to WooCommerce → Orders → Add order. You can add products, set prices, enter customer details, apply coupons and fees, and set a status. Choose Pending payment if the customer still needs to pay. Then use Order actions → Send order details to customer to email them a link to the payment page. This is useful for phone orders, wholesale customers, or correcting a broken order.

Two things to know: WooCommerce accepts only one payment per order, and if you assign the order to a registered customer account, only that customer can pay for it after logging in. Anyone else opening the link, including you, sees "This order cannot be paid for."

The order confirmation email went to the wrong address. Can I resend it?

Yes, for the order details. Fix the billing email on the order first, then open the Order actions dropdown on the order screen and choose Send order details to customer. WooCommerce emails the order details plus a payment link to the address on the order.

The Order actions dropdown has only two email actions: Send order details to customer and Resend new order notification, and the second one goes to your store's own recipients, not to the customer. There's no built-in action for re-sending a specific customer status email, such as the Processing order or Completed order notification. Ask us if you need proper resend controls.

Why do some orders show as 'Processing' even after I've marked them 'Complete'?

Worth knowing first: orders never move from Processing to Completed on their own. You mark them Completed after you ship. The exception is an order containing only virtual and downloadable products. So if you're seeing orders that look stuck rather than reverting, that's normal.

If an order genuinely goes back to Processing after you completed it, that points at something else writing to the order (often a fulfilment or sync integration) or at a cached page showing you the old status. Clear your site cache and check which integrations are active. Contact us if the problem persists.

Learn more

Was this page helpful?

Go deeper on chykalophia.com

Need a hand?

Stuck? We'll help.

Email us with your website address and a screenshot if you can, and we’ll take it from there.

Last updated