Мы допиливали RetailTransactionServiceInventory.inventoryLookup чтоб возвращал остатки с учетом неразнесенных проводок от других покупок. Так хотя бы остатки только на 2 минуты отстают (дефолтный интервал для upload).
Альтернатива крутить Post Inventory в батче (не знаю как по русски...). Не советую
ЗЫ Вообще вся история с резервацией и с закрытием-разноской смен реализованна отвратительно.