Storage Companies & Warehouses

A complete how-to for 3PL storage partners: warehouses, receiving stock, and confirming inventory requests.

2 min read

Storage Companies & Warehouses

A Storage Company is a 3PL partner that operates one or more Warehouses and physically holds merchant stock. Storage partners are the only actor that can turn an approved inventory request into real, sellable stock: a balance bucket is created/incremented exclusively when you confirm receipt.

Actors

Actor What they do
Merchant Submits an inventory request to bring stock in.
Platform Admin Approves the request, then assigns it to a storage company (and optionally a warehouse).
Storage Company admin / staff Confirms receipt (stock becomes real) or rejects the assignment.

Onboarding

  1. NQLA registers your company with a primary user plus staff users.
  2. You operate one or more warehouses, each with a unique code and an address.
  3. Visibility is scoped: your users only ever see your own company's inventory requests, balances, warehouses, and ledger.

Daily storage flow

  1. Admin assigns an approved inventory request to your company. Status → assigned_to_storage. The Admin may already attach a warehouse, or you set it.
  2. You confirm or reject:
    • Confirm — the system, inside one locked transaction:
      1. locks (and creates if missing) the balance bucket for (product, color, size, shape, warehouse),
      2. increments that bucket by the request quantity,
      3. writes an addition ledger transaction recording the new balance_after and a reference to the request,
      4. sets status → confirmed_by_storage (a final state).
    • Reject — status → rejected_by_storage, with a mandatory reason. No stock is added.

The whole confirm runs under a row lock, so two staff tapping Confirm at once cannot double-count — the loser is rejected with "already processed".

What you can and can't do

  • You can only act on requests in assigned_to_storage. Confirming or rejecting anything else is refused.
  • A request your company rejected (rejected_by_storage) can be re-assigned (to you again or another storage company) by an Admin; the previous storage-rejection fields are cleared on re-assignment.

Screens & endpoints

Item Location Gating
Storage companies /admin/storage-companies manage_storage_companies
Warehouses /admin/warehouses manage_warehouses
Inventory requests /admin/inventory-requests view_inventory_requests
Inventory balances /admin/inventory-balances view_inventory_balances
Inventory ledger /admin/inventory-transactions view_inventory_transactions
  • Inventory Workflow (inventory-workflow) — the full request → balance → ledger model.
  • Delivery Companies & Drivers (delivery-companies-drivers).