CashFlow. Движение денежных средств на кассе
Метод возвращает журнал движения наличных денег на кассах: продажи и возвраты за наличные, внесения и выплаты, закрытие смены. Данные можно ограничить кассой, точкой продаж, типом операции и периодом.
Как получить ключ, как формируются запросы и какие бывают ответы и ошибки — в статье Общие сведения. Здесь описаны только особенности метода cashFlow.
Запрос
Метод только читает данные. Все параметры запроса, кроме ключа apikey и формата format, передаются только в адресной строке (GET): в теле POST-запроса они игнорируются.
GET https://[компания].myvirtualpos.ru/api/cashFlow?apikey=MySecret&days=2&type=income,outcome
В интерфейсе те же данные показаны на странице кассы, вкладка «Движение денежных средств».
Параметры запроса
| terminalid | Число. Ид кассы (кассового места). Если указан, возвращаются операции, где эта касса — источник или получатель денег. Если не указан — по всем кассам |
| warehouseid | Число. Ид точки продаж: вернутся операции всех касс этой точки. Игнорируется, если указан terminalid |
| warehouseextid | Строка. Код точки продаж во внешней системе (external_id), например в 1С. Действует, как warehouseid. Игнорируется, если указан terminalid или warehouseid. Если точки продаж с таким кодом нет, возвращается пустой список |
| type | Строка. Типы операций через запятую: income,outcome,collection. Регистр важен. Если не указан — все типы. Допустимые значения — в разделе «Типы операций» |
| lastid | Число. Вернуть только операции с ид больше указанного. Служит для получения новых данных с момента прошлого обращения |
| days | Число. Вернуть операции за последние N дней, считая от начала суток: days=1 — с начала вчерашнего дня. Нечисловое значение игнорируется |
| limit | Число. Максимальное количество операций в ответе. По умолчанию 100. Нечисловое значение даёт пустой ответ |
| format | json (по умолчанию) или xml |
Параметры можно сочетать: например, warehouseid=3&type=sale&days=7 вернёт продажи за наличные по точке 3 за неделю.
Порядок записей: от новых к старым. Операции сортируются по ид по убыванию. Если новых записей больше, чем limit, вы получите самые новые, а более ранние пропустите: при lastid=404000&limit=3 придут записи 404250, 404249, 404248, а не 404001…404003. Чтобы не потерять данные, задайте limit с запасом (например, 1000): если в ответе count меньше limit, вы получили все новые записи. Запомните наибольший id из ответа и передайте его как lastid в следующем запросе.
Типы операций
Тип операции указан в поле type и в параметре type:
| Тип | Название в системе | Когда создаётся | Направление | Сумма |
|---|---|---|---|---|
sale | Продажа товара | Продажа: по каждому чеку продажи | В кассу | Наличная часть оплаты чека. Для оплаты картой — 0.00 |
return | Возврат товара | Возврат по чеку | Из кассы | Наличная часть возврата, отрицательная |
income | Внесение | Внесение денег в кассу | В кассу | Положительная |
outcome | Выплата | Выплата денег из кассы | Из кассы | Отрицательная |
collection | Закрытие смены | Закрытие смены: вся наличность кассы переносится в главную кассу магазина (инкассация) | Из кассы | Отрицательная, равна остатку в кассе. После операции в кассе 0.00 |
to_strongbox | Перемещение в главную кассу | Перемещение денег из операционной кассы в главную кассу (сейф) магазина | Из кассы | Отрицательная |
from_strongbox | Перемещение из главной кассы | Перемещение денег из главной кассы (сейфа) магазина в операционную кассу | В кассу | Положительная |
Направление показывают поля src_* и dst_*: у операций «в кассу» заполнены только dst_* (получатель — касса), у операций «из кассы» — только src_* (источник — касса).
Структура ответа
Ответ содержит общие поля метода, а сами операции — в списке transactions. Каждая операция обёрнута в объект transaction:
| success | 1 — данные получены |
| type | Тип данных в ответе, всегда cashflow |
| count | Количество операций в ответе |
| transactions | Список операций, самые новые первыми |
Поля операции
Пустые значения в JSON приходят как null, в XML — как пустой элемент.
Операция
| id | Число. Уникальный ид операции |
| guid | Строка. Уникальный идентификатор (GUID) операции |
| type | Строка. Тип операции, см. раздел выше |
| subtype | Строка. Подтип внесения или выплаты, например other или collection. Заполнен у внесений и выплат. Набор значений задаётся справочником «Типы внесений (выплат) в операционной кассе» и зависит от настроек системы. У остальных типов пусто |
| comment | Строка. Комментарий кассира к внесению или выплате |
| created_date | Строка. Дата и время операции в формате дд.мм.гггг чч:мм:сс |
| last_update_date | Строка. Дата и время последнего изменения записи, формат тот же. Обычно совпадает с created_date |
| receipt_id | Число. Ид чека. Заполнен у продаж и возвратов, у остальных типов пусто |
Суммы
| cash_before | Строка с числом. Сколько наличных было в кассе до операции |
| cash_after | Строка с числом. Сколько стало после операции |
| cash_change | Строка с числом. Изменение остатка: положительное для поступлений, отрицательное для выплат |
Суммы передаются строкой с двумя знаками после точки, например «905.00».
Пользователь
| user_id | Число. Ид пользователя, выполнившего операцию |
| user_login | Строка. Логин пользователя |
| user_corp_code | Строка. Корпоративный код пользователя. Может быть пустой |
Кассы и точки продаж
| src_terminal_id | Число. Ид кассы, из которой ушли деньги. Пусто у операций «в кассу» |
| dst_terminal_id | Число. Ид кассы, в которую поступили деньги. Пусто у операций «из кассы» |
| src_machine_number | Строка. Регистрационный номер кассы-источника |
| dst_machine_number | Строка. Регистрационный номер кассы-получателя |
| src_warehouse_id | Число. Ид точки продаж кассы-источника |
| dst_warehouse_id | Число. Ид точки продаж кассы-получателя |
| src_warehouse_ext_id | Строка. Код точки продаж кассы-источника во внешней системе (1С). Пусто, если код не задан |
| dst_warehouse_ext_id | Строка. Код точки продаж кассы-получателя во внешней системе |
Смена
| src_terminal_open_datetime | Строка. Дата и время открытия смены на кассе-источнике, формат гггг-мм-дд чч:мм:сс |
| dst_terminal_open_datetime | Строка. Дата и время открытия смены на кассе-получателе, тот же формат |
| src_terminal_session | Число. Номер этой смены на кассе-источнике |
| dst_terminal_session | Число. Номер этой смены на кассе-получателе |
Данные о смене берутся из самого позднего Z-отчёта кассы за календарный день операции. Если в этот день смен было несколько, будет указана последняя, а не та, в которую попала операция; если Z-отчёта за этот день нет, поля пусты.
Пример ответа
JSON
Запрос: внесение наличных на кассу, type=income&limit=1.
{
"success": 1,
"type": "cashflow",
"count": 1,
"transactions": [
{
"transaction": {
"id": 404182,
"user_id": 6,
"user_login": "kassir1",
"user_corp_code": "",
"created_date": "10.10.2025 17:25:53",
"last_update_date": "10.10.2025 17:25:53",
"src_terminal_id": null,
"dst_terminal_id": 38,
"src_machine_number": null,
"dst_machine_number": "0000000001058369",
"src_warehouse_id": null,
"dst_warehouse_id": 8,
"src_warehouse_ext_id": null,
"dst_warehouse_ext_id": null,
"type": "income",
"subtype": "other",
"cash_before": "0.00",
"cash_after": "500.00",
"cash_change": "500.00",
"comment": "",
"receipt_id": null,
"guid": "9731F106-0CDF-D1E2-8C34-A1D1A3C24713",
"src_terminal_open_datetime": null,
"dst_terminal_open_datetime": "2025-10-10 17:28:03",
"src_terminal_session": null,
"dst_terminal_session": 4
}
}
]
}
XML
Тот же ответ при format=xml:
<?xml version="1.0" encoding="UTF-8"?> <root> <success>1</success> <type>cashflow</type> <count>1</count> <transactions> <transaction> <id>404182</id> <user_id>6</user_id> <user_login>kassir1</user_login> <user_corp_code/> <created_date>10.10.2025 17:25:53</created_date> <last_update_date>10.10.2025 17:25:53</last_update_date> <src_terminal_id/> <dst_terminal_id>38</dst_terminal_id> <src_machine_number/> <dst_machine_number>0000000001058369</dst_machine_number> <src_warehouse_id/> <dst_warehouse_id>8</dst_warehouse_id> <src_warehouse_ext_id/> <dst_warehouse_ext_id/> <type>income</type> <subtype>other</subtype> <cash_before>0.00</cash_before> <cash_after>500.00</cash_after> <cash_change>500.00</cash_change> <comment/> <receipt_id/> <guid>9731F106-0CDF-D1E2-8C34-A1D1A3C24713</guid> <src_terminal_open_datetime/> <dst_terminal_open_datetime>2025-10-10 17:28:03</dst_terminal_open_datetime> <src_terminal_session/> <dst_terminal_session>4</dst_terminal_session> </transaction> </transactions> </root>
Пример операции «из кассы»
Закрытие смены (type=collection): деньги уходят из кассы, поэтому заполнены поля src_*, а остаток после операции равен нулю.
{
"id": 404215,
"created_date": "11.02.2026 20:11:52",
"src_terminal_id": 36,
"dst_terminal_id": null,
"src_warehouse_id": 2,
"dst_warehouse_id": null,
"type": "collection",
"subtype": null,
"cash_before": "2118.00",
"cash_after": "0.00",
"cash_change": "-2118.00",
"receipt_id": null,
"src_terminal_open_datetime": "2026-02-11 20:04:01",
"src_terminal_session": 1
}
В примере показаны только основные поля.
Примеры запросов
| Задача | Запрос |
|---|---|
| Внесения и выплаты за последние два дня по всем кассам | /api/cashFlow?apikey=MySecret&days=2&type=income,outcome |
| Все операции одной кассы | /api/cashFlow?apikey=MySecret&terminalid=30&limit=1000 |
| Продажи и возвраты по точке продаж | /api/cashFlow?apikey=MySecret&warehouseid=7&type=sale,return&limit=1000 |
| Операции точки по её коду в 1С | /api/cashFlow?apikey=MySecret&warehouseextid=STORE-07&limit=1000 |
| Только новые операции после последней полученной | /api/cashFlow?apikey=MySecret&lastid=404182&limit=1000 |
| Закрытия смен за неделю | /api/cashFlow?apikey=MySecret&type=collection&days=7&limit=1000 |
Ошибки
Ошибка авторизации и общие ошибки описаны в статье Общие сведения. Для этого метода добавляется одна:
| Сообщение | Причина | Что делать |
|---|---|---|
| CashFlow type ['…'] does not exist. Use one of: [sale,to_strongbox,outcome,income,from_strongbox,collection,return] | В параметре type указан неизвестный тип, в том числе если он один из нескольких через запятую | Используйте типы из списка в сообщении. Проверьте написание и регистр |
Если по заданным условиям ничего не найдено, метод возвращает успешный ответ с count равным 0 и пустым списком transactions.