# Update Landed Cost Item

`PATCH /inventory/landed-cost-items/{id}`

Group: Inventory › Landed Cost Items · Operation ID: `updateLandedCostItem`

Updates the landed cost item with the given identifier. Only the fields in the request body change.

Updates part of a landed cost item. Only the fields in the request body change, and anything omitted is left as it was.

Changing allocationMode changes the default offered for future charges. Landed costs already created keep the mode they were built with, and committed ones keep their allocation outright.

A selector cannot be removed here. Passing itemId or accountId replaces it, and there is no way to end up with a row that selects on neither. Set active to false to take a landed cost item out of force without deleting it.

[Open in the interactive reference](https://docs.api.lensing.ai/?op=updateLandedCostItem)

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | `"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`. |
| `Idempotency-Key` | header | string | no | An opaque caller-chosen string (1-255 characters) that makes this request safe to retry. Repeating the same key with an identical request body replays the original response instead of re-executing - but only once that original request succeeded; a failed attempt re-executes on retry. Repeating the key with a different body is answered with 422. A key still in flight is answered with 409 - as is a key whose original request was interrupted before it finished, for a few minutes afterwards, until that attempt is presumed dead. A completed response stays replayable for 24 hours. The key is scoped to the caller, not to the action: reusing it for a different action is answered with 409 or 422 rather than treated independently. On read actions this header is ignored. On write actions that cannot offer the guarantee it is answered with `400 IDEMPOTENCY_NOT_SUPPORTED` rather than silently ignored. |
| `id` | path | string | yes | The unique identifier for the landed cost item to update. |

## Request body

Required, `application/json`: updateLandedCostItemInput.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `itemId` | string | no | A replacement service item to select on. Omit to leave the selector as it is. There is no way to clear it. See id on GET inventory/items/:id. |
| `accountId` | string | no | A replacement GL account to select on. Omit to leave the selector as it is. There is no way to clear it. See id on GET accounting/accounts/:id. |
| `allocationMode` | string | no | A replacement allocation mode. Accepted values: 'Equal', 'Quantity', 'LineTotal', 'Weight', 'Volume'. It changes the default offered for future charges only. |
| `costingElementTypeId` | string | no | A replacement costing element type. There is no endpoint for it. |
| `active` | boolean | no | Whether the row is in force. Set it to false to retire a landed cost item without deleting it. |

Example:

```json
{
  "itemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "accountId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "allocationMode": "Quantity",
  "costingElementTypeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "active": true
}
```

## Response

`200` Success

Under `data` (updateLandedCostItemOutput):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | The unique identifier for the landed cost item. |

## Response headers

- `Idempotency-Replayed` — Present and `true` only when this response replays a previously stored one for the same Idempotency-Key, rather than reflecting a live execution. Absent on a live response - never sent as `false`.

## Errors

| Code | Status |
| --- | --- |
| `NOT_FOUND` | 400 |
| `REFERENCE_NOT_FOUND` | 400 |
| `UNKNOWN_ALLOCATION_MODE` | 400 |
| `DUPLICATE` | 400 |
| `IDEMPOTENCY_KEY_CONFLICT` | 409 |
| `IDEMPOTENCY_PAYLOAD_MISMATCH` | 422 |

## Statuses

- `400` — Invalid request or business failure. Codes: NOT_FOUND, REFERENCE_NOT_FOUND, UNKNOWN_ALLOCATION_MODE, DUPLICATE
- `401` — Missing or invalid access token
- `403` — Not authorized
- `404` — Not found
- `409` — The Idempotency-Key is still being processed by another request.
- `422` — The Idempotency-Key was already used with a different request payload.
- `429` — Too many requests
- `500` — Internal server error
