For AI agents: markdown of this page — /docs-content-en/entities/shipment-items/update.md documentation index — /llms.txt

Update a shipment item

PATCH /v1/shipment-items/:id

Changes the product quantity and the external code of a shipment item in an online store order.

Fields are passed flat at the JSON root, without a fields wrapper. How a quantity change affects the free quantity of the basket item is described in Shipment items.

Parameters

Parameter Type Required Description
id (path) number yes Shipment item ID, a non-negative integer. List: GET /v1/shipment-items

Request fields (body)

Field Type Required Description
quantity number yes New product quantity in the shipment. Pass it in every request, including when only xmlId changes. A fractional value is stored without rounding. A numeric string with a decimal point is also accepted, for example "0.5". An increase is limited by the free quantity of the basket item
xmlId string no External code
orderDeliveryId number no RO. Set only on creation. To move the item to another shipment, delete it and create it again
basketId number no RO. Set only on creation
reservedQuantity number no RO. Reserved quantity

Full list of fields: GET /v1/shipment-items/fields.

Examples

curl — personal key

Terminal
curl -X PATCH "https://vibecode.bitrix24.com/v1/shipment-items/1353" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "quantity": 0.75,
    "xmlId": "vibe-doc-si-1"
  }'

curl — OAuth application

Terminal
curl -X PATCH "https://vibecode.bitrix24.com/v1/shipment-items/1353" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "quantity": 0.75,
    "xmlId": "vibe-doc-si-1"
  }'

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/shipment-items/1353', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    quantity: 0.75,
    xmlId: 'vibe-doc-si-1',
  }),
})

const { success, data } = await res.json()

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/shipment-items/1353', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    quantity: 0.75,
    xmlId: 'vibe-doc-si-1',
  }),
})

const { success, data } = await res.json()

Response fields

Field Type Description
success boolean true on success
data object The updated shipment item with all fields
data.id number Shipment item ID
data.orderDeliveryId number Shipment ID
data.basketId number Basket item ID
data.quantity number Product quantity in the shipment after the change
data.reservedQuantity number Reserved quantity
data.xmlId string External code
data.dateInsert datetime Creation date, ISO 8601

Response example

JSON
{
  "success": true,
  "data": {
    "basketId": 1387,
    "dateInsert": "2026-10-07T09:55:27.000Z",
    "id": 1353,
    "orderDeliveryId": 1207,
    "quantity": 0.75,
    "reservedQuantity": 0,
    "xmlId": "vibe-doc-si-1"
  }
}

Error response example

404 — no shipment item with this id:

JSON
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "shipment item is not exists"
  }
}

Errors

HTTP Code Description
400 READONLY_FIELD The body contains a read-only field: orderDeliveryId, basketId, reservedQuantity, id and others. The field name is in message
400 EMPTY_UPDATE_BODY The request body is empty or is not a JSON object
400 INVALID_PARAMS A field value does not match its type, for example the string "abc" in the numeric quantity. The field name is in message
400 INVALID_PARAMS id in the path is not a non-negative integer
404 ENTITY_NOT_FOUND No shipment item with this id: shipment item is not exists
404 ENTITY_NOT_FOUND The item belongs to the system shipment, and the passed quantity equals the current one. The change is not saved: shipmentItem <id> not found
422 BITRIX_ERROR The item belongs to the system shipment, and a new quantity is passed. The change is not saved: System shipment cannot be modified, b24Code is 150
422 BITRIX_ERROR The body has no quantity, for example only xmlId or only a field with an unknown name is passed: Required fields: quantity
422 BITRIX_ERROR The new quantity exceeds the quantity available to the basket item, b24Code is SALE_SHIPMENT_ITEM_LESS_AVAILABLE_QUANTITY
422 BITRIX_ERROR Bitrix24 rejected the change for another reason. The reason is in message
403 BITRIX_ACCESS_DENIED The key's user has no permission to modify orders in Bitrix24
403 WRITE_BLOCKED_READONLY_KEY The key works in read-only mode
403 SCOPE_DENIED The API key does not have the sale scope
403 MANAGEMENT_KEY_NO_ENTITY_ACCESS The request is made with a management key. Entities require an application key or a personal key with the sale scope
401 MISSING_API_KEY The X-Api-Key header is not passed
401 INVALID_API_KEY The passed API key is not found
401 TOKEN_MISSING The API key has no configured tokens

Full list of common API errors: Errors.

See also