# Retrieve an inventory revaluation

Operation ID: `getInventoryRevaluation`

Group: Inventory › Inventory Revaluations

[Open in the interactive reference](https://docs.api.lensing.ai/lensing/v1/endpoints/getInventoryRevaluation)

`GET /inventory/inventory-revaluations/{id}`

Read-only: Reads and returns; changes nothing.

Retrieves an inventory revaluation. Use the revaluation's id, not its documentNumber.

The revaluation comes back with all of its lines, including their batches and serials. GET inventory/inventory-revaluations returns the same fields without the lines.

The warehouse is set on each line, not on the revaluation, so one revaluation can revalue the same item in several warehouses. A negative totalRevaluationAmount is a write-down.

## 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 revaluation you want to retrieve. |

## Response

`200` Success

Under `data` (getInventoryRevaluationOutput):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | The unique identifier for the revaluation. Example: `"8e4b17c0-5d92-4a63-b0f7-1c8e35a029d4"`. |
| `documentNumber` | string | no | The revaluation's document number, for example 'REV-1187'. Example: `"REV-1187"`. |
| `documentStatus` | string | yes | The status of the revaluation. Possible values: 'DRAFT', 'COMMITTED', 'CANCELLED'. Example: `"DRAFT"`. |
| `documentDate` | date | no | The date the revaluation is dated. Format YYYY-MM-DD. Example: `"2026-08-18"`. |
| `entityId` | string | no | The unique identifier for the legal entity whose books this moves. 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."`. |
| `costingValuationType` | string | no | How the value change is recorded. Possible values: 'revaluation', 'directCostCapitalisation'. 'revaluation' restates the cost outright, and 'directCostCapitalisation' adds a cost that was expensed elsewhere onto the stock. Example: `"revaluation"`. |
| `capitalisationExpenseAccountId` | string | no | The unique identifier for the general ledger account a direct cost capitalization takes the expense off. Absent on an ordinary revaluation. See id on GET accounting/chart-of-accounts/:id. |
| `costingElementTypeId` | string | no | The unique identifier for the costing element type the cost breakdown rows are recorded against. Required to commit. Example: `"f2a58c31-9d47-4e06-8b25-3c7f1a94e5d8"`. |
| `reasonCodeId` | string | no | The unique identifier for the reason code, when one was given. See id on GET inventory/reason-codes/:id. |
| `reasonCode` | string | no | The code of that reason code. |
| `reasonCodeDescription` | string | no | The description of that reason code. |
| `currency` | string | no | The currency of every amount on the revaluation, the legal entity's functional currency. Format ISO 4217, for example 'EUR'. Example: `"EUR"`. |
| `totalRevaluationAmount` | decimal | no | The sum of every line's revaluationAmount, in the revaluation's currency. This is what the document moves on the balance sheet. Example: `"-450"`. |
| `active` | boolean | no | Whether the document is active. |
| `notes` | string | no | Free text on the revaluation. |
| `lineCount` | number | no | How many lines the revaluation has. Example: `1`. |
| `createdDate` | date-time | no | The date and time the revaluation was created, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
| `lastModifiedDate` | date-time | no | The date and time the revaluation record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: `"2026-08-18T09:14:22.517Z"`. |
| `lines` | array<object> | no | The lines of the revaluation. Absent from the collection endpoint, which publishes lineCount instead. Example: `[{"id":"6c2f9a41-7b58-4d30-91e6-4a0d8c25f3b7","itemId":"517a93e4-cbb4-4571-9e3d-2343e56cfd84","itemCode":"WIDGET-01","locationCode":"WH-CENTRAL","unitCode":"EA","quantity":"150","currentUnitCost":"12","newUnitCost":"9","revaluationAmount":"-450"}]`. |
| `lines[].id` | string | yes | The unique identifier for the revaluation line. Pass it in updateLines or deleteLines on PATCH inventory/inventory-revaluations/:id to change or remove the line. |
| `lines[].itemId` | string | no | The unique identifier for the item being revalued. See id on GET inventory/items/:id. |
| `lines[].itemCode` | string | no | The code of that item. |
| `lines[].itemName` | string | no | The display name of that item. |
| `lines[].locationId` | string | no | The unique identifier for the warehouse whose stock this line restates. The same item may be carried at a different cost in each warehouse. See id on GET inventory/warehouses/:id. |
| `lines[].locationCode` | string | no | The code of that warehouse. |
| `lines[].locationName` | string | no | The display name of that warehouse. |
| `lines[].unitId` | string | no | The unique identifier for the unit the quantity is in. See id on GET inventory/unit-of-measures/:id. |
| `lines[].unitCode` | string | no | The code of that unit. |
| `lines[].quantity` | decimal | no | How much stock this line restates the cost of, in the line's unit. |
| `lines[].inventoryQuantity` | decimal | no | The same amount in the item's stocking unit. |
| `lines[].currentUnitCost` | decimal | no | What the stock is carried at today, in the revaluation's currency. You supply it and the platform checks it rather than deriving it. Read it from GET inventory/inventory-levels. |
| `lines[].newUnitCost` | decimal | no | What it should be carried at after this posts, in the revaluation's currency. |
| `lines[].previousAfterSaleCost` | decimal | no | The accrued after-sale cost before this document, in the revaluation's currency. Moving-average direct cost capitalization only. |
| `lines[].newAfterSaleCost` | decimal | no | The after-sale cost to capitalize, in the revaluation's currency. Moving-average direct cost capitalization only. |
| `lines[].revaluationAmount` | decimal | no | The value this line moves on the balance sheet, in the revaluation's currency: (newUnitCost - currentUnitCost) x quantity. |
| `lines[].status` | string | no | Where the line sits in the platform's own process. This is free text with no fixed set of values. |
| `lines[].notes` | string | no | Free text on the line. |
| `lines[].batches` | array<object> | no | The batches being restated. Their quantities must add up to the line's quantity. |
| `lines[].batches[].batchNumberId` | string | no | The unique identifier for the batch number. |
| `lines[].batches[].batchNumber` | string | no | The batch number itself. |
| `lines[].batches[].quantity` | decimal | no | How much of the line this batch accounts for. |
| `lines[].batches[].currentUnitCost` | decimal | no | What this batch is carried at today, in the revaluation's currency. |
| `lines[].batches[].newUnitCost` | decimal | no | What it should be carried at. |
| `lines[].serials` | array<object> | no | The serialized units being restated, one entry per unit, so there must be exactly as many as the quantity says. |
| `lines[].serials[].serialNumberId` | string | no | The unique identifier for the serial number. |
| `lines[].serials[].serialNumber` | string | no | The serial number itself. |
| `lines[].serials[].currentUnitCost` | decimal | no | What this unit is carried at today, in the revaluation's currency. |
| `lines[].serials[].newUnitCost` | decimal | no | What it should be carried at. |
| `lines[].serials[].previousAfterSaleCost` | decimal | no | The unit's accrued after-sale cost before this document. Direct cost capitalization on a sold serial only. |
| `lines[].serials[].newAfterSaleCost` | decimal | no | The after-sale cost to capitalize on it. |

```json
{
  "data": {
    "id": "8e4b17c0-5d92-4a63-b0f7-1c8e35a029d4",
    "documentNumber": "REV-1187",
    "documentStatus": "DRAFT",
    "documentDate": "2026-08-18",
    "entityId": "1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43",
    "entityName": "Acme Netherlands B.V.",
    "costingValuationType": "revaluation",
    "capitalisationExpenseAccountId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "costingElementTypeId": "f2a58c31-9d47-4e06-8b25-3c7f1a94e5d8",
    "reasonCodeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "reasonCode": "<reasonCode>",
    "reasonCodeDescription": "<reasonCodeDescription>",
    "currency": "EUR",
    "totalRevaluationAmount": "-450",
    "active": true,
    "notes": "<notes>",
    "lineCount": 1,
    "createdDate": "2026-01-15T09:30:00.000Z",
    "lastModifiedDate": "2026-08-18T09:14:22.517Z",
    "lines": [
      {
        "id": "6c2f9a41-7b58-4d30-91e6-4a0d8c25f3b7",
        "itemId": "517a93e4-cbb4-4571-9e3d-2343e56cfd84",
        "itemCode": "WIDGET-01",
        "locationCode": "WH-CENTRAL",
        "unitCode": "EA",
        "quantity": "150",
        "currentUnitCost": "12",
        "newUnitCost": "9",
        "revaluationAmount": "-450"
      }
    ]
  },
  "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_FOUND
- `401` — The request carries no valid access token.
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests from this client address. The response has no body and no `Retry-After` header.
- `500` — Internal server error
