Retrieve an inventory decrease
Operation ID: getInventoryDecrease
Group: Inventory › Inventory Decreases
Open in the interactive reference
GET /inventory/inventory-decreases/{id}
Read-only: Reads and returns; changes nothing.
Retrieves an inventory decrease. The inventory decrease comes back with its main fields, its lines, and each line's batch, serial, and bin details.
POST inventory/inventory-decreases/search returns the same fields. The collection GET inventory/inventory-decreases returns the main fields without the lines.
documentStatus says what you can do next. A 'DRAFT' can be updated, committed, or deleted. A 'COMMITTED' one can't be changed or deleted, and a 'CANCELLED' one can only be deleted.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
id |
path | string | yes | The unique identifier of the inventory decrease you want to retrieve. |
Response
200 Success
Under data (getInventoryDecreaseOutput):
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The unique identifier for the inventory decrease. Example: "d4a17f28-6b93-4c50-8e71-2a5d0c9b3e64". |
documentNumber |
string | no | The inventory decrease's document number, for example 'DEC-42'. Absent while none has been assigned. Example: "DEC-42". |
documentStatus |
string | yes | The status of the inventory decrease. Possible values: 'DRAFT', 'COMMITTED', 'CANCELLED'. Example: "DRAFT". |
documentDate |
date | yes | The date the adjustment is dated. It drives the posting period, so it is not the same as when the record was created. Format YYYY-MM-DD. Example: "2026-08-14". |
entityId |
string | yes | The unique identifier for the legal entity the document belongs to. See id on GET base/entities. Example: "1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43". |
entityName |
string | no | The display name of that legal entity. Example: "Acme Netherlands B.V.". |
locationId |
string | no | The unique identifier for the warehouse location. One location for the whole document, and every line uses it. Absent only on a document with no lines. See id on GET inventory/warehouses/:id. Example: "e1d84c07-5b39-4a26-9f70-2c8b613ad495". |
locationCode |
string | no | The short code of that warehouse location. Example: "WH-01". |
locationName |
string | no | The display name of that warehouse location. Example: "Rotterdam Distribution Centre". |
reasonCodeId |
string | no | The unique identifier for the reason code, when one was given. See id on GET inventory/reason-codes/:id. Example: "6f2b58c1-9d47-4e03-a815-70c9d2e46b38". |
reasonCode |
string | no | The short code of that reason code. Example: "COUNT". |
reasonCodeDescription |
string | no | The description of that reason code. Example: "Count correction". |
currency |
string | no | The currency the inventory decrease is valued in, the legal entity's functional currency. Format ISO 4217, for example 'EUR'. Example: "EUR". |
notes |
string | no | Free text on the inventory decrease. Example: "August cycle count". |
createdDate |
date-time | no | The date and time the inventory decrease was created, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-14T09:12:00.000Z". |
lastModifiedDate |
date-time | no | The date and time the inventory decrease record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-14T09:12:00.000Z". |
lines |
array<object> | yes | The lines of the inventory decrease. An inventory decrease always has at least one. Example: [{"id":"9b3f5a10-7c24-4e68-8d05-1f6a92b4c837","itemId":"5f21c8b0-9d34-4a76-8e12-04b93c7de5a8","itemCode":"WIDGET-01","itemName":"Standard widget","unitId":"3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45","unitCode":"EA","quantity":"12.00","inventoryQuantity":"12.00","notes":"Crushed by a forklift","batches":[{"batchNumberId":"9c31f5a8-6b02-4e79-b354-8d1a67e0f2b9","batchNumber":"LOT-2026-08-14","expirationDate":"2027-08-14","quantity":"12.00","inventoryQuantity":"12.00"}],"binLocations":[{"binLocationId":"0c7e91d3-4a58-4b26-9e10-63f8a2c5d704","binLocationCode":"A-01-02","quantity":"12.00","inventoryQuantity":"12.00","batchNumber":"LOT-2026-08-14"}]}]. |
lines[].id |
string | yes | The unique identifier for the inventory decrease line. |
lines[].itemId |
string | yes | The unique identifier for the item whose stock this line removes. See id on GET inventory/items/:id. |
lines[].itemCode |
string | no | The short code of that item. |
lines[].itemName |
string | no | The display name of that item. |
lines[].unitId |
string | yes | The unique identifier for the unit the quantity is counted in. See id on GET inventory/unit-of-measures/:id. |
lines[].unitCode |
string | no | The short code of that unit, for example 'BOX'. |
lines[].quantity |
decimal | yes | The quantity removed, in the line's unit. A positive number. |
lines[].inventoryQuantity |
decimal | no | The same quantity in the item's stocking unit. |
lines[].unitPrice |
decimal | no | The value of one unit, in the inventory decrease's currency, when one was recorded. Usually absent, since stock leaving is valued at the cost it already has. |
lines[].notes |
string | no | Free text on the line. |
lines[].batches |
array<object> | no | The batches making up this line's quantity, for a batch-tracked item. Absent when the item is not batch-tracked. |
lines[].batches[].batchNumberId |
string | no | The unique identifier for the batch record. |
lines[].batches[].batchNumber |
string | yes | The batch number as printed, for example 'LOT-2026-08-14'. |
lines[].batches[].manufacturerBatchNumber |
string | no | The maker's own number for the same batch, when one was recorded. |
lines[].batches[].expirationDate |
date | no | The expiration date of the batch. Format YYYY-MM-DD. |
lines[].batches[].quantity |
decimal | yes | The quantity of this batch removed by the line, in the line's unit. |
lines[].batches[].inventoryQuantity |
decimal | no | The same quantity in the item's stocking unit. |
lines[].serials |
array<object> | no | The serialized units making up this line's quantity, one entry per unit. Absent when the item is not serialized. |
lines[].serials[].serialNumberId |
string | no | The unique identifier for the serial record. |
lines[].serials[].serialNumber |
string | yes | The serial number stamped on the unit. |
lines[].serials[].manufacturerSerialNumber |
string | no | The maker's own number for the same unit, when one was recorded. |
lines[].binLocations |
array<object> | no | The bins the quantity came out of, in a bin-tracked warehouse. Each entry that names a batchNumber or serialNumber belongs to that batch or unit, and one that names neither belongs to the line. |
lines[].binLocations[].binLocationId |
string | yes | The unique identifier for the bin the quantity came out of. See id on GET inventory/bins/:id. |
lines[].binLocations[].binLocationCode |
string | no | The short code of that bin. |
lines[].binLocations[].quantity |
decimal | yes | The quantity taken from this bin, in the line's unit. |
lines[].binLocations[].inventoryQuantity |
decimal | no | The same quantity in the item's stocking unit. |
lines[].binLocations[].batchNumber |
string | no | The batch this bin entry belongs to, when it belongs to one of the line's batches. |
lines[].binLocations[].serialNumber |
string | no | The serialized unit this bin entry belongs to, when it belongs to one of the line's units. |
{
"data": {
"id": "d4a17f28-6b93-4c50-8e71-2a5d0c9b3e64",
"documentNumber": "DEC-42",
"documentStatus": "DRAFT",
"documentDate": "2026-08-14",
"entityId": "1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43",
"entityName": "Acme Netherlands B.V.",
"locationId": "e1d84c07-5b39-4a26-9f70-2c8b613ad495",
"locationCode": "WH-01",
"locationName": "Rotterdam Distribution Centre",
"reasonCodeId": "6f2b58c1-9d47-4e03-a815-70c9d2e46b38",
"reasonCode": "COUNT",
"reasonCodeDescription": "Count correction",
"currency": "EUR",
"notes": "August cycle count",
"createdDate": "2026-08-14T09:12:00.000Z",
"lastModifiedDate": "2026-08-14T09:12:00.000Z",
"lines": [
{
"id": "9b3f5a10-7c24-4e68-8d05-1f6a92b4c837",
"itemId": "5f21c8b0-9d34-4a76-8e12-04b93c7de5a8",
"itemCode": "WIDGET-01",
"itemName": "Standard widget",
"unitId": "3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45",
"unitCode": "EA",
"quantity": "12.00",
"inventoryQuantity": "12.00",
"notes": "Crushed by a forklift",
"batches": [
{
"batchNumberId": "9c31f5a8-6b02-4e79-b354-8d1a67e0f2b9",
"batchNumber": "LOT-2026-08-14",
"expirationDate": "2027-08-14",
"quantity": "12.00",
"inventoryQuantity": "12.00"
}
],
"binLocations": [
{
"binLocationId": "0c7e91d3-4a58-4b26-9e10-63f8a2c5d704",
"binLocationCode": "A-01-02",
"quantity": "12.00",
"inventoryQuantity": "12.00",
"batchNumber": "LOT-2026-08-14"
}
]
}
]
},
"diagnostics": [
{
"code": "<code>",
"message": "<message>",
"severity": "error",
"path": [
"<path>"
],
"details": "<details>"
}
]
}
Errors
| Code | Status |
|---|---|
NOT_FOUND |
400 |
Statuses
400— Invalid request or business failure. Codes: NOT_FOUND401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error