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:

QuantityDefinition
On HandPhysical units in the warehouse
ReservedUnits allocated to orders (not yet shipped)
AvailableOn Hand - Reserved (what you can sell)
IncomingUnits 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

  1. Go to Inventory → Adjust
  2. Select warehouse and location
  3. Enter SKU or scan barcode
  4. Enter new quantity or adjustment amount
  5. Select reason code
  6. Add notes (optional)
  7. Submit

Reason Codes

Every adjustment requires a reason:

CodeUse Case
recountPhysical count differs from system
damageUnits damaged, removed from sellable
shrinkageUnexplained loss (theft, miscount)
foundUnits found that weren’t in system
returnCustomer return added to stock
sampleUnits removed for samples
initial_stockInitial inventory load

Custom reason codes can be added in Settings.

Bulk Adjustments

For cycle counts or full inventory:

  1. Export current inventory to CSV
  2. Update quantities in spreadsheet
  3. Import via Inventory → Import
  4. Review changes before applying
  5. All adjustments logged with recount reason

Transfers

Move inventory between locations within a warehouse or between warehouses.

Intra-Warehouse Transfer

Move from one bin to another:

  1. Inventory → Transfer
  2. Select source location
  3. Select destination location
  4. Enter SKU and quantity
  5. Submit

Instant transfer — no transit time.

Inter-Warehouse Transfer

Move between warehouses:

  1. Inventory → Transfer
  2. Select source warehouse
  3. Select destination warehouse
  4. Enter SKU and quantity
  5. Submit — creates transfer order

Transfer order workflow:

  • pendingin_transitreceived
  • Source warehouse: quantity decremented immediately
  • Destination warehouse: quantity added on receipt

Reservations

Reservations hold inventory for orders.

How Reservations Work

  1. Order is allocated
  2. Vectis creates reservation: {order_id, sku, quantity, warehouse}
  3. Available quantity decreases
  4. On Hand stays the same

When order ships:

  1. On Hand decremented
  2. Reservation deleted
  3. Available stays the same (already reflected)

When order cancelled:

  1. Reservation deleted
  2. Available increases
  3. 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:

  1. Go to product detail
  2. Click Reorder Settings
  3. Set reorder point (alert when Available drops below)
  4. 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

  1. Inventory → Receive
  2. Select purchase order
  3. Scan/enter items received
  4. Note any discrepancies
  5. Submit

Quantities added to On Hand. Incoming quantity decremented.

Blind Receive

Without a purchase order:

  1. Inventory → Receive → Blind
  2. Enter SKU and quantity
  3. Select reason (return, found, initial_stock)
  4. Submit

Multi-Channel Sync

Vectis pushes Available quantity to sales channels:

ChannelSync MethodFrequencyStatus
ShopifyInventory Levels APIReal-timeAvailable
WooCommerceStock endpointReal-timeAvailable
AmazonInventory FeedEvery 15 minComing Soon
eBayInventory APIEvery 15 minComing 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.