# Inventory > Locations, serialized versus bulk stock, availability, transfers, reorder points. Inventory answers two questions: what do you have, and where is it. You work in **Inventory**. A workspace needs at least one location before it can hold stock. ## Locations Stock is always held at a location. A location has a code, a name and a kind. Select **Locations** at the top of **Inventory** to manage them. The operations are `createLocation`, `updateLocation`, `deactivateLocation` and `reactivateLocation`. The kinds are: - `WAREHOUSE` - `STOCKROOM` - `PRODUCTION_LINE` - `QC` - `RECEIVING` - `SHIPPING` - `QUARANTINE` - `OFFSITE` - `OTHER` `OFFSITE` is for stock that is not in a building of yours, such as a founder's home or a contract manufacturer. A location code can't change once stock, units or orders refer to it. You can't deactivate a location that holds stock or units, or that an open build order uses. A deactivated location takes nothing new. ## Serialized and bulk stock How you hold a part depends on its kind. See [Parts and revisions](https://dev.buildtrace.eu/docs/concepts/parts-and-revisions.md). - `COMPONENT` and `ASSEMBLY` parts are held as individual serials. Receive them with `receiveSerial` or `bulkReceiveSerials`. They appear on the **Serials** tab. See [Serials](https://dev.buildtrace.eu/docs/concepts/serials.md). - `RAW` parts are held as quantities, per revision, location and `lot`. Receive them with `receiveStock`. They appear on the **Stock (RAW)** tab. A lot is a batch of bulk stock. It is the unit of traceability for bulk stock. A lot can fail an inspection. Stock in a lot whose latest inspection failed is on hand, but it is blocked until the lot passes. ## On hand and available Each row shows two numbers: - **On Hand** is everything physically there, at any status. - **Available** is `available` stock: what you can still commit. It is on hand, minus what open build orders have reserved, minus blocked stock. Blocked stock is `QUARANTINED` units for a serialized part and stock in failed lots for a `RAW` part. When some stock is blocked, the row says how much is in blocked lots, so the numbers still add up. ## Stock rolls up across locations A part's rows add up across every location. For example, 200 at an offsite location and 300 in a warehouse give 500 on hand. Expand a row to see each location. Use the location buttons above the table to look at one location, or select **All locations**. The operations are `getStock`, `getStockByLocation` and `listSerialStock`. ## Moving stock Use `transfer` to move stock between locations without changing the total. - For `RAW` stock, select **Transfer Stock**. Choose the revision, the from and to locations, the quantity and optionally a lot. The operation is `transferStock`. - For a serialized unit, open it and select **Move**. The operation is `moveSerial`. `adjustStock` writes off or corrects `RAW` stock when the count is wrong. ## Reorder points Give a part a minimum, and optionally a quantity to reorder. Set it from **Inventory** or from the part's **Summary** in **Parts & BOMs**, with `setPartReorderPoint`. The minimum applies to the part as a whole: available stock across all its revisions and locations. When available stock is under the minimum, the part is flagged on the **Stock (RAW)** tab and listed on the **Below minimum** tab, with its shortfall and reorder quantity. `listBelowMinimum` returns the same list. BuildTrace also sends a `stock.below_minimum` webhook. It sends it once per crossing: when a stock change takes the part from at or above its minimum to below it. Further drops while the part is below the minimum do not send it again. The part must get back to its minimum before it can cross again. Setting or changing the minimum never sends it. A part that is already under a new minimum is just listed.