☰ Меню · Рестораны и кафе
Рестораны и кафе
Три задачи, которые POS заведения решает через Loyaltyfy: синхронизация QR-меню, приём заказов со столов и лояльность на кассе.
Синхронизация меню
Обычно источник правды по ценам и наличию это POS. Укажите для каждого блюда свой артикул в external_id и обращайтесь к блюдам по нему: хранить наши id не придётся.
- 1Прочитайте текущее меню
GET /v1/menuвозвращает категории, блюда и модификаторы на всех языках. Добавьте?lang=en, чтобы получить обычные строки на одном языке. - 2Создайте недостающее
POST /v1/menu/itemsсcategory(id категории или ваш код категории, по неизвестному коду категория создаётся),external_id,nameна одном или нескольких языках иprice. Повторная отправка с тем жеexternal_idвернёт уже существующее блюдо. - 3Отправляйте изменения
При каждом изменении или раз в несколько минут отправляйте
POST /v1/menu/items/bulkс ценами и наличием. До 500 блюд за запрос, неизвестные артикулы вернутся вnot_found.
curl https://loyaltyfy.io/api/v1/menu/items/bulk \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "item": "1001", "price": 4800 },
{ "item": "2040", "available": false },
{ "item": "3017", "price": 9900, "old_price": 12000 }
]
}'{
"object": "menu_bulk_result",
"updated": ["1001", "2040"],
"unchanged": [],
"not_found": ["3017"],
"failed": []
}Стоп-лист: available: false оставляет блюдо в меню с пометкой «нет в наличии» и убирает кнопку заказа, visible: false скрывает его. У модификаторов свой переключатель, так что можно отключить овсяное молоко, не отключая кофе:
curl -X PATCH https://loyaltyfy.io/api/v1/menu/option_values/MOD-OAT \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{ "available": false }'Заказы со столов
Если заказы включены (Меню → Заказы в кабинете), гости, отсканировавшие QR на столе, могут отправить корзину в заведение. У каждого стола своя ссылка с номером стола:
https://loyaltyfy.io/m/your-venue?table=12Сумму каждого заказа мы считаем на своей стороне по актуальному меню, поэтому POS может доверять суммам. Заказы с блюдом или модификатором из стоп-листа отклоняются до того, как дойдут до вас.
- 1Получайте новые заказы
Подпишитесь на вебхук
order.createdили опрашивайтеGET /v1/orders?status=newраз в 10-15 секунд. - 2Примите заказ
Создайте заказ в POS, затем вызовите
POST /v1/orders/{id}/accept, передав свой id заказа вexternal_id. Для сопоставления с вашими артикулами используйтеexternal_idкаждой позиции. - 3Ведите по статусам
PATCH /v1/orders/{id}со статусамиpreparing,ready,served,completed. ИлиPOST /v1/orders/{id}/rejectс причиной, если кухня не может взять заказ.
curl "https://loyaltyfy.io/api/v1/orders?status=new" \
-H "Authorization: Bearer sk_test_..."{
"object": "order",
"id": "0c69a81c-0fbc-4333-b26c-789566b9bea4",
"number": 10,
"status": "new",
"table": "7",
"note": "No onions, please",
"currency": "MDL",
"subtotal": 14000,
"item_count": 2,
"items": [
{
"item_id": "a48343bd-9f6e-424a-b003-fe790617f4d6",
"external_id": "2040",
"name": "Zeamă",
"quantity": 2,
"unit_price": 7000,
"total": 14000,
"options": []
}
],
"external_id": null,
"reject_reason": null,
"guest_language": "en",
"source": "qr_menu",
"livemode": true,
"created_at": "2026-10-06T18:14:48.233+00:00",
"accepted_at": null,
"completed_at": null,
"updated_at": "2026-10-06T18:14:48.233+00:00"
}curl -X POST https://loyaltyfy.io/api/v1/orders/0c69a81c-0fbc-4333-b26c-789566b9bea4/accept \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{ "external_id": "POS-ORDER-55821" }'Статусы меняются только вперёд: new → accepted → preparing → ready → served → completed. Из new заказ может перейти в rejected, а любой открытый заказ можно перевести в cancelled. Шаги можно пропускать (сразу из accepted в completed тоже можно). На переход назад придёт 409 invalid_status_transition. Заведения без интеграции с POS ведут те же статусы на экране Заказы, так что ваш POS может только принимать и завершать заказы.
Лояльность на кассе кафе
Всё как в любой интеграции с POS: ищите гостя при скане карты, отправляйте чек после оплаты. В кафе со штамп-картой («каждый 6-й кофе бесплатно») штамп начисляется за чек. Передавайте line_items с вашими артикулами, чтобы заведение видело, что покупают гости.