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

Сдача товарооборота

Приём оборота от точек без подключённой кассы. Записанное значение возвращается в продажах по месяцам как manual_turnover.

POST /api/external/v2/sc/{sc_id}/shops/{shop_id}/turnover   BASIC

Метод для арендаторов, у которых нет онлайн-кассы или чьи данные не доходят до нас через ОФД. Переданное значение попадает в поле manual_turnover продаж по месяцам и участвует в расчёте OCR.

Параметры#

ИмяТипОбяз.Описание
sc_idstring, в путидаИдентификатор центра
shop_idstring, в путидаИдентификатор точки этого центра
monthdateдаЛюбая дата внутри месяца, YYYY-MM-DD. Месяц берётся целиком
turnoverintegerдаОборот за месяц в копейках
receipts_countintegerнетКоличество чеков за месяц
visitors_countintegerнетКоличество посетителей за месяц

Разбивка по НДС#

Необязательные суммы за тот же месяц, все в копейках и не меньше нуля:

ИмяОписание
income_with_vatВыручка с НДС
income_without_vatВыручка без НДС
vatСумма НДС
additional_income_with_vatДополнительная выручка с НДС
additional_income_without_vatДополнительная выручка без НДС
refunds_with_vatВозвраты с НДС
refunds_without_vatВозвраты без НДС

Разбивка сохраняется в месячном отчёте точки рядом с оборотом. На manual_turnover и расчёт OCR она не влияет: туда идёт только turnover.

Суммы в копейках. В API v1 этот метод принимал рубли, поэтому при переносе интеграции значение нужно умножить на 100.

Месяц заводится автоматически, если его ещё нет. Повторный вызов за тот же месяц перезаписывает значения, а не добавляет второе: метод идемпотентен по паре «точка + месяц».

Перезаписываются только переданные поля. turnover обязателен и обновляется всегда, а необязательное поле, которого нет в запросе, сохраняет прежнее значение. Чтобы обнулить сумму, её нужно передать явно как 0.

Будущий месяц отклоняется. Граница считается в таймзоне торговой точки.

bash
curl -X POST "https://api.rentu.ru/api/external/v2/sc/{sc_id}/shops/{shop_id}/turnover" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "month": "2026-07-01",
    "turnover": 12345600,
    "receipts_count": 42,
    "visitors_count": 500,
    "income_with_vat": 13345600,
    "income_without_vat": 11288000,
    "vat": 2057600
  }'

Ответ#

Статус 200 OK. В ответе месяц целиком в том виде, в каком он сохранён после записи, включая поля, которых не было в запросе.

ПолеТипОписание
shop_idstringИдентификатор точки
monthstringМесяц, YYYY-MM
manual_turnoverintegerОборот, копейки
manual_receipts_countinteger | nullКоличество чеков
manual_visitors_countinteger | nullКоличество посетителей
manual_income_with_vat, manual_income_without_vatintegerВыручка с НДС и без, копейки
manual_vatintegerСумма НДС, копейки
manual_additional_income_with_vat, manual_additional_income_without_vatintegerДополнительная выручка с НДС и без, копейки
manual_refunds_with_vat, manual_refunds_without_vatintegerВозвраты с НДС и без, копейки

Суммы разбивки, которые ни разу не передавались, приходят как 0, счётчики как null.

json
{
  "success": true,
  "data": {
    "shop_id": "6a1f2c3d4e5f60718293a4b5",
    "month": "2026-07",
    "manual_turnover": 12345600,
    "manual_receipts_count": 42,
    "manual_visitors_count": 500,
    "manual_vat": 2057600,
    "manual_income_with_vat": 13345600,
    "manual_income_without_vat": 11288000,
    "manual_additional_income_with_vat": 0,
    "manual_additional_income_without_vat": 0,
    "manual_refunds_with_vat": 0,
    "manual_refunds_without_vat": 0
  }
}

Что происходит после записи#

Точка, по которой пришёл оборот, отмечается как активная и получает источник данных «ручной ввод». Пересчитывается OCR, если у точки заведена аренда. Запись попадает в журнал ручного ввода от имени сотрудника, которому принадлежит ключ.

Ошибки#

КодHTTPКогда
not_found404Точки нет в этом центре
validation_error422Месяц в будущем, отрицательная сумма или счётчик, неразобранная дата