Download OpenAPI specification:Download
Внешнее API Rentu для интеграций торговых центров: выручка, чеки, посещаемость, аномалии, состояние касс, заявки и пропуска портала арендаторов.
Это машиночитаемый справочник методов. Повествовательная документация — как получить доступ, чем отличаются тарифы, что повторять при ошибке — на отдельном сайте документации.
| Среда | URL |
|---|---|
| Production | https://api.rentu.ru/api/external/v2 |
| Stage | https://stage-api.rentu.ru/api/external/v2 |
POST /auth/token меняет пару client_id + client_secret на JWT. Токен живёт час и передаётся заголовком Authorization: Bearer <token>. Токены v1 и v2 несовместимы в обе стороны.
Ключ принадлежит сотруднику торгового центра: доступные центры определяются его ролями и проверяются на каждом запросе. Сняли роль — центр пропадает из выдачи, отдельно отзывать ключ не нужно.
Успех — {"success": true, "data": ..., "meta": ...}, ошибка — {"success": false, "error": {"code": ..., "message": ..., "details": ...}}.
Ветвитесь по error.code, а не по HTTP-статусу: одному статусу соответствует несколько кодов. Повторять имеет смысл только token_expired (после обновления токена), rate_limited (после Retry-After), rights_unavailable, traffic_unavailable, portal_unavailable, query_timeout и internal_error.
Тариф — свойство торгового центра, а не ключа: один ключ может покрывать несколько центров на разных тарифах.
| Basic | PRO | |
|---|---|---|
| Период в одном запросе, подневные данные | 31 день | 366 дней |
| Период в одном запросе, месячные итоги | 12 месяцев | 36 месяцев |
| Самая свежая дата | вчера | сегодня |
| Чеки и аномалии | — | да |
| Посещаемость по часам, по зоне и по точке | — | да |
| Расчётный товарооборот (turnover) | — | да |
| Начисленная аренда (rent) и OCR | — | да |
| Заявки и пропуска портала арендаторов | да | да |
| Средний чек, выручка на м² | — | да |
| Частота | 60/мин, 5 000/сутки | 300/мин, 50 000/сутки |
Заявки и пропуска портала — исключение: они доступны на любом тарифе, и пределы периода и свежести к ним не применяются, период может быть любым. Объём одного ответа там ограничивает per_page, а не тариф. Лимиты частоты действуют наравне с остальными методами.
Денежные суммы — целые копейки. Даты в параметрах — YYYY-MM-DD. Моменты времени в ответах — ISO 8601 со смещением таймзоны центра; сама зона приходит в meta.time_zone. Границы суток считаются в таймзоне центра, а не в UTC.
Считаются по торговому центру, а не по ключу: сотрудники одного центра делят общий бюджет запросов. Заводить дополнительные ключи ради скорости бесполезно. На успешных ответах приходят X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset для минутного окна; на 429 — ещё и Retry-After.
Аномалии продаж, найденные системой: те же, что видит менеджер ТЦ.
Только тариф PRO. Период задаётся start_date/end_date (до 366 дней),
границы суток считаются в таймзоне ТЦ.
Фильтры: shop_id, status (new, completed, archived),
level (high, medium, low). Сортировка — от свежих к старым.
Пагинация page/per_page (по умолчанию 100, максимум 500).
| sc_id | string Example: 6abcc5b5ece0d1732eefcc63 |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": "6abcc5b6ece0d1732eefcc73",
- "status": "new",
- "magnitude": 21.73,
- "date": "2026-09-28T18:17:58+10:00",
- "created_at": "2026-09-30T18:17:58+10:00",
- "type": 365,
- "type_title": "Средний чек возврата значительно превышает средний чек прихода",
- "level": "high",
- "shop_id": "6abcc5b5ece0d1732eefcc65",
- "shop_name": "Снаб ОАО Мясников",
- "title": "Аномально высокий процент расчета за безналичный расчет",
- "description": "Как правило идет сокрытие выручки за наличный расчет",
- "period": [
- "2026-09-28T08:49:55+10:00",
- "2026-09-29T03:26:33+10:00"
]
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 100,
- "total": 1
}, - "time_zone": "Asia/Vladivostok"
}
}Приём посещаемости за сутки от собственных счётчиков ТЦ. Доступно на любом тарифе.
Обязательны date и visitors. scope задаёт адресата тем же
словарём, что и чтение посещаемости: sc — периметр всего центра
(по умолчанию), zone — отдельная зона, и тогда обязателен zone_id
из справочника зон. При scope=sc передавать zone_id нельзя.
Дата в будущем отклоняется, граница считается в таймзоне ТЦ. Повторный вызов за те же сутки перезаписывает значение.
В API v1 это были два отдельных метода — по ТЦ и по зоне; здесь они сведены в один.
| sc_id | string Example: 6abcc5b6ece0d1732eefcc79 |
| Accept | any Example: application/json |
| Content-Type | any Example: application/x-www-form-urlencoded |
date=2026-09-29&visitors=5000
{- "success": true,
- "data": {
- "date": "2026-09-29",
- "scope": "sc",
- "zone_id": null,
- "visitors": 5000
}
}Посещаемость по данным системы подсчёта. Период — start_date/end_date по тарифу.
granularity: day (по умолчанию), week, month — Basic; hour — только PRO,
и период для него не больше 31 дня.
scope: sc (по умолчанию) — Basic; zone (с zone_id из справочника зон)
и shop (с shop_id) — только PRO. Неподходящее тарифу значение — 403 plan_required.
Метки периода: дата для day/week/month, время со смещением ТЦ для hour.
Если ТЦ или точка не покрыты зонами подсчёта, data пустой — это не ошибка.
Если система подсчёта в ТЦ не настроена вовсе — 404 traffic_not_configured;
если подсистема подсчёта не ответила — 503 traffic_unavailable, запрос можно повторить.
| sc_id | string Example: 6abcc5b6ece0d1732eefcc7f |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "date": "2026-09-29",
- "visitors_in": 232,
- "visitors_out": 879
}
], - "meta": {
- "granularity": "day",
- "scope": "sc",
- "time_zone": "Asia/Krasnoyarsk"
}
}Выдача токена по client_credentials (client_id + client_secret выдаются командой Rentu).
Токен живёт 1 час, передаётся в заголовке Authorization: Bearer <token>.
Токены v2 не работают в v1 и наоборот.
Ключ принадлежит сотруднику ТЦ, и доступ к данным определяется его ролями: отобрали роль — ТЦ пропадает из выдачи, отдельный отзыв ключа не нужен.
Глубина данных зависит от тарифа торгового центра, а не ключа: один ключ может покрывать несколько ТЦ на разных тарифах. Частота запросов тоже считается по ТЦ — сотрудники одного ТЦ делят общий лимит.
| Accept | any Example: application/json |
| Content-Type | any Example: application/json |
{- "client_id": "7cec0f36-a328-4cfb-8bf2-7ab7ed01cada",
- "client_secret": "v2-client-secret-000000000000000000000000000000"
}{- "success": true,
- "access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI3Y2VjMGYzNi1hMzI4LTRjZmItOGJmMi03YWI3ZWQwMWNhZGEiLCJhdWQiOiJleHRlcm5hbC12MiIsImp0aSI6IjJjNGI2Njk2LTgyZDAtNGUyOS04ZmYwLTAwN2IwMTY0YTY1OSIsImlhdCI6MTc5MDc1NjI3OSwiZXhwIjoxNzkwNzU5ODc5fQ._elwB9VLjI-gDwHwOqnIVlq_MFOlKf_9FUu6ceQ1VY0VQ_uf0eOR6UQW1ZjKepnKLYb1lr0msjHqoa6saBYZ8g",
- "token_type": "Bearer",
- "expires_in": 3600
}Приём событий ТЦ — акций, распродаж, ремонтов. Доступно на любом тарифе: за передачу данных нам мы денег не берём.
Обязательны name, description, event_type, start_date, end_date.
event_type — calendar, marketing или other; служебные типы платформы
снаружи не принимаются. shop_ids — точки, к которым относится событие,
проверяются по этому ТЦ. color — HEX вида #RRGGBB, по умолчанию серый;
другие записи цвета (rgb(...), имена) не принимаются.
Метод создаёт новое событие. Полный дубль — совпали название, тип
и обе даты в рамках ТЦ — отклоняется с 409 already_exists_in_sc.
Существующее событие при этом не меняется: чтобы поправить описание или
цвет, редактируйте событие в интерфейсе ТЦ.
| sc_id | string Example: 6abcc5b7ece0d1732eefcc90 |
| Accept | any Example: application/json |
| Content-Type | any Example: application/x-www-form-urlencoded |
name=%D0%A7%D1%91%D1%80%D0%BD%D0%B0%D1%8F+%D0%BF%D1%8F%D1%82%D0%BD%D0%B8%D1%86%D0%B0&description=%D0%A1%D0%BA%D0%B8%D0%B4%D0%BA%D0%B8+%D0%B2%D0%BE+%D0%B2%D1%81%D1%91%D0%BC+%D0%A2%D0%A6&event_type=marketing&start_date=2026-09-30&end_date=2026-10-03&shop_ids[]=6abcc5b7ece0d1732eefcc92
{- "success": true,
- "data": {
- "id": "6abcc5b8ece0d1732eefcca2",
- "name": "Чёрная пятница",
- "description": "Скидки во всём ТЦ",
- "event_type": "marketing",
- "color": "#EAEAEA",
- "sell_location_ids": [
- "6abcc5b7ece0d1732eefcc92"
], - "start_date": "2026-09-30",
- "end_date": "2026-10-03"
}
}Кассы торговой точки и признаки их состояния: статус подключения,
когда пришёл последний чек, открыта ли смена, когда заканчивается ФН.
Даты — ISO 8601 в таймзоне ТЦ, сама зона в meta.time_zone.
Пагинации нет — касс у точки единицы.
Архивные кассы по умолчанию не отдаются. Чтобы получить их вдобавок
к действующим, передайте archived=true; отличать их можно по полю is_archived.
| sc_id | string Example: 6abcc5b8ece0d1732eefcca8 |
| shop_id | string Example: 6abcc5b8ece0d1732eefccaa |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": "6abcc5b8ece0d1732eefccb8",
- "model": "[\"corrupti\", \"aperiam\"]",
- "reg_id": "0000000000000001",
- "serial_number": "0000000001",
- "connection_status": "active",
- "connection_from": "2026-08-30T00:00:00+00:00",
- "provider": "[\"sed\", \"est\"]",
- "fiscal_number": "8749106512210113",
- "is_archived": false,
- "first_document_datetime": "2026-09-23T12:18:00+04:00",
- "last_document_datetime": "2026-09-30T12:18:00+04:00",
- "last_open_shift_datetime": "2026-09-30T12:18:00+04:00",
- "fn_expiration_datetime": "2027-09-30T12:18:00+04:00"
}
], - "meta": {
- "time_zone": "Europe/Samara"
}
}Пропуска арендаторов для реестра ЧОПа. Доступны на любом тарифе.
Передаётся не больше одной полной пары периода: start_created_date/end_created_date
или start_active_date/end_active_date. Active-период выбирает пропуска,
срок действия которых пересекается с запрошенным периодом — пропуск, оформленный
заранее, по дате создания в смену не попадёт. Пара обязательна, кроме выборки
по ticket_uids (до 500 номеров, можно сочетать с периодом).
Опциональный фильтр statuses[]. Без фильтра возвращаются все статусы
и архивные записи.
Номер пропуска — id пропуска в портале арендаторов.
author — автор связанной заявки, а для пропуска без заявки — создатель пропуска.
Идентификатор автора строковый и совпадает с его id в main.
Номера из ticket_uids, которых нет в этом ТЦ, игнорируются:
в ответ попадают пропуска только по найденным заявкам.
Результат отсортирован от новых пропусков к старым.
| sc_id | string Example: 6abcc5b8ece0d1732eefccbd |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": 100500,
- "status": "approved",
- "pass_type": "vehicle",
- "person": null,
- "vehicle": {
- "plate_number": "А123ВС77",
- "brand": "ГАЗ",
- "vehicle_type": "truck_1_5_3t"
}, - "ticket_uid": "Z-MRM-12345",
- "created_at": "2026-08-27T10:20:00+03:00",
- "valid_from": "2026-08-28T08:00:00+03:00",
- "valid_to": "2026-08-28T20:00:00+03:00",
- "permanent": false,
- "work_period": "day",
- "author": {
- "id": "6abcc5b8ece0d1732eefccc0",
- "name": "Иван Иванов",
- "email": "author@example.com",
- "mall_staff": false,
- "phone": "+7 999 000-00-00"
}, - "tags": [
- {
- "id": 1,
- "name": "Разгрузка"
}
]
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 100,
- "total": 1
}, - "time_zone": "Europe/Moscow"
}
}Заявки арендаторов для реестра ЧОПа. Доступны на любом тарифе.
Выборка задаётся либо ровно одной полной парой периода
(start_created_date/end_created_date или start_active_date/end_active_date),
либо списком ticket_uids[] (до 100 номеров). Active-период выбирает заявки,
интервалы действия которых пересекаются с запрошенным периодом.
Длина периода не ограничена. Неизвестные номера в ticket_uids[]
игнорируются — в ответ попадают только найденные заявки.
Опциональный фильтр statuses[]. Без фильтра возвращаются все статусы,
включая архивные записи.
Каждый элемент содержит бизнес-тип заявки (ticket_type с вложенным children
либо null), параметры с выбранными значениями, торговую точку, арендатора,
автора, дополнительные поля и условия согласования — отдельного запроса
за деталями заявки нет.
parameters — параметры и их значения; значение, которое пользователь не
выбирал, в ответ не попадает, у такого параметра values пустой.
custom_fields не содержат файлов и ссылок на них: у файловых полей
value всегда null. У option-полей ответ лежит в selected_options.
agreement_comments — условия согласования объектами {id, body, created_at};
условия ставят разные отделы, поэтому возвращаются все, а не последнее.
Пагинация: page (1), per_page (50, максимум 100).
Результат отсортирован от новых заявок к старым.
| sc_id | string Example: 6abcc5b9ece0d1732eefcccb |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "ticket_uid": "Z-MRM-12345",
- "title": "Ввоз оборудования",
- "status": "agreed",
- "archived": false,
- "work_period": "day",
- "text": "Доставка оборудования",
- "created_at": "2026-08-27T10:15:00+03:00",
- "resolution_created_at": "2026-08-27T12:00:00+03:00",
- "begin_time": "2026-08-28T08:00:00+03:00",
- "end_time": "2026-08-28T20:00:00+03:00",
- "ticket_type": {
- "id": 12,
- "title": "Ввоз / вывоз",
- "analytics_key": "import",
- "children": {
- "id": 34,
- "title": "Ввоз оборудования",
- "analytics_key": null
}
}, - "has_passes": true,
- "parameters": [
- {
- "id": 56,
- "title": "Крупногабаритный груз",
- "analytics_key": null,
- "values": [
- {
- "id": 78,
- "title": "Вход №3",
- "analytics_key": "entrance_3"
}
]
}
], - "sell_location": {
- "id": "SL-1",
- "name": "Мармелад"
}, - "arendator": {
- "id": "AR-1",
- "legal_name": "ООО Арендатор",
- "inn": "7700000000"
}, - "author": {
- "id": "US-1",
- "name": "Иван Иванов",
- "email": "author@example.com",
- "mall_staff": true,
- "phone": "+7 (999) 000-00-00"
}, - "custom_fields": [
- {
- "id": 90,
- "title": "Способ доставки",
- "field_type": "radiobutton_with_options",
- "value": null,
- "selected_options": [
- {
- "id": 91,
- "value": "Курьер"
}
]
}
], - "agreement_comments": [
- {
- "id": 8231,
- "body": "Работы только после 22:00",
- "created_at": "2026-08-27T14:10:00+03:00"
}
]
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 100,
- "total": 1
}, - "time_zone": "Europe/Moscow"
}
}Почековая выгрузка (только тариф PRO). Все суммы — в копейках,
даты-время — ISO 8601 с явным смещением таймзоны ТЦ.
Требуется полная пара дат: created (start_created_date+end_created_date)
и/или received (start_received_date+end_received_date); каждая пара — не больше 30 дней.
Пагинация page/per_page (по умолчанию 500, максимум 1000), метаданные в meta.pagination.
document_types — какие типы фискальных документов выгружать, через запятую.
По умолчанию только продажи: receipt, delivery, form_of_strict_accountability.
Полный список значений — в описании поля document_type; неизвестное значение даёт 422.
| sc_id | string Example: 6abcc5b9ece0d1732eefccd1 |
| shop_id | string Example: 6abcc5b9ece0d1732eefccd3 |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": "6abcc5b9ece0d1732eefcce9",
- "document_type": "receipt",
- "created_datetime": "2026-09-27T10:18:01+02:00",
- "received_datetime": "2026-09-27T10:18:01+02:00",
- "kkt_id": "6abcc5b9ece0d1732eefcce2",
- "kkt_reg_id": "0000000000000002",
- "kkt_serial_number": "0000000002",
- "kkt_fiscal_drive_number": "2612741105109183",
- "fiscal_document_number": null,
- "shift_number": null,
- "shift_check_number": null,
- "operation_type": 2,
- "total_sum": 12,
- "cash_sum": 17,
- "ecash_sum": 66,
- "advanced_sum": 159,
- "full_prepayment_sum": 40,
- "partial_prepayment_sum": 22,
- "prepaid_sum": 55,
- "credit_sum": 2,
- "provision_sum": 42,
- "nds_no_sum": 37,
- "nds_0_sum": 76,
- "nds_5_sum": 0,
- "nds_7_sum": 0,
- "nds_10_sum": 10,
- "nds_18_sum": 60,
- "nds_20_sum": 91,
- "nds_22_sum": 0,
- "nds_105_sum": 0,
- "nds_107_sum": 0,
- "nds_110_sum": 13,
- "nds_118_sum": 42,
- "nds_120_sum": 16,
- "nds_122_sum": 0,
- "items_count": null
}, - {
- "id": "6abcc5b9ece0d1732eefcce7",
- "document_type": "receipt",
- "created_datetime": "2026-09-28T10:18:01+02:00",
- "received_datetime": "2026-09-28T10:18:01+02:00",
- "kkt_id": "6abcc5b9ece0d1732eefcce2",
- "kkt_reg_id": "0000000000000002",
- "kkt_serial_number": "0000000002",
- "kkt_fiscal_drive_number": "2612741105109183",
- "fiscal_document_number": null,
- "shift_number": null,
- "shift_check_number": null,
- "operation_type": 3,
- "total_sum": 46,
- "cash_sum": 87,
- "ecash_sum": 22,
- "advanced_sum": 209,
- "full_prepayment_sum": 86,
- "partial_prepayment_sum": 36,
- "prepaid_sum": 78,
- "credit_sum": 92,
- "provision_sum": 14,
- "nds_no_sum": 49,
- "nds_0_sum": 81,
- "nds_5_sum": 0,
- "nds_7_sum": 0,
- "nds_10_sum": 14,
- "nds_18_sum": 46,
- "nds_20_sum": 72,
- "nds_22_sum": 0,
- "nds_105_sum": 0,
- "nds_107_sum": 0,
- "nds_110_sum": 41,
- "nds_118_sum": 91,
- "nds_120_sum": 8,
- "nds_122_sum": 0,
- "items_count": null
}, - {
- "id": "6abcc5b9ece0d1732eefcce5",
- "document_type": "receipt",
- "created_datetime": "2026-09-29T10:18:01+02:00",
- "received_datetime": "2026-09-29T10:18:01+02:00",
- "kkt_id": "6abcc5b9ece0d1732eefcce2",
- "kkt_reg_id": "0000000000000002",
- "kkt_serial_number": "0000000002",
- "kkt_fiscal_drive_number": "2612741105109183",
- "fiscal_document_number": null,
- "shift_number": null,
- "shift_check_number": null,
- "operation_type": 3,
- "total_sum": 29,
- "cash_sum": 48,
- "ecash_sum": 79,
- "advanced_sum": 64,
- "full_prepayment_sum": 42,
- "partial_prepayment_sum": 21,
- "prepaid_sum": 60,
- "credit_sum": 36,
- "provision_sum": 92,
- "nds_no_sum": 12,
- "nds_0_sum": 57,
- "nds_5_sum": 0,
- "nds_7_sum": 0,
- "nds_10_sum": 43,
- "nds_18_sum": 35,
- "nds_20_sum": 40,
- "nds_22_sum": 0,
- "nds_105_sum": 0,
- "nds_107_sum": 0,
- "nds_110_sum": 3,
- "nds_118_sum": 79,
- "nds_120_sum": 90,
- "nds_122_sum": 0,
- "items_count": null
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 500,
- "total": 3
}, - "time_zone": "Europe/Kaliningrad"
}
}Дневные агрегаты торговой точки. Все суммы — в копейках.
Пагинация page/per_page (по умолчанию 100, максимум 366), метаданные в meta.
Тариф Basic: данные до вчера (D+1), период до 92 дней. Тариф PRO: включая сегодня, период до 366 дней.
| sc_id | string Example: 6abcc5baece0d1732eefcd0c |
| shop_id | string Example: 6abcc5baece0d1732eefcd0e |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "date": "2026-09-27",
- "kkts_count": 0,
- "receipts_count": 152,
- "income_receipts_count": 9326,
- "refund_receipts_count": 2748,
- "income_sum": 6800,
- "income_without_nds_sum": 658800,
- "refund_sum": 394500,
- "refund_without_nds_sum": 441200,
- "cash_sum": 6737,
- "ecash_sum": 8299,
- "advanced_sum": 19385,
- "full_prepayment_sum": 152,
- "partial_prepayment_sum": 9536,
- "prepaid_sum": 692,
- "credit_sum": 3361,
- "provision_sum": 8527,
- "refund_cash_sum": 3181,
- "refund_ecash_sum": 9912,
- "refund_prepaid_sum": 2228,
- "refund_credit_sum": 90,
- "refund_provision_sum": 2586,
- "nds_no_sum": 2332,
- "nds_0_sum": 9877,
- "nds_5_sum": 3020,
- "nds_7_sum": 1921,
- "nds_10_sum": 3336,
- "nds_18_sum": 3996,
- "nds_20_sum": 5978,
- "nds_22_sum": 627,
- "nds_105_sum": 6766,
- "nds_107_sum": 9277,
- "nds_110_sum": 8266,
- "nds_118_sum": 6628,
- "nds_120_sum": 4545,
- "nds_122_sum": 4806,
- "refund_nds_no_sum": 1674,
- "refund_nds_0_sum": 9152,
- "refund_nds_5_sum": 2920,
- "refund_nds_7_sum": 6158,
- "refund_nds_10_sum": 7550,
- "refund_nds_18_sum": 2221,
- "refund_nds_20_sum": 4411,
- "refund_nds_22_sum": 5618,
- "refund_nds_105_sum": 8299,
- "refund_nds_107_sum": 920,
- "refund_nds_110_sum": 6933,
- "refund_nds_118_sum": 2358,
- "refund_nds_120_sum": 4256,
- "refund_nds_122_sum": 7136,
- "turnover": 0
}, - {
- "date": "2026-09-28",
- "kkts_count": 0,
- "receipts_count": 524,
- "income_receipts_count": 8634,
- "refund_receipts_count": 6807,
- "income_sum": 15800,
- "income_without_nds_sum": 16900,
- "refund_sum": 882000,
- "refund_without_nds_sum": 4700,
- "cash_sum": 7988,
- "ecash_sum": 6609,
- "advanced_sum": 18621,
- "full_prepayment_sum": 8038,
- "partial_prepayment_sum": 2037,
- "prepaid_sum": 8526,
- "credit_sum": 1131,
- "provision_sum": 838,
- "refund_cash_sum": 9398,
- "refund_ecash_sum": 1872,
- "refund_prepaid_sum": 2931,
- "refund_credit_sum": 5555,
- "refund_provision_sum": 4905,
- "nds_no_sum": 781,
- "nds_0_sum": 420,
- "nds_5_sum": 5529,
- "nds_7_sum": 158,
- "nds_10_sum": 2797,
- "nds_18_sum": 9356,
- "nds_20_sum": 3992,
- "nds_22_sum": 9969,
- "nds_105_sum": 6719,
- "nds_107_sum": 9779,
- "nds_110_sum": 9688,
- "nds_118_sum": 6602,
- "nds_120_sum": 1168,
- "nds_122_sum": 3838,
- "refund_nds_no_sum": 7603,
- "refund_nds_0_sum": 717,
- "refund_nds_5_sum": 3223,
- "refund_nds_7_sum": 3194,
- "refund_nds_10_sum": 7766,
- "refund_nds_18_sum": 3058,
- "refund_nds_20_sum": 7068,
- "refund_nds_22_sum": 9340,
- "refund_nds_105_sum": 3510,
- "refund_nds_107_sum": 3927,
- "refund_nds_110_sum": 7011,
- "refund_nds_118_sum": 6108,
- "refund_nds_120_sum": 7801,
- "refund_nds_122_sum": 7966,
- "turnover": 0
}, - {
- "date": "2026-09-29",
- "kkts_count": 0,
- "receipts_count": 477,
- "income_receipts_count": 1463,
- "refund_receipts_count": 6309,
- "income_sum": 69400,
- "income_without_nds_sum": 997200,
- "refund_sum": 102900,
- "refund_without_nds_sum": 616200,
- "cash_sum": 7129,
- "ecash_sum": 6447,
- "advanced_sum": 24918,
- "full_prepayment_sum": 7694,
- "partial_prepayment_sum": 9858,
- "prepaid_sum": 2453,
- "credit_sum": 4279,
- "provision_sum": 9921,
- "refund_cash_sum": 2606,
- "refund_ecash_sum": 3855,
- "refund_prepaid_sum": 2677,
- "refund_credit_sum": 5252,
- "refund_provision_sum": 4907,
- "nds_no_sum": 8867,
- "nds_0_sum": 8136,
- "nds_5_sum": 246,
- "nds_7_sum": 1411,
- "nds_10_sum": 6605,
- "nds_18_sum": 7252,
- "nds_20_sum": 5602,
- "nds_22_sum": 4899,
- "nds_105_sum": 19,
- "nds_107_sum": 6373,
- "nds_110_sum": 3938,
- "nds_118_sum": 3136,
- "nds_120_sum": 3100,
- "nds_122_sum": 5945,
- "refund_nds_no_sum": 9409,
- "refund_nds_0_sum": 835,
- "refund_nds_5_sum": 535,
- "refund_nds_7_sum": 4205,
- "refund_nds_10_sum": 9940,
- "refund_nds_18_sum": 6364,
- "refund_nds_20_sum": 2890,
- "refund_nds_22_sum": 8365,
- "refund_nds_105_sum": 6033,
- "refund_nds_107_sum": 4566,
- "refund_nds_110_sum": 7754,
- "refund_nds_118_sum": 549,
- "refund_nds_120_sum": 5401,
- "refund_nds_122_sum": 7353,
- "turnover": 0
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 100,
- "total": 3
}, - "time_zone": "Asia/Chita"
}
}Месячные итоги торговой точки: то же, что показывает отчёт ТЦ. Все суммы — в копейках.
Границы периода задаются датами start_date/end_date и расширяются до целых месяцев.
Пагинации нет: строк не больше, чем месяцев в разрешённом периоде.
Тариф Basic: период до 92 дней, данные до вчера (D+1). Тариф PRO: до 366 дней, включая сегодня,
и дополнительно поля average_check_sum, revenue_per_area, ocr.
Детализация по типам оплат и ставкам НДС — в by_days.
| sc_id | string Example: 6abcc5bbece0d1732eefcd4f |
| shop_id | string Example: 6abcc5bbece0d1732eefcd51 |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "date": "2026-07",
- "receipts_count": 0,
- "income_receipts_count": 74,
- "refund_receipts_count": 49,
- "income_sum": 1269,
- "income_without_nds_sum": 1635,
- "refund_sum": 7629,
- "refund_without_nds_sum": 2196,
- "manual_turnover": 97921,
- "is_manual": true,
- "visitors": 0,
- "area_size": 83.7,
- "is_outdoor": true
}, - {
- "date": "2026-08",
- "receipts_count": 42,
- "income_receipts_count": 40,
- "refund_receipts_count": 2,
- "income_sum": 123456,
- "income_without_nds_sum": 100000,
- "refund_sum": 1234,
- "refund_without_nds_sum": 1000,
- "manual_turnover": 0,
- "is_manual": false,
- "visitors": 500,
- "area_size": 0,
- "is_outdoor": false
}
]
}Почасовая выгрузка со стороннего счётчика посещаемости. Доступно на любом тарифе.
Счётчик адресуется своим external_id — тем, под которым он заведён
при подключении. Отдельного справочника счётчиков в API нет:
идентификатор принадлежит стороне, которая передаёт данные.
data — до 1000 записей за вызов, каждая с datetime (начало часа,
ISO 8601), in и out. Повторная присылка того же часа перезаписывает
значения.
| sc_id | string Example: 6abcc5bbece0d1732eefcd76 |
| external_id | string Example: gate-1 |
| Accept | any Example: application/json |
| Content-Type | any Example: application/x-www-form-urlencoded |
data[][datetime]=2026-09-29T12%3A00%3A00&data[][in]=120&data[][out]=90&data[][datetime]=2026-09-29T13%3A00%3A00&data[][in]=200&data[][out]=180
{- "success": true,
- "data": {
- "external_id": "gate-1",
- "written": 2
}
}Точка входа: ТЦ, в которых у владельца ключа есть роль.
Отсюда берутся sc_id для всех остальных запросов.
Пагинации нет — список ограничен ролями сотрудника.
ТЦ, заблокированный по оплате, в списке остаётся, но данные по нему отдают 402.
Роли сняли — ТЦ пропадает из списка сам, отдельного отзыва ключа не нужно.
Сервис прав недоступен — 503 rights_unavailable, а не пустой список.
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": "6abcc5bcece0d1732eefcd80",
- "title": "А ТЦ в скоупе",
- "prefix": "quaerat26",
- "address": "739870 Россия, Самара, пр. Озерная, 311 кв. 157",
- "time_zone": "Europe/Kaliningrad",
- "rent_area_size": 26090,
- "total_area_size": 57838,
- "expected_quantity": 68,
- "external_id": "1a743536-7aab-4789-b3da-d5fac3b932a6",
- "phone": "+7 (965) 364-16-94",
- "city": {
- "id": "6abcc5bcece0d1732eefcd7f",
- "name": "Ставрополь",
- "time_zone": "Europe/Kaliningrad"
}
}, - {
- "id": "6abcc5bcece0d1732eefcd7d",
- "title": "Б ТЦ в скоупе",
- "prefix": "est25",
- "address": "620014 Россия, Чебоксары, пл. Дачная, 467 кв. 734",
- "time_zone": "Asia/Vladivostok",
- "rent_area_size": 16352,
- "total_area_size": 59509,
- "expected_quantity": 44,
- "external_id": "52368a47-5087-4da9-adf8-73c1d1d9d051",
- "phone": "+7 (957) 255-30-76",
- "city": {
- "id": "6abcc5bcece0d1732eefcd7c",
- "name": "Белгород",
- "time_zone": "Asia/Vladivostok"
}
}
]
}Список торговых точек ТЦ. Отсюда берутся shop_id для отчётов и выгрузки чеков.
У каждой точки — объект renter с данными арендатора: id, legal_name,
inn, kpp и признаком подрядчика is_contractor. Если арендатора нет — renter равен null.
Пагинация page/per_page (по умолчанию 100, максимум 500), метаданные в meta.pagination.
Архивные точки по умолчанию не отдаются. Чтобы получить их вдобавок
к действующим, передайте archived=true; отличать их можно по полю is_archived.
| sc_id | string Example: 6abcc5bcece0d1732eefcd88 |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": "6abcc5bcece0d1732eefcd8a",
- "name": "Сбыт НКО Блохин",
- "external_id": null,
- "is_archived": false,
- "position": {
- "name": "Антонида Сергеевна Владимирова"
}, - "renter": {
- "id": "6abcc5bcece0d1732eefcd93",
- "legal_name": "ТСЖ Игорь",
- "inn": "768742972722",
- "kpp": "391159783",
- "is_contractor": false
}
}, - {
- "id": "6abcc5bcece0d1732eefcd97",
- "name": "Трейд ОАО Тамара",
- "external_id": null,
- "is_archived": false,
- "position": {
- "name": "Борисов Николай Владиславович"
}, - "renter": {
- "id": "6abcc5bcece0d1732eefcda0",
- "legal_name": "ТСЖ ТольяттиСбыт",
- "inn": "794662482156",
- "kpp": "518040160",
- "is_contractor": false
}
}, - {
- "id": "6abcc5bcece0d1732eefcda4",
- "name": "Снаб ООО Светлана",
- "external_id": null,
- "is_archived": false,
- "position": {
- "name": "Валерия Анатольевна Семенова"
}, - "renter": {
- "id": "6abcc5bcece0d1732eefcdad",
- "legal_name": "ООО ТулаПром",
- "inn": "541776360764",
- "kpp": "539730009",
- "is_contractor": false
}
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 100,
- "total": 3
}
}
}Зоны подсчёта посещаемости ТЦ. Отсюда берётся zone_id для attendance.
В shop_ids — торговые точки, попадающие в зону.
Пагинации нет — зон у ТЦ единицы. Служебные зоны офисов арендаторов не отдаются.
Если в ТЦ система подсчёта не настроена, ответ — 404 traffic_not_configured.
| sc_id | string Example: 6abcc5bdece0d1732eefcdb4 |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": 5,
- "title": "Главный вход",
- "description": "Illum amet dolores enim.",
- "traffic_type": "passage",
- "shop_ids": [
- "6abcc5bdece0d1732eefcdb7"
]
}
]
}Настройки, по которым посчитан turnover в отчётах: какие типы операций входят
в товарооборот и какая доля возвратов из него вычитается.
Настройка берётся у точки, если она задана, иначе у ТЦ — источник в поле source
(shop, shopping_center или default, если не задана нигде).
| sc_id | string Example: 6abcc5bdece0d1732eefcdc7 |
| shop_id | string Example: 6abcc5bdece0d1732eefcdca |
| Accept | any Example: application/json |
{- "success": true,
- "data": {
- "source": "shopping_center",
- "refund": true,
- "vat": false,
- "advanced": true,
- "prepayment": false,
- "provision": true,
- "prepaid": false,
- "credit": true,
- "correction": true,
- "max_refund_part_in_turnover": 40,
- "last_recalculation_date": "2026-07-30"
}
}Приём задекларированного товарооборота точки за месяц. Для арендаторов без подключённой кассы или с данными, которые не доходят через ОФД. Доступно на любом тарифе.
Обязательны month и turnover. month — любая дата внутри месяца,
месяц берётся целиком. receipts_count и visitors_count необязательны.
Суммы в копейках. Одноимённый метод API v1 принимал рубли, поэтому при переносе интеграции значение нужно умножить на 100.
Метод идемпотентен по паре «точка + месяц»: повторный вызов за тот же месяц перезаписывает значения, а не добавляет вторую запись. Месяц заводится автоматически, если его ещё нет. Будущий месяц отклоняется, граница считается в таймзоне торговой точки.
Записанное значение возвращается в by_months полем manual_turnover
и участвует в расчёте OCR.
| sc_id | string Example: 6abcc5bdece0d1732eefcdda |
| shop_id | string Example: 6abcc5bdece0d1732eefcddc |
| Accept | any Example: application/json |
| Content-Type | any Example: application/x-www-form-urlencoded |
month=2026-08-01&turnover=12345600&receipts_count=42&visitors_count=500
{- "success": true,
- "data": {
- "shop_id": "6abcc5bdece0d1732eefcddc",
- "month": "2026-08",
- "manual_turnover": 12345600,
- "manual_receipts_count": 42,
- "manual_visitors_count": 500
}
}