***

title: Inventory Overview
description: How inventory items work, what data they hold, and how on-hand quantity is calculated.
---------------------

For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see https://docs.esoapp.co.uk/guides/inventory/llms.txt. For full documentation content, see https://docs.esoapp.co.uk/guides/inventory/llms-full.txt.

## Inventory

Inventory items are the individual stock-keeping units (SKUs) managed by the platform. Each item belongs to exactly one **project** and can optionally be pinned to a **client** and a **location**.

## Core fields

| Field                      | Description                                                                                                                    |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Part Number**            | Optional supplier or internal part reference.                                                                                  |
| **Description**            | Human-readable description of the item.                                                                                        |
| **Starting Quantity**      | The quantity received into storage. This is fixed at creation time; adjustments are made through transactions.                 |
| **Dimensions** (L × W × H) | Physical size, stored in the organisation's configured unit (cm, m, in, or ft).                                                |
| **Weight**                 | Item weight in the organisation's configured unit (kg, lb, t, or short ton).                                                   |
| **Status**                 | `expected` → `in_stock` → `out_of_stock`. Updated automatically as inventory is moved.                                         |
| **Custom Fields**          | Any number of additional fields defined by your organisation — see [Custom Fields](/guides/inventory/custom-inventory-fields). |

***

## On-hand quantity

The **on-hand quantity** is not stored directly. It is calculated dynamically as:

```
on-hand = SUM(inventory_transactions.quantity)
```

The **starting quantity** is used to create the receipt transaction when inventory is marked as received or available. This allows you to load inventory into the system with a status of 'Expected' and receipt it later.

If inventory is created with status "received" or "available" then the receipt transaction is automatically created at the same time.

## Transaction quantities

Transaction quantities are positive for receipts and negative for issues. This ledger-style approach means the full history of movements is always available.

## Barcodes

Each inventory item can have one or more barcodes attached to it. Barcodes track individual serialised units and can be scanned during packing-list check-out and delivery. Each barcode tracks:

* **Starting pieces** — How many pieces the barcode represents at intake.
* **On-hand pieces** — Current count, updated through transactions.
* **Status** — `expected`, `in_stock`, or `out_of_stock`.
* **Custom fields** — Barcode-level metadata (e.g. lot number, serial number).

***

## Viewing inventory

Navigate to **Inventory** from the left-hand menu to see a paginated list of all inventory items across all projects. Use the filters to narrow by project, status, location, or any custom field.
Click an item to open its detail page, which shows:

* Full field values
* All barcodes
* Transaction history
* Packing lists that include this item

***

## Duplicate detection

The platform automatically groups inventory items that appear to be duplicates based on matching part numbers or descriptions. Navigate to the duplicates view from the inventory list to review and optionally **merge** items. Merging combines quantities and transactions into a single surviving record.

## Exporting inventory

The inventory list supports a CSV export that respects the currently active filters. Use the **Export** button on the inventory page to download the current view.

## Related guides

* [Bulk Upload](/guides/inventory/bulk-upload-inventory)
* [Custom Fields](/guides/inventory/custom-inventory-fields)
* [Inventory Reports](/guides/inventory/inventory-reports)