Пункты выдачи
Lamoda B2B Platform Partner API Lamoda поддерживает доставку заказов в ПВЗ Lamoda (пункты выдачи заказов) и в магазины партнёра (Click & Collect). Для работы с точками самовывоза используются два набора методов: один для получения списка ПВЗ Lamoda, другой — для управления собственными точками партнёра.
Типы точек самовывоза
|
Тип
|
Код
|
Описание
|
|
ПВЗ Lamoda
|
pickup
|
Пункты выдачи заказов Lamoda. Клиент может забрать, примерить и частично выкупить заказ
|
|
Магазин партнёра
|
store
|
Оффлайн-магазины партнёра. Доставка осуществляется курьером Lamoda (LME)
|
Получение ПВЗ Lamoda
Метод возвращает список всех ПВЗ Lamoda, доступных для указанного адреса доставки.
Параметры запроса
|
Параметр
|
Тип
|
Обязательный
|
Описание
|
aoid
|
string
|
Да
|
КЛАДР-код или GUID адреса (13–21 символов, паттерн: [A-Z0-9]{13,21})
|
item_count
|
integer
|
Да
|
Количество товаров в заказе (для проверки ограничений ПВЗ)
|
cart_amount
|
decimal
|
Да
|
Сумма заказа в рублях (паттерн: \d+\.?\d*)
|
country
|
string
|
Нет
|
Код страны, 2 символа (по умолчанию: RU)
|
latitude
|
string
|
Нет
|
Широта для поиска ближайших ПВЗ
|
longitude
|
string
|
Нет
|
Долгота для поиска ближайших ПВЗ
|
is_bankcard_accepted
|
boolean
|
Нет
|
Фильтр по наличию оплаты картой
|
partner_id
|
string
|
Нет
|
Идентификатор партнёра
|
is_liquid
|
boolean
|
Нет
|
Наличие жидкости в заказе
|
method_type_codes[]
|
array
|
Нет
|
Фильтр по типу точки: pickup (ПВЗ) или store (магазины партнёра)
|
Важно: Параметры aoid, item_count и cart_amount — обязательные (nullable=false в коде). Запрос без них вернёт ошибку 400 Bad Request.
Пример запроса
curl -X GET "https://api-b2b.lamoda.ru/api/v1/pickup_points?aoid=7700000000000&item_count=3&cart_amount=5000&method_type_codes[]=pickup" \
-H "Authorization: Bearer YOUR_TOKEN"
Пример ответа
Внимание: Ответ возвращается как плоский массив без обёртки data. Все значения полей — строки (string).
[
{
"id": "3619025932",
"isTryonAllowed": "1",
"isRejectionAllowed": "1",
"isBankcardAccepted": "1",
"is24hours": "0",
"hasHorizon": "1",
"groupId": "3",
"name": "Новокузнецкая",
"latitude": "55.738176",
"longitude": "37.631595",
"city": "Москва",
"street": "Новокузнецкая",
"house": "11"
},
{
"id": "3619025940",
"isTryonAllowed": "1",
"isRejectionAllowed": "1",
"isBankcardAccepted": "1",
"is24hours": "0",
"hasHorizon": "1",
"groupId": "3",
"name": "Тверская",
"latitude": "55.769341",
"longitude": "37.597533",
"city": "Москва",
"street": "Тверская",
"house": "10"
}
]
Поля ответа
|
Поле
|
Тип
|
Описание
|
id
|
string
|
Идентификатор ПВЗ
|
isTryonAllowed
|
string
|
Доступна ли примерка ("1" / "0")
|
isRejectionAllowed
|
string
|
Может ли клиент отказаться от части заказа ("1" / "0")
|
isBankcardAccepted
|
string
|
Принимается ли оплата картой ("1" / "0")
|
is24hours
|
string
|
Работает ли круглосуточно ("1" / "0")
|
hasHorizon
|
string
|
Есть ли горизонт доставки ("1" / "0")
|
groupId
|
string
|
Идентификатор группы ПВЗ
|
name
|
string
|
Название ПВЗ
|
latitude
|
string
|
Широта
|
longitude
|
string
|
Долгота
|
city
|
string
|
Город
|
street
|
string
|
Улица
|
house
|
string
|
Дом
|
Обратите внимание: Все значения в ответе — строки. Булевы поля (isTryonAllowed, is24hours и т.д.) возвращаются как "1"/"0", а не true/false. Полей address, workingHours и methodCode в ответе нет — адрес разделён на city, street, house.
Получение детальной информации о конкретном ПВЗ, включая доступные интервалы доставки.
Параметры запроса
|
Параметр
|
Тип
|
Обязательный
|
Описание
|
id (path)
|
integer
|
Да
|
Идентификатор ПВЗ (из ответа GET /pickup_points)
|
item_count
|
integer
|
Да
|
Количество товаров в заказе
|
cart_amount
|
decimal
|
Да
|
Сумма заказа в рублях
|
aoid
|
string
|
Нет
|
КЛАДР-код или GUID адреса (13–21 символов)
|
country
|
string
|
Нет
|
Код страны (по умолчанию: RU)
|
latitude
|
string
|
Нет
|
Широта
|
longitude
|
string
|
Нет
|
Долгота
|
Важно: item_count и cart_amount обязательны (nullable=false). Без них — ошибка 400. Параметр aoid в этом методе опционален (в отличие от списка ПВЗ).
Пример запроса
curl -X GET "https://api-b2b.lamoda.ru/api/v1/pickup_points/3619025932?item_count=3&cart_amount=5000&aoid=7700000000000" \
-H "Authorization: Bearer YOUR_TOKEN"
Пример ответа
{
"id": "3619025932",
"isTryonAllowed": "1",
"isRejectionAllowed": "1",
"isBankcardAccepted": "1",
"is24hours": "0",
"hasHorizon": "1",
"hasIntervals": "1",
"groupId": "3",
"name": "Новокузнецкая",
"latitude": "55.738176",
"longitude": "37.631595",
"city": "Москва",
"street": "Новокузнецкая",
"house": "11",
"storageDays": 7,
"undergroundStation": "Новокузнецкая",
"deliveryDateMin": "2025-12-04",
"deliveryDateMax": "2025-12-07",
"communicationDescription": "Вход со стороны ул. Новокузнецкая",
"locationDescription": "м. Новокузнецкая, 200м",
"workTime": [
{"day": "1", "timeFrom": "09:00", "timeTo": "21:00"},
{"day": "2", "timeFrom": "09:00", "timeTo": "21:00"},
{"day": "3", "timeFrom": "09:00", "timeTo": "21:00"},
{"day": "4", "timeFrom": "09:00", "timeTo": "21:00"},
{"day": "5", "timeFrom": "09:00", "timeTo": "21:00"},
{"day": "6", "timeFrom": "10:00", "timeTo": "20:00"},
{"day": "7", "timeFrom": "10:00", "timeTo": "18:00"}
],
"serviceLevelTypes": [
{
"name": "С примеркой",
"code": "plus",
"isTryonAllowed": true,
"rejectionFee": 0,
"freeDeliveryNetThreshold": "2000.00",
"deliveryPrice": "0.00",
"checkoutDescription": "Примерьте перед покупкой",
"availableDays": [
{
"date": "2025-12-04",
"availableIntervals": [
{"id": 442789969, "start": "2025-12-04 10:00:00", "end": "2025-12-04 22:00:00"}
]
},
{
"date": "2025-12-05",
"availableIntervals": [
{"id": 442789970, "start": "2025-12-05 10:00:00", "end": "2025-12-05 22:00:00"}
]
}
]
},
{
"name": "Без примерки",
"code": "economy_b2b",
"isTryonAllowed": false,
"rejectionFee": null,
"freeDeliveryNetThreshold": null,
"deliveryPrice": "0.00",
"checkoutDescription": "Получите заказ без примерки",
"availableDays": [
{
"date": "2025-12-04",
"availableIntervals": [
{"id": 442789971, "start": "2025-12-04 10:00:00", "end": "2025-12-04 22:00:00"}
]
}
]
}
]
}
Дополнительные поля (отсутствуют в списке)
|
Поле
|
Тип
|
Описание
|
hasIntervals
|
string
|
Есть ли интервалы доставки для этого ПВЗ ("1" / "0")
|
storageDays
|
integer
|
Срок хранения заказа в ПВЗ (дней)
|
undergroundStation
|
string
|
Ближайшая станция метро
|
deliveryDateMin
|
string
|
Минимальная дата доставки. Формат: YYYY-MM-DD
|
deliveryDateMax
|
string
|
Максимальная дата доставки. Формат: YYYY-MM-DD
|
communicationDescription
|
string
|
Описание, как найти ПВЗ (ориентиры, вход)
|
locationDescription
|
string
|
Краткое описание расположения
|
workTime
|
array
|
Расписание работы по дням (см. структуру ниже)
|
serviceLevelTypes
|
array
|
Доступные уровни сервиса с интервалами (см. структуру ниже)
|
Структура workTime
|
Поле
|
Тип
|
Описание
|
day
|
string
|
День недели: "1" (пн) – "7" (вс)
|
timeFrom
|
string
|
Время открытия. Формат: HH:MM
|
timeTo
|
string
|
Время закрытия. Формат: HH:MM
|
Структура serviceLevelTypes
|
Поле
|
Тип
|
Описание
|
name
|
string
|
Название: «С примеркой», «Без примерки» и т.д.
|
code
|
string
|
Код уровня сервиса: plus, economy, economy_b2b
|
isTryonAllowed
|
boolean
|
Доступна ли примерка
|
rejectionFee
|
integer|null
|
Стоимость отказа от товара
|
freeDeliveryNetThreshold
|
string|null
|
Порог бесплатной доставки (net)
|
deliveryPrice
|
string
|
Стоимость доставки
|
checkoutDescription
|
string
|
Описание для отображения при оформлении заказа
|
availableDays
|
array
|
Массив дат с доступными интервалами (см. ниже)
|
Структура availableDays → availableIntervals
|
Поле
|
Тип
|
Описание
|
date
|
string
|
Дата. Формат: YYYY-MM-DD
|
availableIntervals
|
array
|
Интервалы доставки на эту дату
|
availableIntervals[].id
|
integer
|
ID интервала (используется при создании заказа)
|
availableIntervals[].start
|
string
|
Начало интервала. Формат: YYYY-MM-DD HH:MM:SS
|
availableIntervals[].end
|
string
|
Конец интервала. Формат: YYYY-MM-DD HH:MM:SS
|
Интервалы доставки: Метод возвращает доступные даты и временные слоты, когда клиент сможет забрать заказ. Используйте эти интервалы при создании заказа.
Управление магазинами партнёра
Для услуги Click & Collect (доставка в магазин партнёра) необходимо зарегистрировать магазины в системе Lamoda. Это можно сделать через API или передав Excel-файл вашему KAM.
Особенности доставки в магазины:
- Доставка только курьерской службой LME
- Уровень сервиса — «эконом (без примерки)»
- Lamoda не оповещает клиентов SMS/email о доставке
- Если клиент не выкупил заказ, товары переходят в остатки магазина (не возвращаются на склад Lamoda)
Получение списка всех зарегистрированных магазинов партнёра. Входящих параметров нет.
Пример запроса
curl -X GET "https://api-b2b.lamoda.ru/api/v1/partner-pickups" \
-H "Authorization: Bearer YOUR_TOKEN"
Пример ответа
Внимание: Ответ имеет структуру {count, list}, а не обёртку data. Все поля — в snake_case.
{
"count": 2,
"list": [
{
"id": 12345,
"method_code": "brand_store_moscow_tverskaya",
"name": "Магазин Бренда X ТЦ Европейский",
"external_id": "STORE_001",
"group_code": 3,
"is_active": true,
"latitude": 55.738176,
"longitude": 37.631595,
"is_bankcard_accepted": true,
"is_24hours": false,
"service_levels": [
{
"code": "economy_b2b",
"rejection_fee": null,
"free_delivery_threshold_gross": null,
"free_delivery_threshold_net": null,
"delivery_price": 0,
"payment_type": 1
}
],
"work_time": [
{"day": 1, "time_from": "10:00", "time_to": "22:00"},
{"day": 2, "time_from": "10:00", "time_to": "22:00"},
{"day": 3, "time_from": "10:00", "time_to": "22:00"},
{"day": 4, "time_from": "10:00", "time_to": "22:00"},
{"day": 5, "time_from": "10:00", "time_to": "22:00"},
{"day": 6, "time_from": "10:00", "time_to": "21:00"},
{"day": 7, "time_from": "10:00", "time_to": "21:00"}
],
"storage_life": 7,
"city": "Москва",
"street": "Тверская",
"house": "15"
}
]
}
Поля PartnerPickup
|
Поле
|
Тип
|
Описание
|
id
|
integer
|
Внутренний идентификатор магазина в Lamoda
|
method_code
|
string
|
Уникальный код магазина
|
name
|
string
|
Название магазина
|
external_id
|
string
|
ID магазина в системе партнёра
|
group_code
|
integer
|
Идентификатор группы ПВЗ
|
is_active
|
boolean
|
Активен ли магазин
|
latitude
|
float
|
Широта
|
longitude
|
float
|
Долгота
|
is_bankcard_accepted
|
boolean
|
Принимается ли оплата картой
|
is_24hours
|
boolean
|
Работает ли круглосуточно
|
service_levels
|
array
|
Уровни сервиса (см. структуру ниже)
|
work_time
|
array
|
Расписание работы по дням (1 = пн, 7 = вс)
|
storage_life
|
integer
|
Срок хранения заказа (дней)
|
city
|
string
|
Город
|
street
|
string|null
|
Улица
|
house
|
string
|
Номер дома
|
Структура ServiceLevel
|
Поле
|
Тип
|
Описание
|
code
|
string
|
Код уровня сервиса: plus, economy, economy_b2b
|
rejection_fee
|
integer|null
|
Стоимость отказа от товара
|
free_delivery_threshold_gross
|
string|null
|
Порог бесплатной доставки (gross)
|
free_delivery_threshold_net
|
string|null
|
Порог бесплатной доставки (net)
|
delivery_price
|
integer
|
Стоимость доставки
|
payment_type
|
integer
|
Тип оплаты
|
Нейминг: Обратите внимание на различие нейминга между ПВЗ Lamoda (camelCase: isTryonAllowed, groupId) и магазинами партнёра (snake_case: is_active, group_code). Это разные контроллеры с разной сериализацией.
Добавление нового магазина партнёра.
Обязательные поля запроса
|
Поле
|
Тип
|
Обязательный
|
Описание
|
method_code
|
string (64)
|
Да
|
Уникальный код магазина (латиница, цифры, подчёркивания)
|
name
|
string (200)
|
Да
|
Название магазина
|
external_id
|
string (255)
|
Да
|
ID магазина в системе партнёра
|
latitude
|
float
|
Да
|
Широта (−90…90)
|
longitude
|
float
|
Да
|
Долгота (−180…180)
|
work_time
|
array
|
Да
|
Расписание работы (массив объектов {day, time_from, time_to}, дни уникальны)
|
storage_life
|
integer
|
Да
|
Срок хранения заказа (дней)
|
Примечание: Поля group_code, is_active, is_bankcard_accepted, is_24hours и service_levels назначаются системой при создании. Они появляются только в ответе GET.
Пример запроса
curl -X POST "https://api-b2b.lamoda.ru/api/v1/partner-pickups" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"method_code": "brand_store_moscow_tverskaya",
"name": "Магазин Бренда X ТЦ Европейский",
"external_id": "STORE_001",
"latitude": 55.738176,
"longitude": 37.631595,
"work_time": [
{"day": 1, "time_from": "10:00", "time_to": "22:00"},
{"day": 2, "time_from": "10:00", "time_to": "22:00"},
{"day": 3, "time_from": "10:00", "time_to": "22:00"},
{"day": 4, "time_from": "10:00", "time_to": "22:00"},
{"day": 5, "time_from": "10:00", "time_to": "22:00"},
{"day": 6, "time_from": "10:00", "time_to": "21:00"},
{"day": 7, "time_from": "10:00", "time_to": "21:00"}
],
"storage_life": 7
}'
Частичное обновление данных магазина партнёра. Передаются только те поля, которые нужно изменить. Поле method_code обязательно — оно идентифицирует обновляемый магазин.
Допустимые поля для обновления
|
Поле
|
Описание
|
method_code
|
Обязательно — идентификатор обновляемого магазина
|
name
|
Новое название магазина
|
external_id
|
Новый внешний ID
|
latitude, longitude
|
Новые координаты
|
work_time
|
Новое расписание (полный массив)
|
storage_life
|
Новый срок хранения
|
Пример запроса
curl -X PATCH "https://api-b2b.lamoda.ru/api/v1/partner-pickups" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"method_code": "brand_store_moscow_tverskaya",
"name": "Магазин Бренда X (обновлённое название)",
"storage_life": 14
}'
Адрес доставки в ПВЗ
При создании заказа с доставкой в ПВЗ адрес указывается с pickupPointId:
{
"shippingAddress": {
"zipcode": "125047",
"region": "Москва",
"city": "Москва",
"street": "1-я Тверская",
"houseNum": "д.13 с1",
"pickupPointId": 1068467
}
}
Обратите внимание: Для доставки в ПВЗ поле pickupPointId содержит идентификатор пункта выдачи (тип integer, не строка). Для курьерской доставки pickupPointId равен null.
Процесс выбора ПВЗ при создании заказа
- GET /api/v1/pickup_points — получить список ПВЗ/магазинов (используйте фильтр
method_type_codes[])
- GET /api/v1/pickup_points/{id} — получить интервалы доставки для выбранной точки
- GET /api/v1/orders — создать заказ с указанием
pickupPointId и выбранного интервала
Статусы заказов с доставкой в магазин
|
Статус
|
Описание
|
Delivered to store
|
Заказ доставлен в магазин партнёра
|
Rejected by store
|
Доставка в магазин не удалась (после 3 попыток)
|
Postponed
|
Попытка доставки отложена (до 2 раз)
|
См. также