You may experience this issue after upgrading to WooCommerce (ver. 2.0+), purchased order using PayPal payment never get complete, in fact, all purchased order status goes to “Cancelled” and in the admin area those orders showed up as cancelled with the message “Unpaid order cancelled – time limit reached”. This is very annoying, because you have to go to order list and manually change the status.
This problem is due to WooCommerce Inventory feature. WooCommerce by default will cancel orders that remain in pending status for an hour.
To resolve this go to the back-end of WordPress dashboard and navigate to the
“WooCommerce > Settings > Products > Inventory”.
The important item here is the Hold Stock (minutes) “60” minute interval, that is set default by WooCommerce for inventory Stock Management.
IF you are using Stock management for any reason, and has that item enabled (Manage Stock), simply delete the value (“60” or any other value) from the (Hold stock (minutes) field. This will ensure there is no timeout if PayPal (any other payment gateway like Stripe) tries to process the payment automatically. Even though the order should be processed within a minute or two. PayPal and WooCommerce do NOT play nicely with each other if “Hold Stock (minutes)” field has a value in it. So, simply leave it blank.