When exactly is stock reserved during the Magento order process?

If a client is placing an order on your store when does the stock against the products they are ordering get reserved? The answer is simple the stock is reserved when the order goes into the 'pending' order status. This means that the stock level for the products will be reduced and allocated to the order.

So what is the order pending status?

The pending status proceeds the processing state. Usually 'Processing' happens once payment has been confirmed - this might be manually or more commonly when a successful payment has been made through the payment gateway.

Pending indicates the order has been placed but we are still waiting for the payment to come through.

So what is this significant?

Normally there is nothing to worry about. A customer places an order, it momentarily goes into a pending state while the customer is being asked to complete payment details on the payment gateway. Once payment has been confirmed the status is changed to processing and ready for you to fulfil the order.

However, consider this. What happens if the customer drops out of the order process at the payment gateway? You then have an order that is still in a pending state with stock allocated against it. This stock cannot be allocated to another order until you release it.

What should you do? 

Regularly check pending orders (also include 'Payment Pending', 'PayPal Pending' and other pending states) and if they are not likely to convert into a paid order then cancel them. Cancelling an order will release the stock ready for someone else to order.

You could look at making this part of the daily customer service checks or you may want to look at automating the process. Here's an article be Inchoo on making some code amends to change the status of pending orders after 90 mins.