Inventory Report
Overview
The inventory report returns one row per product variant per warehouse, with its stock quantities and a calculated stock value. It can be returned as paged JSON or downloaded as a CSV of every matching row.
GET api/v1/Reports/inventory?priceListId=1&warehouseId=2&downloadCSV=true
| Query parameter | Meaning |
|---|---|
priceListId |
Required. The price list whose cost prices value the stock. Missing gives 422 PriceListIdRequired; unknown gives 404 PriceListNotFound. |
warehouseId |
Optional. Limits the report to one warehouse. |
categoryId, allCategories |
Optional. Limits the report to one category unless allCategories is true. |
page, pageSize |
JSON paging. Ignored when downloadCSV is true. |
downloadCSV |
true returns a CSV file of every matching row; otherwise paged JSON. |
Requires the reports:read permission.
Row shape
| CSV column | JSON key | Value |
|---|---|---|
| SKU | sku |
Variant SKU |
| Title | title |
Variant title |
| Warehouse | warehouse |
Warehouse name |
| Location | location |
Bin location in the warehouse |
| QuantityOnHand | quantityOnHand |
Quantity on hand |
| QuantityAllocated | quantityAllocated |
Quantity allocated |
| ReorderLevel | reorderLevel |
Reorder level |
| StockValue | stockValue |
Cost price × (quantity on hand + quantity allocated), 2 decimals; empty when the variant has no cost price on the price list |
| Category | category |
A category of the product |
Rows are ordered by SKU.
Stock value
- The cost price is resolved through the same pricing pipeline as document costs, at the single-item (quantity 1) price break of the chosen price list.
- Quantity breaks are ignored, so stock bought on volume deals may be overstated.
- Customer and supplier cost overrides are not applied; this is the price list's cost.
- The value is in the price list's currency. No currency conversion is done.
- A variant with no cost price on the chosen list has an empty stock value, not
0. - Negative stock quantities produce a negative stock value.