WooCommerce reduces stock as soon as an order reaches On hold. That is usually what you want, but WooCommerce’s built-in Hold stock (minutes) setting only expires orders sitting in Pending payment. It does not expire ordinary On hold orders.
If you accept Direct Bank Transfer (BACS), cheque, or another offline payment method, that difference matters. A customer places an order, the order goes On hold, the stock comes off the shelf, and if that customer never pays, the stock stays reserved until somebody notices and changes the order by hand.
StockLatch closes that gap. You pick which payment gateways to watch and one reservation timeout. When an order on a watched gateway enters On hold, StockLatch schedules a single check for the moment its deadline falls due. If the order is still unpaid and still On hold when that moment arrives, StockLatch cancels it.
StockLatch never edits product stock itself. It changes the order status to Cancelled, and WooCommerce’s own stock restoration then runs, exactly as it does when you cancel an order by hand. WooCommerce checks what it actually reduced for that order and restores only that, which means no double restoration and no fighting with other extensions.
StockLatch also deliberately does not offer a “release the stock but leave the order On hold” option. That sounds appealing, but it lets you sell the same units twice: the released stock goes to a new customer, then the original customer pays for an order you can no longer fulfil.
StockLatch makes no external requests. There is no telemetry, no usage tracking, no license check, and no connection to any third-party service. Its activity table stores only order IDs, gateway IDs, quantities, timestamps, states, and reason codes. No customer names, email addresses, postal addresses, or payment details are ever recorded in it.