Pending payment orders and held stock
Last modified:
For stock management to work, the products you sell need to have Stock management enabled at product level.

When an order is placed in WooCommerce, it gets the status Pending payment. At this point, you don’t see any inventory change in the order notes, which is how WooCommerce handles the order statuses.
Stock quantity changes are added to the order notes once the order is considered paid. Read more about WooCommerce order statuses.
Even though the stock quantity is not yet reduced, the way WooCommerce operates is that it actually reserves (holds) the products in an order when the order is placed. This is so that a product can’t be sold out while a customer’s payment is being processed.
You can control this with the help of the WooCommerce Hold stock setting. If, for instance, you enter 5 minutes in the Hold stock (minutes) field, that is how long the product is held while awaiting order payment. If no payment is received within these 5 minutes, the order will be canceled and the product will be available for purchase again. Please note that this only applies to orders with the Pending payment status, not On hold. When setting the amount of minutes stock will be held, you need to consider setting enough time for a customer to finish their order. You also need to consider not setting it too long, so that it remains unavailable for others if the customer decides not to complete the order.

Changed pending payment orders
When a customer places an order in WooCommerce, a Pending payment order will be created. If the customer, for some reason, doesn’t complete the order or payment process at this point, it will remain in Pending payment status. If the customer returns to complete the order but makes any changes, or their session has expired, a new order will be created and used instead.
This will cause two orders from the same customer to exist in WooCommerce that can also have the same transaction ID from the payment provider. This in itself is not a problem, other than that it can be confusing, since the customer has only been charged for the Processing order. It can, however, cause some unforeseen issues. For instance, a coupon limited to one (1) use can wrongfully be deemed no longer valid. This is because it’s tied to the original pending payment order if that order hasn’t been canceled.
You can read more about this at Discount coupons wrongfully claimed to have already been used.
Why isn’t the order set to Cancelled?
If an order that isn’t finalized by the customer isn’t automatically set to Cancelled after the time set in the Hold stock setting has expired, it most likely means that your website has an issue with WP-Cron. WP-Cron is how WordPress handles scheduling time-based tasks in WordPress. You can read more about this at wordpress.org.
Note that WP-Cron can be turned off in WordPress, but a system cron can still run on the server. Ask your web developer or host for advice.