---
title: "Inventory"
description: "Keep stock items, locations including vans, levels, reorder points, transfers, and adjustments, with a movements ledger and weighted-average cost."
url: "https://support.outpostplatform.com/procurement/inventory/"
product: "depot"
type: "how-to"
status: "draft"
ai_summary: "Inventory: stock items (serialized or by quantity, supplier costs), locations (office, warehouse, van, other; one default), levels and reorder points, hourly or on-demand reorder drafts per supplier and location, transfers, an append-only movements ledger, adjustments that need a reason, and one weighted-average cost per item."
availability:
  plans: ["home-lab", "essentials", "enterprise", "msp"]
  permission: "inventory:write"
  preview: false
source: "https://gitlab.com/outpostplatform/docs/-/edit/main/src/content/docs/procurement/inventory.md"
license: "CC BY 4.0"
---

# Inventory

Inventory is the hardware and parts your organization keeps on hand, where it
is, and what it cost. Stock arrives through receiving, leaves through
delivery, returns, and adjustments, and moves between locations by transfer.
Every change is a movement in a ledger that is never edited. This page covers
setting up items and locations, reorder points, transfers, adjustments, and
how stock is costed.

## Before you begin

- Reading inventory needs `inventory:read`. Managing items and locations,
  adjusting stock, and transferring it needs `inventory:write`.
- Running the reorder by hand needs `procurement:write`, because it drafts
  purchase orders.

## Set up locations

A location is anywhere stock is kept: an office, a warehouse, or a
technician's van.

1. Select **Inventory** > **Locations**, then **New location**.
2. Enter the **Name**, and choose the **Kind**: **Office**, **Warehouse**,
   **Van**, or **Other**.
3. For a van, choose who it belongs to in **Held by**.
4. Select **Receive into this location unless told otherwise** to make it
   the default receiving location. Only one location is the default.
5. To have suppliers deliver here, select **Suppliers ship here (printed on
   purchase orders)** and enter the address. The **Country** is two letters.
   A distributor submission needs this address.
6. Select **Save location**.

A location that still holds stock, or that a draft or in-transit transfer
names, cannot be removed. Move or adjust the stock out first.

## Add stock items

A stock item is one thing you keep in stock, under one SKU.

1. Select **Inventory** > **Stock items**, then **New item**.
2. Enter the **SKU** and **Name**, and optionally the **Manufacturer**,
   **Part number (MPN)**, **UPC**, **Category**, **Unit**, **Default
   supplier**, and **Description**.
3. Select **Track every unit by serial number** for hardware such as laptops
   and switches. Each serialized unit becomes an asset when it is received.
4. Select **Save item**.

Choose serial tracking carefully. It cannot change once the item exists, and
a SKU can never be reused by another item, even after the item is
deactivated. Quantities of a serialized item are always whole numbers.

To stop using an item, select **Deactivate**. An item whose serialized units
are still in stock cannot be deactivated.

### Record supplier costs

On the item's **Suppliers** card, select **Add a supplier**, then choose the
**Supplier** and enter **Their SKU**, **Their cost**, and **Lead time,
days**. Purchase orders to that supplier use this SKU and cost for the item
when a line leaves them empty.

To see what your distributors charge for the item right now, select
**Compare prices** on the item. See
[Distributor connections](/procurement/distributors/#find-and-compare-at-distributors).

### Sell an item from stock

On the MSP plan, a product in your billing catalog can be delivered from a
stock item, which is what makes an accepted quote raise a sales order. See
[Billing catalog](/msp/billing-catalog/#deliver-a-product-from-stock).

## Set reorder points

A reorder point is the level at which a location needs more of an item.

1. Select **Inventory** > **Stock levels**.
2. On the item's row at the location, select **Edit**.
3. Enter the reorder point and the reorder quantity, then select **Save**.

Clearing both removes the rule. Select **Below reorder point** to see only
the levels that need ordering.

### Reorder automatically

The reorder run adds what is needed to one draft purchase order per supplier
and location. Nothing is ordered until somebody approves and sends the draft.

- To run it every hour, select **Draft purchase orders every hour for stock
  below its reorder point** in **Procurement** > **Settings**.
- To run it once, select **Run now** on **Inventory** > **Reorder**.

The run orders from each item's **Default supplier**. An item at or below its
reorder point with no default supplier is listed with **No default supplier**,
and the hourly run raises an alert in the `procurement` category for it.

Stock already on order counts toward the level, including draft purchase
orders, so the same need is never drafted twice. The suggested quantity is
the reorder quantity, repeated as many times as it takes to bring the level
above the reorder point.

## Transfer stock between locations

1. Select **Inventory** > **Transfers**, then **New transfer**.
2. Choose **From** and **To**, and optionally enter a **Note**.
3. Under **Items to move**, select **Add an item** for each item and enter
   the quantity. Select **Save draft**.
4. When the stock leaves, open the transfer and select **Ship**. The stock
   leaves the source location, and the transfer is **In transit**.
5. When it arrives, select **Receive**. The stock arrives at the destination,
   and serialized units move their location with it.

A draft can be canceled with **Cancel transfer**. Once shipped, it can only
be received.

## Adjust stock

Adjust stock when a count, a loss, or internal use changes what is on hand.

1. On the stock item, select **Adjust stock**.
2. Choose the **Location** and the **Direction**: **Take out of stock** or
   **Add to stock**.
3. For a serialized item, scan or type the serial number of each unit in
   **Serial numbers**. Otherwise, enter the **Quantity**.
4. Choose the **Reason**: **Damaged**, **Lost**, **Found**, **Stock count**,
   **Internal use**, or **Other**. Every adjustment needs one.
5. Enter a **Note**. It is required when the reason is **Other**.
6. Select **Adjust stock**.

Taking a serialized unit out marks its asset **Lost**, or **Retired** when the
reason is **Damaged**. Adding one either finds a lost unit or, for a serial
Outpost has not seen, creates a new asset at the item's average cost.

## The movements ledger

**Inventory** > **Movements** lists every change to stock on hand, with what
caused it: **Received**, **Receipt reversed**, **Transfer out**, **Transfer
in**, **Adjustment**, **Fulfilled**, **Fulfillment reversed**, **Returned to
supplier**, **Returned to stock**, and **Cost adjustment**. Filter by item,
location, or kind.

Nothing in the ledger is edited or deleted. A mistake is put right by a new
movement, such as a reversal or an adjustment, so the history always adds up.

## How stock is costed

Each stock item has one weighted-average cost across all its locations.

| Movement | Effect on the average |
| --- | --- |
| Receiving | Re-weighted by the received units at their unit cost. |
| Landed cost from an approved bill | Added across the units still on hand. |
| Delivery, return, transfer, adjustment, reversal | Posted at the current average. The average does not change. |

A transfer moves units, not value, so moving stock to a van never changes
what it is worth. **Last cost** on the item is the most recent unit cost
received.

## Verify

- **Inventory** > **Stock levels** shows each item's **On hand** and **On
  order** at each location.
- The item's **Recent movements** shows the change, and **All movements of
  this item** opens the full ledger.

## Next steps

- [Purchase orders](/procurement/purchase-orders/)
- [Returns to suppliers](/procurement/returns/)
- [Assets](/procurement/assets/)
