---
title: "Get the Inventory Valuation report"
method: GET
path: "/public/v1/reports/inventory-valuation"
tags: ["InventoryValuation"]
---

# Get the Inventory Valuation report

`GET /public/v1/reports/inventory-valuation`

Returns one row per product with its current on-hand position — active, assembling, reserved, available, incoming, and pending-output quantities — alongside the product's descriptive attributes (SKU, vendor, brand, unit type, category, subcategory, group, owner), its unit cost and price, its inventory alert thresholds, and its active inventory value. This is a read-only snapshot computed at request time; it never changes inventory, and does not touch compliance systems (Metrc/BioTrack). Use it to reconcile stock and value a company's holdings, not to drive stock movements.

Quantities are derived, not stored verbatim:
• `available_quantity` is `active_quantity` minus `reserved_quantity`, and can be negative when reservations exceed on-hand stock.
• `incoming_quantity` sums quantities on open (not-yet-received) purchases; `pending_output_quantity` sums the output still owed by open assemblies.
• Active and assembling quantities count only inventory that is itself active. When `location_ids` and/or `user_ids` are supplied, the counted stock is narrowed to those locations and users (see those params).

The active value is `active_quantity` × unit price by default. Pass `calculation_method=cost` to value it by unit cost instead; this also renames the value column (`active_value_price` becomes `active_value_cost`). A product with no unit cost set is valued at 0 under `cost` (unit price is always set, so `price` never hits this case).

Every value is returned as it appears in the report's CSV export, with numeric cells returned as strings (currency and comma formatting stripped, matching the rest of the API); a few identifier-like values with significant leading zeros keep their display string. Any Product custom fields configured for the company are appended as extra keys on each row (one per custom field), so the row shape varies by company. Report-level information (the resolved report date and column definitions) is returned under `meta`. All matching products are returned; there is no pagination. Rows come back ordered by `available_quantity`, highest first.

Required permission: `reports_permissions_inventory_valuation`.

## Query parameters

- `search` string
- `calculation_method` 'cost' | 'price'
- `location_ids` string[]
- `user_ids` string[]
- `vendor_ids` string[]
- `brand_ids` string[]

## Response `200`

The Inventory Valuation report

## Other responses

- `400` — Invalid parameters
- `401` — Missing or invalid API token
- `403` — The API token lacks the required permission

---

[API](https://skmtc.dev/distru/apis/distru-api.md) · [All operations](https://skmtc.dev/distru/apis/distru-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/distru/distru-api/revisions/f8930b2c2924/schema)
