для разработчиков На сайт Rentu

Продажи по всем точкам

Одна строка на точку: суммы за весь период, способы оплаты и разбивка по НДС. Весь центр за один обход вместо запроса на каждую точку.

GET /api/external/v2/sc/{sc_id}/reports/shops/by_period   BASIC

Параметры#

ИмяТипОбяз.По умолчаниюОписание
sc_idstring, в путида—Идентификатор центра
start_datedateда—YYYY-MM-DD
end_datedateда—YYYY-MM-DD, не раньше start_date
pageintegerнет1Номер страницы
per_pageintegerнет100Размер страницы, от 1 до 500

Длина периода ограничена тарифом центра: на Basic 31 день и данные до вчера, на PRO 366 дней включая сегодня. См. Тарифы.

bash
curl -G "https://api.rentu.ru/api/external/v2/sc/$SC/reports/shops/by_period" \
  -d start_date=2026-07-01 \
  -d end_date=2026-07-31 \
  -d per_page=500 \
  -H 'Authorization: Bearer YOUR_TOKEN'

Ответ#

В выдачу попадают точки, по которым за период есть подневные данные, включая архивные. Точка, по которой данных за период нет, в ответ не попадёт: полный список точек центра отдаёт справочник.

Строки отсортированы по income_sum по убыванию, при равной выручке по id точки. Все суммы приходят в копейках.

Точка и арендатор#

ПолеТипОписание
shopobject{ id, external_id, name } — точка, как в справочнике
renterobject | null{ id, legal_name, inn, kpp } — арендатор точки. null, если арендатор не закреплён

Суммы#

Набор полей тот же, что у продаж по дням, только сложенный за весь период:

  • счётчики чеков: receipts_count, income_receipts_count, refund_receipts_count;
  • приход и возвраты: income_sum, income_without_nds_sum, refund_sum, refund_without_nds_sum;
  • способы оплаты: cash_sum, ecash_sum, advanced_sum, full_prepayment_sum, partial_prepayment_sum, prepaid_sum, credit_sum, provision_sum и возвраты с префиксом refund_;
  • разбивка по НДС: nds_*_sum и возвраты refund_nds_*_sum;
  • turnover PRO — товарооборот по правилам центра.

date и kkts_count здесь нет: строка относится ко всему периоду, а не к дню.

На Basic turnover отсутствует в объекте, а не приходит как null.

json
{
  "success": true,
  "data": [
    {
      "shop": {
        "id": "6512a2000000000000000101",
        "external_id": "SL-101",
        "name": "Zarina"
      },
      "renter": {
        "id": "6512a1f0b3c4d5e6f7a8b911",
        "legal_name": "ООО «Зарина»",
        "inn": "7712345678",
        "kpp": "771201001"
      },
      "receipts_count": 9734,
      "income_receipts_count": 9610,
      "refund_receipts_count": 124,
      "income_sum": 139881300,
      "income_without_nds_sum": 116567750,
      "refund_sum": 585900,
      "refund_without_nds_sum": 488250,
      "cash_sum": 37200000,
      "ecash_sum": 102681300,
      "advanced_sum": 0,
      "full_prepayment_sum": 0,
      "partial_prepayment_sum": 0,
      "prepaid_sum": 0,
      "credit_sum": 0,
      "provision_sum": 0,
      "refund_cash_sum": 0,
      "refund_ecash_sum": 585900,
      "nds_20_sum": 23313550,
      "refund_nds_20_sum": 97650,
      "turnover": 139295400
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "per_page": 500,
      "total": 131
    },
    "time_zone": "Europe/Moscow"
  }
}

Практика#

Подходит для сводных выгрузок. Ночная выгрузка вчерашнего дня по всему центру это start_date и end_date, равные вчерашней дате: одна строка на точку, обычно одна страница. С продажами по дням это потребовало бы по запросу на каждую точку.

Подневной разбивки здесь нет. Если нужны суммы по каждому дню, остаются продажи по дням конкретной точки.

Сопоставлять удобно по shop.external_id. Тот же идентификатор приходит в справочнике точек, хранить наши id не обязательно.

Ошибки#

КодHTTPКогда
period_too_long422Период больше тарифного окна
fresh_data_requires_pro422На Basic запрошен сегодняшний день
validation_error422end_date раньше start_date, per_page больше 500, неразобранная дата
query_timeout504Выборка не уложилась в отведённое время; сузьте период