Отгрузки: узнать, что поставку приняли на СЦ
Зачем
Отгрузка (у WB в кабинете — «поставка WB») считается по-настоящему принятой не в момент, когда мы её закрыли и передали перевозчику, а когда маркетплейс отсканировал её на своём складе или сортировочном центре. Это единственный момент, юридически значимый для приёмки-передачи — до него груз формально ещё в пути и претензии по нему адресуются иначе, чем после.
Статусы отгрузки
ASSEMBLING → HANDED_OVER → ACCEPTED
- ASSEMBLING — отгрузка открыта, мы ещё докладываем в неё заказы.
- HANDED_OVER — закрыта с нашей стороны и передана маркетплейсу; смотрите
closed_at. - ACCEPTED — маркетплейс отсканировал отгрузку на своём складе или сортировочном центре; смотрите
accepted_at.
curl "https://api.perfektpak.ru/v1/shipments?marketplace=WB&status=HANDED_OVER" \
-H "Authorization: Bearer $PP_KEY"
{
"items": [
{ "id": "s_wb_2026_0825_12", "marketplace": "WB", "external_id": "WB-1082345671",
"name": "Поставка 25.08 — кофе и косметика", "status": "HANDED_OVER", "status_label": "Передана в доставку",
"orders_count": 180, "created_at": "2026-08-25T09:00:00+03:00",
"closed_at": "2026-08-25T18:30:00+03:00", "accepted_at": null }
],
"total": 41,
"next_cursor": null
}
Подписаться на переход в ACCEPTED
Вместо того чтобы периодически перечитывать список отгрузок в статусе
HANDED_OVER, подпишитесь на shipment.status_changed
(регистрация и формат — на странице «Вебхуки»)
и реагируйте только на переход в ACCEPTED:
def handle_shipment_status_changed(event):
shipment = event["data"]["object"]
if shipment["status"] == "ACCEPTED":
mark_delivered_to_marketplace(shipment["external_id"], accepted_at=shipment["accepted_at"])
Без вебхука — тот же признак виден и по одной отгрузке напрямую:
curl https://api.perfektpak.ru/v1/shipments/s_wb_2026_0825_12 \
-H "Authorization: Bearer $PP_KEY"
accepted_at — null, пока маркетплейс не
отсканировал отгрузку, и заполняется один раз, когда это происходит; поле
присутствует в ответе всегда (nullable), в отличие от, например,
article у товара, которое просто отсутствует в ответе, если
артикул не заведён — разница разобрана в FAQ на странице
«Быстрый старт».
Что дальше
Отгрузка состоит из заказов — если вам нужен статус каждого заказа отдельно, а не только факт приёма всей партии, смотрите гайд «Статусы заказов FBS в CRM».