Внешняя СД
Доставка силами СДЭК, Boxberry и других служб - передача трек-номера.
Сценарий 1: Внешняя служба доставки
Внешняя служба доставки — это не отдельный delivery_type. Заказ приходит с типом COURIER или PICKUP_POINT, а мерчант исполняет доставку не своими силами, а через СДЭК, Boxberry, Почту России и т. п.
Службу видно в карточке: delivery.provider_id, например CDEK, BOXBERRY, RUSSIAN_POST. Для пункта выдачи ещё delivery.provider_location_id. Оба поля в схеме не обязательны. Отправление мерчант оформляет в кабинете службы — это вне API. Трек передаёт в API через delivery-provider/update. Статусы в API ставит мерчант по данным службы. По треку статус сам не меняется.
Дальше цепочка та же, что у пришедшего типа.
До двери: COURIER
Покупатель выбирает адрес. Пример — заказ ORD-DBS-2026-304, его везёт курьер СДЭК.
NEW → CONFIRMED → PACKED → DELIVERING → DELIVERED.
address_tail обязателен: индекс, город, населённый пункт, улица, дом, квартира. Заказ предоплачен, деньги у двери не берут. Если служба не вручила заказ, отдельного исхода в спецификации нет. Его согласуют с витриной.
- Опрос новых заказов. POST
/v1/order/dbs/listсfilter.status: ["NEW"]иlimit.cursor— для следующей страницы. - Карточка. В
deliveryобязателен толькоdelivery_type: "COURIER". Адрес —address_tail. Служба —provider_id, если витрина её прислала. Склад сборки —location_id. - Подтверждение. POST
/v1/order/dbs/status/update→CONFIRMED,changed_by: "MERCHANT",changed_at(RFC3339). - Слот, если его надо сдвинуть. POST
/v1/order/dbs/timeslot/set— только после согласования с покупателем. - Экземпляр, если он нужен. POST
/v1/order/dbs/exemplar/setдоPACKED. - Упаковка. POST
/v1/order/dbs/status/update→PACKED. - Отправление в службе. Мерчант создаёт его в кабинете СДЭК, Boxberry или Почты России и получает трек. Шаг вне API.
- Трек. POST
/v1/order/dbs/delivery-provider/update. В схеме у тела нет обязательных полей. Передаютmerchant_order_idиprovider_posting_id.provider_check_urlиcomment— по необходимости. Трек отправляют доDELIVERING. - В пути. POST
/v1/order/dbs/status/update→DELIVERINGпо данным службы. - Доставлен. POST
/v1/order/dbs/status/update→DELIVERED, когда служба вручила заказ.
В пункт выдачи: PICKUP_POINT
Покупатель выбирает пункт службы, например пункт СДЭК. Пример — заказ ORD-DBS-2026-305. В карточке delivery_type: "PICKUP_POINT", provider_id: "CDEK", пункт — provider_location_id. address_tail не обязателен.
NEW → CONFIRMED → PACKED → DELIVERING → READY_FOR_PICKUP → DELIVERED или CANCELLED (не забрал или отказался).
Сборка, отправление в кабинете службы и трек — те же шаги, что до двери. После PACKED мерчант ставит DELIVERING, когда посылка едет в пункт, затем READY_FOR_PICKUP, когда она ждёт покупателя. READY_FOR_PICKUP можно поставить и сразу из PACKED. Забрал — DELIVERED. Не забрал или отказался — CANCELLED.
JSON — карточка до двери
POST /v1/order/dbs/list. Обязательны filter и limit.
{
"cursor": "",
"limit": 100,
"filter": {
"status": ["NEW"]
}
}
{
"orders": [{
"merchant_order_id": "ORD-DBS-2026-304",
"client_order_id": "CLT-80004",
"location_id": "wh-msk-dbs-01",
"status": "NEW",
"customer": {
"name": "Иван Петров",
"phone": "+79001112233"
},
"delivery": {
"delivery_type": "COURIER",
"provider_id": "CDEK",
"address_tail": "125009, г. Москва, ул. Тверская, д. 10, кв. 5"
},
"product_name": "Наушники",
"prices": [{
"price_type": "CUSTOMER_FINAL_PRICE",
"value": 1299000
}],
"delivery_date": {
"delivery_date_begin": "2026-06-16T10:00:00+03:00",
"delivery_date_end": "2026-06-16T14:00:00+03:00"
},
"created_at": "2026-06-14T11:00:00+03:00"
}],
"next_cursor": "",
"total": 1
}
JSON — карточка в пункт СДЭК
Тип тот же PICKUP_POINT. Служба и пункт — в provider_id и provider_location_id.
{
"orders": [{
"merchant_order_id": "ORD-DBS-2026-305",
"client_order_id": "CLT-80005",
"location_id": "wh-msk-dbs-01",
"status": "NEW",
"customer": {
"name": "Иван Петров",
"phone": "+79001112233"
},
"delivery": {
"delivery_type": "PICKUP_POINT",
"provider_id": "CDEK",
"provider_location_id": "CDEK-MSK-0142"
},
"product_name": "Чайник",
"prices": [{
"price_type": "CUSTOMER_FINAL_PRICE",
"value": 499000
}],
"delivery_date": {
"delivery_date_begin": "2026-06-16T10:00:00+03:00",
"delivery_date_end": "2026-06-18T21:00:00+03:00"
},
"created_at": "2026-06-14T11:30:00+03:00"
}],
"next_cursor": "",
"total": 1
}
location_id — склад сборки. provider_location_id — пункт службы.
JSON — трек
{
"merchant_order_id": "ORD-DBS-2026-304",
"provider_posting_id": "11087654321000",
"provider_check_url": "https://cdek.ru/track?order=11087654321000"
}
JSON — статусы до двери
Обязательны merchant_order_id, status, changed_at, changed_by.
{
"merchant_order_id": "ORD-DBS-2026-304",
"status": "PACKED",
"changed_at": "2026-06-14T15:00:00+03:00",
"changed_by": "MERCHANT"
}
{
"merchant_order_id": "ORD-DBS-2026-304",
"status": "DELIVERING",
"changed_at": "2026-06-15T09:00:00+03:00",
"changed_by": "MERCHANT"
}
{
"merchant_order_id": "ORD-DBS-2026-304",
"status": "DELIVERED",
"changed_at": "2026-06-16T13:20:00+03:00",
"changed_by": "MERCHANT"
}
Для пункта выдачи после PACKED те же DELIVERING и затем READY_FOR_PICKUP. Забрал — DELIVERED. Не забрал или отказался — CANCELLED.
{
"merchant_order_id": "ORD-DBS-2026-305",
"status": "READY_FOR_PICKUP",
"changed_at": "2026-06-16T10:00:00+03:00",
"changed_by": "MERCHANT"
}
Стоимость доставки для сверки с тарифом полигона: POST /v1/order/dbs/delivery-cost/get. Передать client_order_ids и/или merchant_order_ids.