Наличные и остаток: cash-v2
актуальнаяВнесение, изъятие, обнуление и остаток по валютам смены без кассы.
/gate/cash-v2HTTPтокен V2curl -X POST 'https://ofd.yaros.kg:8143/ofd-0.0.1/gate/cash-v2' \
-H 'Content-Type: application/json' \
-H 'token: <токен из get-token>' \
-d '{ "guid": "9f1b7e30-2d44-4c7a-9a10-000000000001", "operation": "ADD", "amount": 500, "currency": "USD" }'| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
guid | String | да, кроме STATE | GUID операции. Повтор с тем же guid ничего не изменит, придёт текущий остаток |
operation | String | да | ADD внесение, DEL изъятие, RESET обнуление, STATE только остаток |
amount | Decimal | для ADD и DEL | сумма в единицах валюты: 500 это 500 долларов, а не центов |
currency | String | нет | код валюты, по умолчанию KGS. Для STATE не нужен |
operatorTime | String | нет | время операции по вашим часам, до 40 символов, лучше ISO 8601. Хранится и возвращается как есть |
Внесение, изъятие и обнуление открывают смену сами, в том числе сразу после закрытия предыдущей. Открытие смены это фискальная операция, она уходит в ГНС.
Ответ
{
"status": "OK",
"shiftNumber": "549",
"amount": 500,
"operatorTime": "2026-11-02T11:33:18+06:00",
"balance": { "KGS": 12500.00, "USD": 500.00 }
}| Поле | Описание |
|---|---|
status | OK или ERROR |
info | описание ошибки |
shiftNumber | номер смены |
amount | сумма операции |
operatorTime | ваше время из запроса. При повторе с тем же guid сохранённое первым запросом |
balance | остаток по каждой валюте смены, в единицах валюты |
Остаток
Запрос с STATE ничего не меняет: ни смены не открывает, ни баланса не трогает. Выполнять его можно сколько угодно часто.
curl -X POST 'https://ofd.yaros.kg:8143/ofd-0.0.1/gate/cash-v2' \
-H 'Content-Type: application/json' -H 'token: <токен>' \
-d '{ "operation": "STATE" }'{ "status": "OK", "shiftNumber": "549", "balance": { "KGS": 12500.00, "USD": 500.00 } }Валюты, которой в кассе нет, в ответе не будет. shiftNumber это номер открытой смены: если смены нет, поле придёт пустым, а остаток всё равно вернётся.
По этому ответу видно, пройдёт ли обмен:
| Что хотите провести | Что смотреть в balance |
|---|---|
| Продать клиенту 100 USD | USD не меньше 100 |
| Купить у клиента 50 USD по курсу 86 | KGS не меньше 4300 |
| Возврат продажи 100 USD | KGS не меньше суммы чека |
| Возврат покупки 50 USD | USD не меньше 50 |
Проверять остаток перед каждым чеком не обязательно: если не хватит, чек не пробьётся. Запрос нужен, чтобы показать кассиру, чем касса располагает.
Обнуление
Смена остатки не обнуляет: новая смена начинается с тем, с чем закончилась предыдущая. Обнуляются они только явной командой, когда наличность действительно забрали.
curl -X POST 'https://ofd.yaros.kg:8143/ofd-0.0.1/gate/cash-v2' \
-H 'Content-Type: application/json' -H 'token: <токен>' \
-d '{ "guid": "<GUID>", "operation": "RESET" }'curl -X POST 'https://ofd.yaros.kg:8143/ofd-0.0.1/gate/cash-v2' \
-H 'Content-Type: application/json' -H 'token: <токен>' \
-d '{ "guid": "<GUID>", "operation": "RESET", "currency": "USD" }'amount не передаётся: сумма берётся из остатка. По сути это изъятие на всю сумму, и в итогах смены оно так и отражается: выплатой.
Ограничения
- Изъять больше, чем лежит на балансе, нельзя по любой валюте, включая
KGS: отказНа балансе недостаточно.... - На кассе с SAM-картой смену открывает карта, поэтому при закрытой смене внесение ответит
Нет открытых смен.