Для AI-агентов: markdown этой страницы — /docs-content/entities/shipments.md индекс документации — /llms.txt
Отгрузки
Отгрузки заказа интернет-магазина: служба доставки, стоимость доставки, трек-номер, документ отгрузки и отметка «отгружено».
Битрикс24 API: sale.shipment.*
Скоуп: sale
Создать отгрузку
POST /v1/shipments
Создаёт отгрузку в существующем заказе интернет-магазина и привязывает к ней службу доставки.
Поля передаются плоско в корне JSON, без обёртки fields.
Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
orderId |
number | да | ID заказа, в котором создаётся отгрузка. Список: GET /v1/orders. После создания не меняется |
deliveryId |
number | да | ID службы доставки. Список: GET /v1/delivery-services |
allowDelivery |
boolean | нет | Доставка разрешена. Если не передать, отгрузка создаётся с false |
statusId |
string | нет | Статус доставки. Список: GET /v1/order-statuses?filter[type]=D. Если не передать, отгрузка получает начальный статус доставки портала, в примере ниже это DN |
trackingNumber |
string | нет | Трек-номер |
deliveryDocNum |
string | нет | Номер документа отгрузки |
deliveryDocDate |
datetime | нет | Дата документа отгрузки |
priceDelivery |
number | нет | Стоимость доставки. Если не передать, подставляется стоимость службы доставки |
basePriceDelivery |
number | нет | Базовая стоимость доставки |
responsibleId |
number | нет | ID ответственного сотрудника. Список: GET /v1/users. Если не передать, ответственный назначается автоматически |
companyId |
number | нет | ID компании CRM. Список: GET /v1/companies. Существование компании не проверяется |
comments |
string | нет | Комментарий к отгрузке |
xmlId |
string | нет | Внешний код. Если не передать, генерируется автоматически |
Полный список полей — GET /v1/shipments/fields.
Примеры
curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/shipments" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"orderId": 1027,
"deliveryId": 1,
"trackingNumber": "VIBE-DOC-1",
"comments": "Тестовая отгрузка для документации"
}'
curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/shipments" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"orderId": 1027,
"deliveryId": 1,
"trackingNumber": "VIBE-DOC-1",
"comments": "Тестовая отгрузка для документации"
}'
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/shipments', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
orderId: 1027,
deliveryId: 1,
trackingNumber: 'VIBE-DOC-1',
comments: 'Тестовая отгрузка для документации',
}),
})
const { success, data } = await res.json()
console.log('ID отгрузки:', data.id)
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/shipments', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
orderId: 1027,
deliveryId: 1,
trackingNumber: 'VIBE-DOC-1',
comments: 'Тестовая отгрузка для документации',
}),
})
const { success, data } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | true при успехе. HTTP-статус ответа — 201 |
data |
object | Созданная отгрузка со всеми полями — Поля отгрузки |
data.id |
number | ID созданной отгрузки |
data.accountNumber |
string | Номер отгрузки: номер заказа и порядковый номер отгрузки через / |
data.deducted |
boolean | Отметка «отгружено». У новой отгрузки всегда false |
data.deliveryName |
string | Название службы доставки из deliveryId |
data.shipmentItems |
array | Позиции отгрузки. Пустой массив, если позиции ещё не добавлены |
data.system |
boolean | Системная отгрузка. У созданной через API всегда false |
Пример ответа
{
"success": true,
"data": {
"accountNumber": "1027/2",
"allowDelivery": false,
"basePriceDelivery": 500,
"canceled": false,
"comments": "Тестовая отгрузка для документации",
"companyId": null,
"currency": "RUB",
"customPriceDelivery": false,
"dateAllowDelivery": null,
"dateCanceled": null,
"dateDeducted": null,
"dateInsert": "2026-10-06T11:30:44.000Z",
"dateMarked": null,
"dateResponsibleId": "2026-10-06T11:30:44.000Z",
"deducted": false,
"deliveryDocDate": null,
"deliveryDocNum": null,
"deliveryId": 1,
"deliveryName": "Доставка курьером",
"deliveryXmlId": null,
"discountPrice": 0,
"empAllowDeliveryId": null,
"empCanceledId": null,
"empDeductedId": null,
"empMarkedId": null,
"empResponsibleId": 1317,
"externalDelivery": false,
"id": 1205,
"id1c": null,
"marked": false,
"orderId": 1027,
"priceDelivery": 500,
"reasonMarked": null,
"reasonUndoDeducted": null,
"responsibleId": 1295,
"shipmentItems": [],
"statusId": "DN",
"statusXmlId": null,
"system": false,
"trackingDescription": null,
"trackingLastCheck": null,
"trackingNumber": "VIBE-DOC-1",
"trackingStatus": null,
"updated1c": false,
"version1c": null,
"xmlId": "bx_6ac4cdd46e442"
}
}
Пример ответа при ошибке
422 — заказа с таким orderId не существует:
{
"success": false,
"error": {
"code": "BITRIX_ERROR",
"message": "Не удается загрузить заказ",
"b24Code": "0"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | MISSING_REQUIRED_FIELDS |
Не передано или пустое обязательное поле orderId или deliveryId. Имя поля — в message |
| 400 | READONLY_FIELD |
В теле передано deducted. Ответ содержит hint с адресами ship и unship |
| 400 | READONLY_FIELD |
В теле передано другое поле только для чтения, например customPriceDelivery или accountNumber. Имя поля — в message |
| 400 | INVALID_PARAMS |
Значение поля не подходит под его тип, например слово в числовом deliveryId или объект в текстовом comments. Имя поля — в message |
| 422 | BITRIX_ERROR |
Битрикс24 отклонил создание. Например, заказа с таким orderId нет — Не удается загрузить заказ |
| 403 | BITRIX_ACCESS_DENIED |
У пользователя ключа нет прав на изменение заказов в Битрикс24 |
| 403 | WRITE_BLOCKED_READONLY_KEY |
Ключ работает в режиме только для чтения |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа sale |
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
Полный список общих ошибок API — Ошибки.