Two-step transfer with in-transit accountability.

Inventory → Transfers → New. Pick the source and destination warehouses, then add products and quantities.
Clicking 'Dispatch' moves stock into an IN-TRANSIT state — it's out of the source but not yet in the destination. This is what catches lost-in-transit shrinkage.
The destination team clicks 'Receive' on the same transfer. Any shortfall is flagged as a transfer mismatch for follow-up.