Multi-warehouse from day one
Most inventory tools treat multi-warehouse as an upgrade gate. OneAce ships it on the Free tier because pretending you only have one location is the fastest way to corrupt your counts.
If you have a back room, a Shopify pick-pack desk, and a 3PL holding your overstock, you already run three warehouses. Tools that paywall a second location push teams into a workaround: one combined SKU, manual notes about which shelf, and a quarterly reconciliation that takes a day. The combined-SKU approach hides the one number that actually matters — how much stock is reachable for a given order.
What 'day one' means
On a fresh OneAce workspace, the New Warehouse button lives in the same sidebar as New Item. No tier upgrade, no support ticket. Each warehouse gets its own bin tree, its own receiving lane, and its own counts. A transfer between warehouses is a first-class action — two reciprocal stock movements that hit ledger atomically, not two separate stock-out / stock-in flows that can desync if the second one fails.
The architecture choice that enables it
OneAce keeps stock as ledger rows, not as a denormalized 'on-hand' column. Every receipt, sale, count adjustment, and transfer writes a row keyed by (item, warehouse, bin, timestamp). The on-hand number is a sum, not a cached field. That's why multi-warehouse is free: the data model never assumed otherwise.
If you're consolidating from three spreadsheets, start by mapping each spreadsheet to a warehouse. Import each CSV with the warehouse column pre-filled. By the time the third upload finishes, you'll have one number for total on-hand and three numbers for where it actually is.