Выгрузки

Сырые чеки, позиции и возвраты — для загрузки в своё хранилище (ClickHouse, BigQuery, PostgreSQL) и построения любых отчётов на своей стороне.

Если нужны готовые цифры в разрезах, удобнее OLAP продаж: он агрегирует на сервере и отдаёт в тысячи раз меньше данных.

Доступ — как у всех отчётов: галочка «Доступ к отчётам» на ключе.

Постраничная выгрузка

Все выгрузки устроены одинаково:

ПараметрОписание
date_from, date_toПериод, YYYY-MM-DD, до 31 дня
point_idUUID точки. Без него — все точки бренда
after_idКурсор: отдать записи с id больше этого. Первая страница — 0 или не передавать
limitРазмер страницы, до 1000. По умолчанию 1000

Записи отсортированы по id. В ответе:

{
  "date_from": "2026-09-01",
  "date_to": "2026-09-30",
  "cheques": [ ... ],
  "has_more": true,
  "next_after_id": 12864711
}

Пока has_more: true, запрашивайте следующую страницу с after_id = next_after_id:

after=0
while :; do
  page=$(curl -s "https://backend.mison.uz/api/integrations/v1/export/cheques?date_from=2026-09-01&date_to=2026-09-30&after_id=$after" \
    -H "Authorization: Bearer $TOKEN")
  # ... сохранить $page ...
  [ "$(echo "$page" | jq .has_more)" = "true" ] || break
  after=$(echo "$page" | jq .next_after_id)
done

Курсор надёжнее номера страницы: если во время выгрузки касса пришлёт новый чек, записи не сдвинутся и не задвоятся.

Инкрементальная загрузка

Раз в сутки перезагружайте последние 3 дня целиком — заменяйте записи по id. Касса может досылать чеки с опозданием, а возврат оформляется отдельным документом позже продажи.

Чеки

GET /export/cheques?date_from=2026-09-01&date_to=2026-09-30

Закрытые чеки, вошедшие в период по бизнес-дню закрытия, вместе с оплатами.

{
  "id": 12864657,
  "point_id": "f40d9ea6-bb66-4d8a-9185-219916b68224",
  "cheque_number": 22,
  "business_date": "2026-09-28",
  "opened_at": "2026-09-28 12:53:12",
  "closed_at": "2026-09-28 13:17:16",
  "order_type_id": 3,
  "order_type_sub_id": 175,
  "source_id": 0,
  "external_id": "APP-10045",
  "waiter_id": 2590,
  "cashier_id": 2594,
  "courier_id": 3120,
  "client_id": 88213,
  "table_id": null,
  "guests": 1,
  "goods_amount": 150000,
  "discount": 15000,
  "delivery_amount": 10000,
  "total_amount": 145000,
  "payments": [
    { "payment_type_id": 59, "payment_type_name": "Наличные", "payment_category_id": 1, "amount": 100000 },
    { "payment_type_id": 60, "payment_type_name": "Терминал", "payment_category_id": 2, "amount": 45000 }
  ]
}
ПолеОписание
idИдентификатор чека, тот же, что order_id в заказах
business_dateБизнес-день закрытия — по нему чек входит в отчёты
source_id0 — свой заказ заведения, иначе id интеграции-агрегатора
external_idНомер заказа во внешней системе, если чек пришёл через API или агрегатор
goods_amountСумма позиций до скидки на чек
discountСкидка на чек
delivery_amountСтоимость доставки
total_amountИтог к оплате: позиции − скидка + обслуживание + доставка
paymentsОплаты. Сдача уже вычтена из наличных: сумма оплат равна total_amount

Возврат чек не меняет — он приходит в выгрузке возвратов.

Позиции чеков

GET /export/cheque-lines?date_from=2026-09-01&date_to=2026-09-30

Позиции закрытых чеков периода: блюда и модификаторы. Обслуживание и доставка сюда не входят — они уже есть в итоге чека.

{
  "id": 52709923,
  "cheque_id": 12864657,
  "point_id": "f40d9ea6-bb66-4d8a-9185-219916b68224",
  "business_date": "2026-09-28",
  "product_id": 69965,
  "product_name": "Самса с тыквой",
  "category_id": 117,
  "quantity": 3,
  "price": 5000,
  "amount": 15000,
  "discount": 1500,
  "net_amount": 13500,
  "cost": 6300,
  "waiter_id": 2590,
  "returned_quantity": 0
}
ПолеОписание
idИдентификатор позиции. Курсор выгрузки
priceЦена за единицу
amountСумма позиции со скидкой на саму позицию
discountДоля скидки на чек, пришедшаяся на позицию
net_amountСумма после всех скидок
costСебестоимость позиции на момент продажи
returned_quantityСколько из позиции уже вернули

Возвраты

GET /export/returns?date_from=2026-09-01&date_to=2026-09-30

Проведённые возвраты, вошедшие в период по дате возврата, вместе с позициями.

{
  "id": 498,
  "cheque_id": 12033915,
  "point_id": "f40d9ea6-bb66-4d8a-9185-219916b68224",
  "document_number": 5,
  "created_at": "2026-09-05 19:03:56",
  "business_date": "2026-09-05",
  "total_amount": 820800,
  "service_amount": 0,
  "delivery_amount": 0,
  "refunded_amount": 0,
  "debt_amount": 820800,
  "payment_type_id": 589,
  "payment_type_name": "Долг организации",
  "lines": [
    {
      "cheque_line_id": 49739960,
      "product_id": 81901,
      "product_name": "Куриное филе",
      "quantity": 15.2,
      "price": 54000,
      "amount": 820800,
      "cost": 544540
    }
  ]
}
ПолеОписание
cheque_idЧек, по которому оформлен возврат. Он мог быть в прошлом периоде
total_amountСумма возврата, включая обслуживание и доставку
refunded_amountВыдано деньгами типом оплаты payment_type_id
debt_amountСписано с долга гостя или организации вместо выдачи денег
lines[].cheque_line_idПозиция чека из выгрузки позиций