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 и internal_error.
Тариф — свойство торгового центра, а не ключа: один ключ может покрывать несколько центров на разных тарифах.
| Basic | PRO | |
|---|---|---|
| Период в одном запросе, подневные данные | 31 день | 366 дней |
| Период в одном запросе, месячные итоги | 12 месяцев | 36 месяцев |
| Самая свежая дата | вчера | сегодня |
| Чеки и аномалии | — | да |
| Посещаемость по часам, по зоне и по точке | — | да |
| Расчётный товарооборот (turnover) | — | да |
| Начисленная аренда (rent) и OCR | — | да |
| Средний чек, выручка на м² | — | да |
| Частота | 60/мин, 5 000/сутки | 300/мин, 50 000/сутки |
Денежные суммы — целые копейки. Даты в параметрах — 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: 6a7ed456e8b9e1300e7ecff1 |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": "6a7ed457e8b9e1300e7ed001",
- "status": "new",
- "magnitude": 21.85,
- "date": "2026-08-12T12:39:51+04:00",
- "created_at": "2026-08-14T12:39:51+04:00",
- "type": 379,
- "type_title": "Средний чек возврата значительно превышает средний чек прихода",
- "level": "high",
- "shop_id": "6a7ed456e8b9e1300e7ecff3",
- "shop_name": "Сбыт ТСЖ ПромТорг",
- "title": "Аномально высокий процент расчета за безналичный расчет",
- "description": "Как правило идет сокрытие выручки за наличный расчет",
- "period": [
- "2026-08-11T20:17:08+04:00",
- "2026-08-12T09:07:15+04:00"
]
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 100,
- "total": 1
}, - "time_zone": "Europe/Samara"
}
}Приём посещаемости за сутки от собственных счётчиков ТЦ. Доступно на любом тарифе.
Обязательны date и visitors. scope задаёт адресата тем же
словарём, что и чтение посещаемости: sc — периметр всего центра
(по умолчанию), zone — отдельная зона, и тогда обязателен zone_id
из справочника зон. При scope=sc передавать zone_id нельзя.
Дата в будущем отклоняется, граница считается в таймзоне ТЦ. Повторный вызов за те же сутки перезаписывает значение.
В API v1 это были два отдельных метода — по ТЦ и по зоне; здесь они сведены в один.
| sc_id | string Example: 6a7ed457e8b9e1300e7ed007 |
| Accept | any Example: application/json |
| Content-Type | any Example: application/x-www-form-urlencoded |
date=2026-08-13&visitors=5000
{- "success": true,
- "data": {
- "date": "2026-08-13",
- "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: 6a7ed457e8b9e1300e7ed00d |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "date": "2026-08-13",
- "visitors_in": 257,
- "visitors_out": 726
}
], - "meta": {
- "granularity": "day",
- "scope": "sc",
- "time_zone": "Europe/Kaliningrad"
}
}Выдача токена по 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": "0a3ee6c2-9f72-4d49-b73c-3cb970d75531",
- "client_secret": "v2-client-secret-000000000000000000000000000000"
}{- "success": true,
- "access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIwYTNlZTZjMi05ZjcyLTRkNDktYjczYy0zY2I5NzBkNzU1MzEiLCJhdWQiOiJleHRlcm5hbC12MiIsImp0aSI6IjZmZTA5YzY2LWZkMjEtNDA5Ni04NmNiLWU0NDMyM2RkM2VlNSIsImlhdCI6MTc4NjY5Njc5MSwiZXhwIjoxNzg2NzAwMzkxfQ.KbTn_uUpXrCgCAGxatyJ4H5iHABaHuen5ixS7rKm3OwU30CjHWNQg5RgLHBfc9H9f1m4dIfUvWbgdivr1hhasg",
- "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: 6a7ed458e8b9e1300e7ed01e |
| 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-08-14&end_date=2026-08-17&shop_ids[]=6a7ed458e8b9e1300e7ed020
{- "success": true,
- "data": {
- "id": "6a7ed458e8b9e1300e7ed030",
- "name": "Чёрная пятница",
- "description": "Скидки во всём ТЦ",
- "event_type": "marketing",
- "color": "#EAEAEA",
- "sell_location_ids": [
- "6a7ed458e8b9e1300e7ed020"
], - "start_date": "2026-08-14",
- "end_date": "2026-08-17"
}
}Кассы торговой точки и признаки их состояния: статус подключения,
когда пришёл последний чек, открыта ли смена, когда заканчивается ФН.
Даты — ISO 8601 в таймзоне ТЦ, сама зона в meta.time_zone.
Пагинации нет — касс у точки единицы.
Архивные кассы по умолчанию не отдаются. Чтобы получить их вдобавок
к действующим, передайте archived=true; отличать их можно по полю is_archived.
| sc_id | string Example: 6a7ed458e8b9e1300e7ed035 |
| shop_id | string Example: 6a7ed458e8b9e1300e7ed037 |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": "6a7ed458e8b9e1300e7ed045",
- "model": "[\"aut\", \"corporis\"]",
- "reg_id": "0000000000000001",
- "serial_number": "0000000001",
- "connection_status": "active",
- "connection_from": "2026-07-14T00:00:00+00:00",
- "provider": "[\"recusandae\", \"expedita\"]",
- "fiscal_number": "1271021346091158",
- "is_archived": false,
- "first_document_datetime": "2026-08-07T17:39:52+09:00",
- "last_document_datetime": "2026-08-14T17:39:52+09:00",
- "last_open_shift_datetime": "2026-08-14T17:39:52+09:00",
- "fn_expiration_datetime": "2027-08-14T17:39:52+09:00"
}
], - "meta": {
- "time_zone": "Asia/Chita"
}
}Почековая выгрузка (только тариф 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: 6a7ed458e8b9e1300e7ed04a |
| shop_id | string Example: 6a7ed458e8b9e1300e7ed04c |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": "6a7ed458e8b9e1300e7ed062",
- "document_type": "receipt",
- "created_datetime": "2026-08-11T15:39:52+07:00",
- "received_datetime": "2026-08-11T15:39:52+07:00",
- "kkt_id": "6a7ed458e8b9e1300e7ed05b",
- "kkt_reg_id": "0000000000000002",
- "kkt_serial_number": "0000000002",
- "kkt_fiscal_drive_number": "7121043611589210",
- "fiscal_document_number": null,
- "shift_number": null,
- "shift_check_number": null,
- "operation_type": 3,
- "total_sum": 60,
- "cash_sum": 5,
- "ecash_sum": 62,
- "advanced_sum": 223,
- "full_prepayment_sum": 93,
- "partial_prepayment_sum": 60,
- "prepaid_sum": 55,
- "credit_sum": 35,
- "provision_sum": 75,
- "nds_no_sum": 7,
- "nds_0_sum": 78,
- "nds_5_sum": 0,
- "nds_7_sum": 0,
- "nds_10_sum": 44,
- "nds_18_sum": 71,
- "nds_20_sum": 45,
- "nds_22_sum": 0,
- "nds_105_sum": 0,
- "nds_107_sum": 0,
- "nds_110_sum": 12,
- "nds_118_sum": 70,
- "nds_120_sum": 48,
- "nds_122_sum": 0,
- "items_count": null
}, - {
- "id": "6a7ed458e8b9e1300e7ed060",
- "document_type": "receipt",
- "created_datetime": "2026-08-12T15:39:52+07:00",
- "received_datetime": "2026-08-12T15:39:52+07:00",
- "kkt_id": "6a7ed458e8b9e1300e7ed05b",
- "kkt_reg_id": "0000000000000002",
- "kkt_serial_number": "0000000002",
- "kkt_fiscal_drive_number": "7121043611589210",
- "fiscal_document_number": null,
- "shift_number": null,
- "shift_check_number": null,
- "operation_type": 1,
- "total_sum": 9,
- "cash_sum": 91,
- "ecash_sum": 64,
- "advanced_sum": 97,
- "full_prepayment_sum": 46,
- "partial_prepayment_sum": 7,
- "prepaid_sum": 98,
- "credit_sum": 25,
- "provision_sum": 81,
- "nds_no_sum": 11,
- "nds_0_sum": 5,
- "nds_5_sum": 0,
- "nds_7_sum": 0,
- "nds_10_sum": 21,
- "nds_18_sum": 64,
- "nds_20_sum": 8,
- "nds_22_sum": 0,
- "nds_105_sum": 0,
- "nds_107_sum": 0,
- "nds_110_sum": 61,
- "nds_118_sum": 1,
- "nds_120_sum": 1,
- "nds_122_sum": 0,
- "items_count": null
}, - {
- "id": "6a7ed458e8b9e1300e7ed05e",
- "document_type": "receipt",
- "created_datetime": "2026-08-13T15:39:52+07:00",
- "received_datetime": "2026-08-13T15:39:52+07:00",
- "kkt_id": "6a7ed458e8b9e1300e7ed05b",
- "kkt_reg_id": "0000000000000002",
- "kkt_serial_number": "0000000002",
- "kkt_fiscal_drive_number": "7121043611589210",
- "fiscal_document_number": null,
- "shift_number": null,
- "shift_check_number": null,
- "operation_type": 3,
- "total_sum": 10,
- "cash_sum": 92,
- "ecash_sum": 20,
- "advanced_sum": 88,
- "full_prepayment_sum": 39,
- "partial_prepayment_sum": 48,
- "prepaid_sum": 31,
- "credit_sum": 68,
- "provision_sum": 30,
- "nds_no_sum": 88,
- "nds_0_sum": 24,
- "nds_5_sum": 0,
- "nds_7_sum": 0,
- "nds_10_sum": 76,
- "nds_18_sum": 85,
- "nds_20_sum": 44,
- "nds_22_sum": 0,
- "nds_105_sum": 0,
- "nds_107_sum": 0,
- "nds_110_sum": 22,
- "nds_118_sum": 30,
- "nds_120_sum": 10,
- "nds_122_sum": 0,
- "items_count": null
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 500,
- "total": 3
}, - "time_zone": "Asia/Krasnoyarsk"
}
}Дневные агрегаты торговой точки. Все суммы — в копейках.
Пагинация page/per_page (по умолчанию 100, максимум 366), метаданные в meta.
Тариф Basic: данные до вчера (D+1), период до 92 дней. Тариф PRO: включая сегодня, период до 366 дней.
| sc_id | string Example: 6a7ed459e8b9e1300e7ed085 |
| shop_id | string Example: 6a7ed459e8b9e1300e7ed087 |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "date": "2026-08-11",
- "kkts_count": 0,
- "receipts_count": 343,
- "income_receipts_count": 7797,
- "refund_receipts_count": 8944,
- "income_sum": 46600,
- "income_without_nds_sum": 54700,
- "refund_sum": 322300,
- "refund_without_nds_sum": 681800,
- "cash_sum": 9572,
- "ecash_sum": 7934,
- "advanced_sum": 21538,
- "full_prepayment_sum": 7660,
- "partial_prepayment_sum": 6209,
- "prepaid_sum": 711,
- "credit_sum": 8806,
- "provision_sum": 1806,
- "refund_cash_sum": 8120,
- "refund_ecash_sum": 3130,
- "refund_prepaid_sum": 1137,
- "refund_credit_sum": 7624,
- "refund_provision_sum": 909,
- "nds_no_sum": 5109,
- "nds_0_sum": 3139,
- "nds_5_sum": 6534,
- "nds_7_sum": 4139,
- "nds_10_sum": 9603,
- "nds_18_sum": 2574,
- "nds_20_sum": 7414,
- "nds_22_sum": 5781,
- "nds_105_sum": 5593,
- "nds_107_sum": 7881,
- "nds_110_sum": 8977,
- "nds_118_sum": 8311,
- "nds_120_sum": 6006,
- "nds_122_sum": 305,
- "refund_nds_no_sum": 9958,
- "refund_nds_0_sum": 8185,
- "refund_nds_5_sum": 301,
- "refund_nds_7_sum": 7710,
- "refund_nds_10_sum": 6471,
- "refund_nds_18_sum": 5120,
- "refund_nds_20_sum": 3618,
- "refund_nds_22_sum": 3944,
- "refund_nds_105_sum": 1971,
- "refund_nds_107_sum": 6905,
- "refund_nds_110_sum": 4924,
- "refund_nds_118_sum": 9024,
- "refund_nds_120_sum": 4233,
- "refund_nds_122_sum": 2211,
- "turnover": 0
}, - {
- "date": "2026-08-12",
- "kkts_count": 0,
- "receipts_count": 509,
- "income_receipts_count": 9964,
- "refund_receipts_count": 5255,
- "income_sum": 46800,
- "income_without_nds_sum": 676900,
- "refund_sum": 240100,
- "refund_without_nds_sum": 405500,
- "cash_sum": 4544,
- "ecash_sum": 1084,
- "advanced_sum": 19470,
- "full_prepayment_sum": 4813,
- "partial_prepayment_sum": 6889,
- "prepaid_sum": 5627,
- "credit_sum": 9039,
- "provision_sum": 3125,
- "refund_cash_sum": 6724,
- "refund_ecash_sum": 8897,
- "refund_prepaid_sum": 7434,
- "refund_credit_sum": 206,
- "refund_provision_sum": 1488,
- "nds_no_sum": 2299,
- "nds_0_sum": 36,
- "nds_5_sum": 2768,
- "nds_7_sum": 4686,
- "nds_10_sum": 1120,
- "nds_18_sum": 2713,
- "nds_20_sum": 7581,
- "nds_22_sum": 8635,
- "nds_105_sum": 7563,
- "nds_107_sum": 379,
- "nds_110_sum": 1618,
- "nds_118_sum": 536,
- "nds_120_sum": 6978,
- "nds_122_sum": 9671,
- "refund_nds_no_sum": 6851,
- "refund_nds_0_sum": 6020,
- "refund_nds_5_sum": 3430,
- "refund_nds_7_sum": 8508,
- "refund_nds_10_sum": 4889,
- "refund_nds_18_sum": 5929,
- "refund_nds_20_sum": 1637,
- "refund_nds_22_sum": 8264,
- "refund_nds_105_sum": 4757,
- "refund_nds_107_sum": 2232,
- "refund_nds_110_sum": 2927,
- "refund_nds_118_sum": 5219,
- "refund_nds_120_sum": 5067,
- "refund_nds_122_sum": 3669,
- "turnover": 0
}, - {
- "date": "2026-08-13",
- "kkts_count": 0,
- "receipts_count": 819,
- "income_receipts_count": 212,
- "refund_receipts_count": 294,
- "income_sum": 94100,
- "income_without_nds_sum": 70500,
- "refund_sum": 152600,
- "refund_without_nds_sum": 842500,
- "cash_sum": 211,
- "ecash_sum": 332,
- "advanced_sum": 12537,
- "full_prepayment_sum": 3931,
- "partial_prepayment_sum": 1526,
- "prepaid_sum": 9226,
- "credit_sum": 6341,
- "provision_sum": 2031,
- "refund_cash_sum": 4059,
- "refund_ecash_sum": 2062,
- "refund_prepaid_sum": 6850,
- "refund_credit_sum": 4978,
- "refund_provision_sum": 2003,
- "nds_no_sum": 7355,
- "nds_0_sum": 3792,
- "nds_5_sum": 5085,
- "nds_7_sum": 9582,
- "nds_10_sum": 4473,
- "nds_18_sum": 1414,
- "nds_20_sum": 2251,
- "nds_22_sum": 1539,
- "nds_105_sum": 7862,
- "nds_107_sum": 3030,
- "nds_110_sum": 2863,
- "nds_118_sum": 8613,
- "nds_120_sum": 4724,
- "nds_122_sum": 2855,
- "refund_nds_no_sum": 9916,
- "refund_nds_0_sum": 5173,
- "refund_nds_5_sum": 1086,
- "refund_nds_7_sum": 1577,
- "refund_nds_10_sum": 5034,
- "refund_nds_18_sum": 2588,
- "refund_nds_20_sum": 4046,
- "refund_nds_22_sum": 7527,
- "refund_nds_105_sum": 652,
- "refund_nds_107_sum": 1065,
- "refund_nds_110_sum": 8594,
- "refund_nds_118_sum": 8190,
- "refund_nds_120_sum": 6108,
- "refund_nds_122_sum": 931,
- "turnover": 0
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 100,
- "total": 3
}, - "time_zone": "Asia/Yekaterinburg"
}
}Месячные итоги торговой точки: то же, что показывает отчёт ТЦ. Все суммы — в копейках.
Границы периода задаются датами start_date/end_date и расширяются до целых месяцев.
Пагинации нет: строк не больше, чем месяцев в разрешённом периоде.
Тариф Basic: период до 92 дней, данные до вчера (D+1). Тариф PRO: до 366 дней, включая сегодня,
и дополнительно поля average_check_sum, revenue_per_area, ocr.
Детализация по типам оплат и ставкам НДС — в by_days.
| sc_id | string Example: 6a7ed459e8b9e1300e7ed0c8 |
| shop_id | string Example: 6a7ed459e8b9e1300e7ed0ca |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "date": "2026-06",
- "receipts_count": 0,
- "income_receipts_count": 85,
- "refund_receipts_count": 59,
- "income_sum": 9746,
- "income_without_nds_sum": 7523,
- "refund_sum": 3873,
- "refund_without_nds_sum": 4253,
- "manual_turnover": 40828,
- "is_manual": true,
- "visitors": 0,
- "area_size": 35.6,
- "is_outdoor": false
}, - {
- "date": "2026-07",
- "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: 6a7ed45ae8b9e1300e7ed0ef |
| external_id | string Example: gate-1 |
| Accept | any Example: application/json |
| Content-Type | any Example: application/x-www-form-urlencoded |
data[][datetime]=2026-08-13T12%3A00%3A00&data[][in]=120&data[][out]=90&data[][datetime]=2026-08-13T13%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": "6a7ed45ae8b9e1300e7ed0f9",
- "title": "А ТЦ в скоупе",
- "prefix": "nihil23",
- "address": "585382 Россия, Тольятти, Новая улица, 997 кв. 278",
- "time_zone": "Asia/Yekaterinburg",
- "rent_area_size": 29239,
- "total_area_size": 59849,
- "expected_quantity": 118,
- "external_id": "d0a04ba3-802d-4c98-a914-7ab321065218",
- "phone": "+7 (986) 085-22-15",
- "city": {
- "id": "6a7ed45ae8b9e1300e7ed0f8",
- "name": "Оренбург",
- "time_zone": "Asia/Yekaterinburg"
}
}, - {
- "id": "6a7ed45ae8b9e1300e7ed0f6",
- "title": "Б ТЦ в скоупе",
- "prefix": "rerum22",
- "address": "480090 Россия, Ростов-на-Дону, площадь Лесная, 231 кв. 776",
- "time_zone": "Europe/Moscow",
- "rent_area_size": 37451,
- "total_area_size": 58280,
- "expected_quantity": 179,
- "external_id": "eacfb7d6-76ec-43c7-9f3d-69ee720f5018",
- "phone": "+7 (962) 265-46-71",
- "city": {
- "id": "6a7ed45ae8b9e1300e7ed0f5",
- "name": "Красноярск",
- "time_zone": "Europe/Moscow"
}
}
]
}Список торговых точек ТЦ. Отсюда берутся shop_id для отчётов и выгрузки чеков.
Пагинация page/per_page (по умолчанию 100, максимум 500), метаданные в meta.pagination.
Архивные точки по умолчанию не отдаются. Чтобы получить их вдобавок
к действующим, передайте archived=true; отличать их можно по полю is_archived.
| sc_id | string Example: 6a7ed45ae8b9e1300e7ed101 |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": "6a7ed45ae8b9e1300e7ed103",
- "name": "Трейд ООО ОмскТрейдТоргТрейд",
- "external_id": null,
- "is_archived": false,
- "position": {
- "name": "Дмитрий Семёнович Мухин"
}
}, - {
- "id": "6a7ed45ae8b9e1300e7ed110",
- "name": "Торг ИП КировПром",
- "external_id": null,
- "is_archived": false,
- "position": {
- "name": "Комарова Галина"
}
}, - {
- "id": "6a7ed45ae8b9e1300e7ed11d",
- "name": "Пром ТСЖ Николай",
- "external_id": null,
- "is_archived": false,
- "position": {
- "name": "Иван Фомин"
}
}
], - "meta": {
- "pagination": {
- "page": 1,
- "per_page": 100,
- "total": 3
}
}
}Зоны подсчёта посещаемости ТЦ. Отсюда берётся zone_id для attendance.
В shop_ids — торговые точки, попадающие в зону.
Пагинации нет — зон у ТЦ единицы. Служебные зоны офисов арендаторов не отдаются.
Если в ТЦ система подсчёта не настроена, ответ — 404 traffic_not_configured.
| sc_id | string Example: 6a7ed45ae8b9e1300e7ed12d |
| Accept | any Example: application/json |
{- "success": true,
- "data": [
- {
- "id": 5,
- "title": "Главный вход",
- "description": "Quia dolor rerum omnis.",
- "traffic_type": "passage",
- "shop_ids": [
- "6a7ed45ae8b9e1300e7ed130"
]
}
]
}Настройки, по которым посчитан turnover в отчётах: какие типы операций входят
в товарооборот и какая доля возвратов из него вычитается.
Настройка берётся у точки, если она задана, иначе у ТЦ — источник в поле source
(shop, shopping_center или default, если не задана нигде).
| sc_id | string Example: 6a7ed45be8b9e1300e7ed140 |
| shop_id | string Example: 6a7ed45be8b9e1300e7ed143 |
| Accept | any Example: application/json |
{- "success": true,
- "data": {
- "source": "shopping_center",
- "refund": true,
- "vat": false,
- "advanced": false,
- "prepayment": true,
- "provision": true,
- "prepaid": false,
- "credit": true,
- "correction": false,
- "max_refund_part_in_turnover": 40,
- "last_recalculation_date": "2026-06-16"
}
}Приём задекларированного товарооборота точки за месяц. Для арендаторов без подключённой кассы или с данными, которые не доходят через ОФД. Доступно на любом тарифе.
Обязательны month и turnover. month — любая дата внутри месяца,
месяц берётся целиком. receipts_count и visitors_count необязательны.
Суммы в копейках. Одноимённый метод API v1 принимал рубли, поэтому при переносе интеграции значение нужно умножить на 100.
Метод идемпотентен по паре «точка + месяц»: повторный вызов за тот же месяц перезаписывает значения, а не добавляет вторую запись. Месяц заводится автоматически, если его ещё нет. Будущий месяц отклоняется, граница считается в таймзоне торговой точки.
Записанное значение возвращается в by_months полем manual_turnover
и участвует в расчёте OCR.
| sc_id | string Example: 6a7ed45be8b9e1300e7ed153 |
| shop_id | string Example: 6a7ed45be8b9e1300e7ed155 |
| Accept | any Example: application/json |
| Content-Type | any Example: application/x-www-form-urlencoded |
month=2026-07-01&turnover=12345600&receipts_count=42&visitors_count=500
{- "success": true,
- "data": {
- "shop_id": "6a7ed45be8b9e1300e7ed155",
- "month": "2026-07",
- "manual_turnover": 12345600,
- "manual_receipts_count": 42,
- "manual_visitors_count": 500
}
}