# WarehouseSafeboxTransaction. Движение денежных средств на главной кассе (ПКО/РКО)

> Источник: https://wiki.virtualpos.ru/hc/api/warehousesafeboxtransaction  
> Обновлено: 2026-10-05

Метод возвращает операции по главной кассе (сейфу) магазина: приходные (ПКО) и расходные (РКО) кассовые ордера — выручку из операционных касс, инкассации, выдачу разменной монеты, выплаты и другие. Операции можно только читать.

> **Примечание:**
> Как получить ключ, как формируются запросы и какие бывают ответы и ошибки — в статье [Общие сведения](https://wiki.virtualpos.ru/hc/api/overview). Здесь описаны только особенности метода `warehouseSafeboxTransaction`.

## Запрос

Параметр `id` читается **только из адресной строки (GET)**. Остальные параметры принимаются и в адресной строке, и в теле POST.

```
GET https://[компания].myvirtualpos.ru/api/warehouseSafeboxTransaction?apikey=MySecret&warehouse_id=6&datefrom=20260901&dateto=20260930&type=income
```

## Параметры запроса

- **id** — Число. Ид операции. Если указан, вернётся только она. Только GET
- **warehouse_id** — Число. Ид точки продаж
- **ext_warehouse_id** — Строка. Код точки продаж во внешней системе. Действует, если не указан `warehouse_id`. Если точки с таким кодом нет, возвращается пустой список
- **type** — Строка. `income` — приход, `outcome` — расход. Без параметра возвращаются оба типа
- **date** — Дата `ГГГГММДД`. Операции, созданные в этот день
- **datefrom**, **dateto** — Дата `ГГГГММДД`. Операции, созданные с указанной даты и по указанную включительно
- **format** — `json` (по умолчанию) или `xml`

Условия объединяются по «и». Названия параметров `datefrom` и `dateto` пишутся слитно (в отличие от `date_from` и `date_to` в методе инкассаций); неизвестные параметры игнорируются. Даты передаются строго в формате `ГГГГММДД`, иначе метод вернёт ошибку `Incorrect date format`.

> **Важно:**
> **Ограничения по дате по умолчанию нет.** Без параметров метод собирает операции по всем точкам продаж за всё время вместе со связанными документами; в реальных базах это десятки тысяч записей, и запрос может закончиться ошибкой сервера. Всегда ограничивайте выборку датами и точкой продаж.

## Типы и подтипы операций

Тип операции — `income` (приход) или `outcome` (расход). Подтип (`subtype`) уточняет назначение. Системные подтипы:

| Подтип | Тип | Назначение | Связанный документ (`rel_type`) |
| --- | --- | --- | --- |
| `terminal_cash_earning` | income | Выручка из операционной кассы | `Zreport` |
| `zreport_changing_return` | income | Возврат разменной монеты при закрытии смены | `Zreport` |
| `pos_cash_surplus` | income | Излишек на операционной кассе | `Zreport` |
| `cash_changing_return` | income | Ручной возврат разменной монеты | `CashFlow` |
| `cash_surplus` | income | Излишек | нет |
| `encashment` | outcome | Инкассация | `WarehouseEncashment` |
| `cash_changing` | outcome | Выдача разменной монеты на операционную кассу | `CashFlow` |
| `pos_lack_of_cash` | outcome | Недосдача на операционной кассе | `Zreport` |
| `zreport_other_payments` | outcome | Прочие выплаты в смену | `Zreport` |
| `lack_of_cash` | outcome | Недосдача | нет |

Помимо системных, в данных встречаются подтипы, созданные пользователями (например, «Зарплата», «Хоз. нужды»). Их название приходит в `subtype`.

## Структура ответа

- **success** — `1` — данные получены
- **type** — Тип данных, всегда `warehouseSafeboxTransaction`
- **count** — Количество операций в ответе
- **warehouseSafeboxTransactions** — Список операций. Каждая обёрнута в объект `warehouseSafeboxTransaction`

### Поля операции

Пустые значения в JSON приходят как `null`, в XML — как пустой элемент.

**Основное**

- **id** — Число. Ид операции
- **guid** — Строка. Уникальный идентификатор (GUID)
- **warehouse_id** — Число. Ид точки продаж
- **ext_warehouse_id** — Строка. Код точки продаж во внешней системе
- **warehouse_safebox_id** — Число. Ид главной кассы
- **type**, **typeName** — Строка. Тип операции (`income` или `outcome`) и его название («Приход», «Расход»)
- **subtype** — Строка. Подтип операции
- **subtypeName** — Строка. Название подтипа
- **subtype_name** — Строка. Название вида операции из справочника подтипов
- **subtype_external_id** — Строка. Код подтипа во внешней системе
- **doc_num** — Число. Номер ордера
- **comment** — Строка. Комментарий
- **application** — Строка. Приложение к ордеру
- **reason** — Строка. Основание
- **created_date**, **last_update_date** — Строка. Дата и время создания и последнего изменения

**Суммы**

- **cash_before** — Строка. Остаток на главной кассе до операции
- **cash_after** — Строка. Остаток после операции
- **cash_change** — Строка. Сумма операции: положительная для прихода, отрицательная для расхода

**Бухгалтерские счета**

- **credit_account** — Строка. Счёт по кредиту
- **correspondent_account** — Строка. Корреспондентский счёт

**Люди**

- **responsible_user_id**, **responsible_user_corp_code**, **responsible_user_full_name** — Материально ответственное лицо: ид, корпоративный код, полное имя
- **manager_user_id**, **manager_user_corp_code**, **manager_user_full_name** — Руководитель, утвердивший ордер: ид, корпоративный код, полное имя
- **created_by**, **created_by_corp_code**, **created_by_full_name** — Создатель операции: ид, корпоративный код, полное имя
- **last_update_by** — Число. Ид пользователя, изменившего операцию

**Связанный документ**

- **rel_id** — Число. Ид связанного документа
- **rel_type** — Строка. Тип связанного документа: `Zreport`, `CashFlow` или `WarehouseEncashment`. Пусто, если связанного документа нет
- **rel_document** — Объект. Данные связанного документа. Пусто, если документа нет
- **terminal_user_corp_code** — Строка. Корпоративный код кассира (для операций по сменам и внесениям разменной монеты)
- **terminal_machine_number** — Строка. Регистрационный номер кассы
- **terminal_session** — Число. Номер смены
- **terminal_open_datetime** — Строка. Дата и время открытия смены

**Реквизиты инкассации** (только у подтипа `encashment`)

- **agent_bank_name**, **agent_bank_id**, **agent_bank_external_id** — Название, ид и код во внешней системе банка-агента
- **recipient_bank_name**, **recipient_bank_id**, **recipient_bank_external_id** — Название, ид и код во внешней системе банка-получателя
- **bank_account_num** — Строка. Номер счёта банка
- **org_account_num** — Строка. Расчётный счёт организации

### Пример ответа

```json
{
  "success": 1,
  "type": "warehouseSafeboxTransaction",
  "count": 1,
  "warehouseSafeboxTransactions": [
    {
      "warehouseSafeboxTransaction": {
        "id": 31308,
        "guid": "5A07A106-A1A8-ECBC-2BA7-113B8662F9AF",
        "warehouse_safebox_id": 6,
        "warehouse_id": 6,
        "ext_warehouse_id": "WH-6",
        "type": "outcome",
        "typeName": "Расход",
        "subtype": "encashment",
        "subtype_name": "Инкассация",
        "subtypeName": "Инкассация",
        "subtype_external_id": "",
        "cash_before": "70870.49",
        "cash_after": "20870.49",
        "cash_change": "-50000.00",
        "doc_num": 1,
        "comment": "Инкассация за сентябрь",
        "rel_id": 1,
        "rel_type": "WarehouseEncashment",
        "rel_document": { "id": 1, "amount": "50000.00" },
        "responsible_user_id": 113,
        "responsible_user_corp_code": "",
        "responsible_user_full_name": "Иванова Анна Сергеевна",
        "manager_user_id": 3,
        "manager_user_corp_code": "",
        "manager_user_full_name": "Петров Пётр Петрович",
        "application": "",
        "reason": "",
        "credit_account": "",
        "correspondent_account": "",
        "created_date": "2026-09-30 20:35:21",
        "created_by": 113,
        "created_by_corp_code": "",
        "created_by_full_name": "Иванова Анна Сергеевна",
        "last_update_date": "2026-09-30 20:35:21",
        "last_update_by": 113,
        "agent_bank_name": null,
        "recipient_bank_name": null,
        "bank_account_num": "30101810000000000201",
        "org_account_num": "40802810102890010436",
        "terminal_user_corp_code": null,
        "terminal_machine_number": null,
        "terminal_session": null,
        "terminal_open_datetime": null
      }
    }
  ]
}
```

В примере для краткости сокращены поля связанного документа и опущены идентификаторы банков. Тот же ответ при `format=xml` (сокращённо):

```xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <success>1</success>
  <type>warehouseSafeboxTransaction</type>
  <count>1</count>
  <warehouseSafeboxTransactions>
    <warehouseSafeboxTransaction>
      <id>31308</id>
      <type>outcome</type>
      <subtype>encashment</subtype>
      <cash_change>-50000.00</cash_change>
      <!-- остальные поля операции -->
    </warehouseSafeboxTransaction>
  </warehouseSafeboxTransactions>
</root>
```

## Примеры запросов

| Задача | Запрос |
| --- | --- |
| Операции точки за месяц | `/api/warehouseSafeboxTransaction?apikey=MySecret&warehouse_id=6&datefrom=20260901&dateto=20260930` |
| Только приходы за день | `/api/warehouseSafeboxTransaction?apikey=MySecret&warehouse_id=6&date=20260901&type=income` |
| Одна операция по ид | `/api/warehouseSafeboxTransaction?apikey=MySecret&id=31308` |
| Операции точки по её коду в 1С | `/api/warehouseSafeboxTransaction?apikey=MySecret&ext_warehouse_id=WH-6&datefrom=20260901` |

## Ошибки

Ошибка авторизации и общие ошибки описаны в статье [Общие сведения](https://wiki.virtualpos.ru/hc/api/overview).

| Сообщение | Причина | Что делать |
| --- | --- | --- |
| Incorrect date format '…'. Valid format is: YYYYMMDD | Дата в параметре не в формате `ГГГГММДД` | Передайте дату как `20260901` |

Если по условиям ничего не найдено, метод возвращает успешный ответ с `count` равным `0` и пустым списком.

## Связанные разделы

- [Общие сведения](https://wiki.virtualpos.ru/hc/api/overview) — Ключ доступа, вызов методов, форматы ответов и ошибки
- [WarehouseEncashment. Инкассации](https://wiki.virtualpos.ru/hc/api/warehouseencashment) — Реквизиты инкассаций
- [ZReport. Z-отчёты](https://wiki.virtualpos.ru/hc/api/zreport) — Смены, по которым формируются операции
- [CashFlow. Движение денежных средств на кассе](https://wiki.virtualpos.ru/hc/api/cashflow) — Наличные операции на операционных кассах
- [Главная касса (сейф)](https://wiki.virtualpos.ru/hc/cashflow/safebox) — Как посмотреть те же данные в интерфейсе
