iikoCloud API: Передать заказ доставки с сайта на кассу

Сценарий из mcp-everything. Актуально на 2026-10-24.

Заказ с сайта сразу появляется на кухне и у курьеров — без ручного переноса оператором.

  1. Получи типы оплат: POST /api/1/payment_types с organizationIds — нужен ID типа оплаты для order.payments.
  2. Создай заказ: POST /api/1/deliveries/create с organizationId, terminalGroupId и order — phone (с +), orderServiceType (DeliveryByCourier или DeliveryByClient для самовывоза), deliveryPoint.address, items (тип, productId, amount; productSizeId — если у блюда есть размеры), payments. Передай свой order.id (UUID) — он защитит от дублей при повторе.
  3. createOrderSettings.checkStopList = true не даст создать заказ с позицией из стоп-листа.
  4. Создание асинхронное: в ответе correlationId. Проверяй POST /api/1/commands/status с organizationId и correlationId, пока state не станет Success или Error.
  5. Текущий статус и детали заказа — POST /api/1/deliveries/by_id с organizationId и orderIds. Время в iiko — локальное время терминала, без часового пояса.
import time, uuid, requests

API = "https://api-ru.iiko.services/api/1"
H = {"Authorization": f"Bearer {token}"}
org, tg = "<organizationId>", "<terminalGroupId>"
order_id = str(uuid.uuid4())

resp = requests.post(f"{API}/deliveries/create", headers=H, json={
    "organizationId": org,
    "terminalGroupId": tg,
    "createOrderSettings": {"checkStopList": True},
    "order": {
        "id": order_id,
        "externalNumber": "SITE-1042",
        "phone": "+79990001122",
        "orderServiceType": "DeliveryByCourier",
        "deliveryPoint": {"address": {"street": {"name": "Ленина", "city": "Екатеринбург"}, "house": "10"},
                          "comment": "Домофон 45"},
        "items": [{"type": "Product", "productId": "<productId>", "amount": 2}],
        "payments": [{"paymentTypeKind": "Card", "paymentTypeId": "<paymentTypeId>", "sum": 1580}],
        "comment": "Без лука",
    },
}).json()

while True:
    st = requests.post(f"{API}/commands/status", headers=H,
                       json={"organizationId": org, "correlationId": resp["correlationId"]}).json()
    if st["state"] != "InProgress":
        break
    time.sleep(2)
print(st["state"])

Базовые URL

Авторизация

Тип: Bearer-токен

Токен (JWT) действует 1 час; refresh-токена нет — запрашивайте новый до истечения срока. Старый метод POST /api/1/access_token с apiLogin устарел.

Методы сценария

POST /api/1/payment_types — Типы оплат

Параметр Где Тип Обяз. Описание
organizationIds body array да ID организаций

POST /api/1/deliveries/create — Создание заказа на доставку

Команда: статус выполнения проверяется через /api/1/commands/status.

Параметр Где Тип Обяз. Описание
organizationId body string да ID организации (uuid)
terminalGroupId body string нет ID терминальной группы, куда отправить заказ
createOrderSettings.transportToFrontTimeout body integer нет Сколько секунд даётся на доставку заказа в iikoFront
createOrderSettings.checkStopList body boolean нет Проверять позиции по стоп-листу
order body object да Заказ
order.id body string нет ID заказа (уникальный uuid); если не передан — генерируется
order.externalNumber body string нет Внешний номер заказа
order.completeBefore body string нет Время выполнения yyyy-MM-dd HH:mm:ss.fff, локальное для терминала
order.phone body string да Телефон: начинается с +, не меньше 8 цифр
order.orderTypeId body string нет Тип заказа; указывается он или orderServiceType
order.orderServiceType body string нет Тип обслуживания; указывается он или orderTypeId
order.deliveryPoint.address body object нет Адрес доставки (не нужен для самовывоза)
order.deliveryPoint.coordinates body object нет Координаты адреса
order.deliveryPoint.comment body string нет Доп. информация
order.comment body string нет Комментарий к заказу
order.customer.type body string да Тип клиента (если передаётся customer)
order.guests.count body integer да Число персон — определяет число приборов (если передаётся guests)
order.items body array да Позиции заказа
order.items[].type body string да Тип позиции
order.items[].amount body number да Количество
order.items[].productSizeId body string нет Размер; обязателен, если у позиции есть шкала размеров
order.items[].comment body string нет Комментарий
order.combos body array нет Комбо: id, name, amount, price, sourceId
order.payments body array нет Оплаты заказа
order.marketingSourceId body string нет Рекламный источник
order.priceCategoryId body string нет Ценовая категория

POST /api/1/deliveries/by_id — Заказы доставки по ID

Параметр Где Тип Обяз. Описание
organizationId body string да ID организации
orderIds body array нет ID заказов; обязательно, если нет posOrderIds
posOrderIds body array нет ID заказов в POS; обязательно, если нет orderIds
sourceKeys body array нет Ключи источников
returnExternalDataKeys body array нет Ключи внешних данных

POST /api/1/commands/status — Статус команды

Код ответа 410 — correlationId больше не поддерживается.

Параметр Где Тип Обяз. Описание
organizationId body string да ID организации
correlationId body string да ID операции из ответа команды

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://api-ru.iiko.services/docs Вся интеграция одним документом: https://mcp-everything.ru/integrations/iiko.md