Inventory Management
Vectis tracks inventory across all your warehouses with real-time updates, atomic reservations, and full audit trails.
Inventory Model
Quantities
For each product at each location, Vectis tracks:
| Quantity | Definition |
|---|---|
| On Hand | Physical units in the warehouse |
| Reserved | Units allocated to orders (not yet shipped) |
| Available | On Hand - Reserved (what you can sell) |
| Incoming | Units on purchase orders (not yet received) |
Locations
Inventory is tracked at multiple levels:
Warehouse → Zone → Aisle → Rack → Shelf → Bin
You can use as many or as few levels as needed. Simple operations might just use Warehouse. Complex operations use full bin-level tracking.
Viewing Inventory
Inventory List
Inventory → Stock Levels shows:
- Product SKU and name
- Quantity by warehouse
- Total across all warehouses
- Reorder point status
Product Detail
Click any product to see:
- Quantity breakdown by location
- Reservation details (which orders)
- Recent adjustments
- Movement history
Warehouse View
Warehouses → [Warehouse] → Inventory shows:
- All products at that warehouse
- Location assignments
- Bin-level quantities
Adjustments
Inventory adjustments change On Hand quantity with a reason code.
Making an Adjustment
- Go to Inventory → Adjust
- Select warehouse and location
- Enter SKU or scan barcode
- Enter new quantity or adjustment amount
- Select reason code
- Add notes (optional)
- Submit
Reason Codes
Every adjustment requires a reason:
| Code | Use Case |
|---|---|
recount | Physical count differs from system |
damage | Units damaged, removed from sellable |
shrinkage | Unexplained loss (theft, miscount) |
found | Units found that weren’t in system |
return | Customer return added to stock |
sample | Units removed for samples |
initial_stock | Initial inventory load |
Custom reason codes can be added in Settings.
Bulk Adjustments
For cycle counts or full inventory:
- Export current inventory to CSV
- Update quantities in spreadsheet
- Import via Inventory → Import
- Review changes before applying
- All adjustments logged with
recountreason
Transfers
Move inventory between locations within a warehouse or between warehouses.
Intra-Warehouse Transfer
Move from one bin to another:
- Inventory → Transfer
- Select source location
- Select destination location
- Enter SKU and quantity
- Submit
Instant transfer — no transit time.
Inter-Warehouse Transfer
Move between warehouses:
- Inventory → Transfer
- Select source warehouse
- Select destination warehouse
- Enter SKU and quantity
- Submit — creates transfer order
Transfer order workflow:
pending→in_transit→received- Source warehouse: quantity decremented immediately
- Destination warehouse: quantity added on receipt
Reservations
Reservations hold inventory for orders.
How Reservations Work
- Order is allocated
- Vectis creates reservation:
{order_id, sku, quantity, warehouse} - Available quantity decreases
- On Hand stays the same
When order ships:
- On Hand decremented
- Reservation deleted
- Available stays the same (already reflected)
When order cancelled:
- Reservation deleted
- Available increases
- On Hand unchanged
Viewing Reservations
Inventory → Reservations shows:
- All active reservations
- Linked order
- Age (how long reserved)
- Warehouse and location
Old reservations (orders stuck in processing) appear highlighted.
Reservation Expiration
Reservations don’t expire by default. Orders must be completed or cancelled.
For abandoned cart scenarios (orders created but never paid), configure expiration in Settings → Inventory:
- Expire reservations after X hours if order still
pending - Releases inventory back to available
Reorder Points
Set minimum stock levels to trigger alerts.
Configuration
Per product, per warehouse:
- Go to product detail
- Click Reorder Settings
- Set reorder point (alert when Available drops below)
- Set reorder quantity (suggested order amount)
Alerts
When Available < Reorder Point:
- Product appears in Inventory → Low Stock
- Notification sent to configured users
- Webhook fired (
inventory.low_stock)
Receiving
When inventory arrives:
Against Purchase Order
- Inventory → Receive
- Select purchase order
- Scan/enter items received
- Note any discrepancies
- Submit
Quantities added to On Hand. Incoming quantity decremented.
Blind Receive
Without a purchase order:
- Inventory → Receive → Blind
- Enter SKU and quantity
- Select reason (
return,found,initial_stock) - Submit
Multi-Channel Sync
Vectis pushes Available quantity to sales channels:
| Channel | Sync Method | Frequency | Status |
|---|---|---|---|
| Shopify | Inventory Levels API | Real-time | Available |
| WooCommerce | Stock endpoint | Real-time | Available |
| Amazon | Inventory Feed | Every 15 min | Coming Soon |
| eBay | Inventory API | Every 15 min | Coming Soon |
Inventory Buffers
Optionally hold back inventory from channels:
- Safety stock: Don’t sell last N units
- Channel allocation: Reserve X% for specific channel
Configure in Settings → Channels → [Channel] → Inventory.
Audit Trail
Every inventory change is logged:
- What changed (SKU, location, quantity)
- Who made the change (user or system)
- When it happened
- Why (reason code, linked order, linked transfer)
View history:
- Per product: Product detail → History
- Per location: Warehouse → Location → History
- Global: Reports → Inventory Audit
Audit logs are immutable and retained for 7 years.
API Operations
# Get inventory levels
GET /api/v1/inventory?warehouse=wh_abc&sku=WIDGET-BLU
# Adjust inventory
POST /api/v1/inventory/adjust
{
"warehouse_id": "wh_abc",
"sku": "WIDGET-BLU",
"quantity": 100,
"reason": "recount"
}
# Create transfer
POST /api/v1/inventory/transfer
{
"from_warehouse": "wh_abc",
"to_warehouse": "wh_xyz",
"items": [{"sku": "WIDGET-BLU", "quantity": 50}]
}
See API Reference for full documentation.