Транзакции кассы
Все движения денег по кассам: доходы и расходы по статьям, оплаты поставщикам, переводы между кассами, конвертации, инкассации, а также проводки продаж и долгов. Каждая транзакция меняет остаток кассы по своему типу оплаты и валюте.
| Метод | Адрес | Назначение |
|---|---|---|
| POST | /company/cashbox/transaction/cashbox | Перевод между кассами |
| POST | /company/cashbox/transaction/conversion | Конвертация внутри кассы |
| PATCH | /company/cashbox/transaction/{model}/complete | Подтвердить транзакцию |
| PATCH | /company/cashbox/transaction/{model}/cancel | Отменить транзакцию |
| GET | /company/cashbox/transaction | Список транзакций |
| GET | /company/cashbox/transaction/{model} | Транзакция |
| POST | /company/cashbox/transaction | Создать транзакцию |
Перевод между кассами
/company/cashbox/transaction/cashboxПереводит сумму из кассы cashbox_id в кассу source_id; допускается только между основной и продажной кассой. Из основной перевод проходит сразу (completed), из продажной — ждёт подтверждения получателем (on_hold), при этом деньги уже списаны.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
cashbox_id | integer | Да | Касса-отправитель. ID существующей записи, доступной пользователю |
payment_type | string | Да | Тип оплаты. Допустимые значения: bank, card, cash, system |
currency | string | Да | Валюта. Допустимые значения: uzs, usd, eur, rub |
amount | number | Да | Сумма. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
comment | string | Нет | Комментарий. Макс. 1000 символов |
source_id | integer | Да | Касса-получатель. ID существующей записи, доступной пользователю |
{
"payment_type": "cash",
"currency": "uzs",
"amount": 1000,
"comment": "Comment 3",
"cashbox_id": 1,
"source_id": 2
}curl -X POST "https://api.wasyt.uz/company/cashbox/transaction/cashbox" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"payment_type":"cash","currency":"uzs","amount":1000,"comment":"Comment 3","cashbox_id":1,"source_id":2}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
additional | object | |
additional.balances_after | object | |
additional.balances_after.cash | object | |
additional.balances_after.cash.uzs | string | |
additional.on_hold_after | array | |
source_data | array | |
cashbox_id | integer | Касса |
payment_type | string | Тип оплаты |
currency | string | Валюта |
amount | integer | Сумма |
comment | string | Комментарий |
source_id | integer | Источник |
type | string | Тип |
source_type | string | Источник |
status | string | Статус |
updated_at | string | Обновлено |
created_at | string | Создано |
company_id | integer | Компания |
creator_id | integer | Создатель |
id | integer | ID |
source | null | |
contract_number | null | Номер контракта |
{
"additional": {
"balances_after": {
"cash": {
"uzs": "0.00"
}
},
"on_hold_after": []
},
"source_data": [],
"cashbox_id": 1,
"payment_type": "cash",
"currency": "uzs",
"amount": 1000,
"comment": "Comment 3",
"source_id": 2,
"type": "outcome",
"source_type": "cashbox",
"status": "completed",
"updated_at": "2026-09-30 12:51:24",
"created_at": "2026-09-30 12:51:24",
"company_id": 1,
"creator_id": 2,
"id": 34,
"source": null,
"contract_number": null
}Конвертация внутри кассы
/company/cashbox/transaction/conversionПереводит деньги со счёта кассы source_id (остаток с другим типом оплаты или валютой) на счёт payment_type + currency той же кассы. Валюта меняется только через UZS; курс currency_rate должен быть в пределах ±20% от курса компании (между счетами UZS курс равен 1). Проводится сразу (completed).
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
cashbox_id | integer | Да | Касса. ID существующей записи, доступной пользователю |
payment_type | string | Да | Тип оплаты. Допустимые значения: bank, card, cash, system |
currency | string | Да | Валюта. Допустимые значения: uzs, usd, eur, rub |
amount | number | Да | Сумма в валюте списываемого остатка. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
comment | string | Нет | Комментарий. Макс. 1000 символов |
source_id | integer | Да | ID остатка кассы, с которого списываются деньги. ID существующей записи, доступной пользователю |
currency_rate | number | Да | Курс. До 2 знаков после запятой. Не меньше 1. Не больше 999999999999.99 |
{
"cashbox_id": 1,
"payment_type": "card",
"amount": 1000,
"comment": "Comment 3",
"source_id": 1,
"currency_rate": 1000,
"currency": "uzs"
}curl -X POST "https://api.wasyt.uz/company/cashbox/transaction/conversion" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"cashbox_id":1,"payment_type":"card","amount":1000,"comment":"Comment 3","source_id":1,"currency_rate":1000,"currency":"uzs"}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
additional | object | |
additional.balances_after | object | |
additional.balances_after.cash | object | |
additional.balances_after.cash.uzs | string | |
additional.balances_after.card | object | |
additional.balances_after.card.uzs | string | |
additional.on_hold_after | array | |
source_data | object | |
source_data.original_amount | integer | |
source_data.currency_rate | integer | Курс |
cashbox_id | integer | Касса |
payment_type | string | Тип оплаты |
currency | string | Валюта |
amount | integer | Сумма |
comment | string | Комментарий |
source_id | integer | Источник |
type | string | Тип |
status | string | Статус |
source_type | string | Источник |
updated_at | string | Обновлено |
created_at | string | Создано |
company_id | integer | Компания |
creator_id | integer | Создатель |
id | integer | ID |
source | null | |
contract_number | null | Номер контракта |
{
"additional": {
"balances_after": {
"cash": {
"uzs": "1000.00"
},
"card": {
"uzs": "1000.00"
}
},
"on_hold_after": []
},
"source_data": {
"original_amount": 1000,
"currency_rate": 1
},
"cashbox_id": 1,
"payment_type": "card",
"currency": "uzs",
"amount": 1000,
"comment": "Comment 3",
"source_id": 1,
"type": "income",
"status": "completed",
"source_type": "conversion",
"updated_at": "2026-09-30 12:51:26",
"created_at": "2026-09-30 12:51:26",
"company_id": 1,
"creator_id": 2,
"id": 41,
"source": null,
"contract_number": null
}Подтвердить транзакцию
/company/cashbox/transaction/{model}/completeПодтверждает получение перевода в статусе pending или on_hold: транзакция становится completed, деньги зачисляются на кассу-получатель. Инкассации подтверждаются отдельно; сотрудник может подтвердить только перевод на свою кассу, иначе 400.
Из формы (
multipart/form-data) методPATCHотправляется какPOSTс параметром?_method=PATCH.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
{
"message": "Success"
}Отменить транзакцию
/company/cashbox/transaction/{model}/cancelОтменяет транзакцию (canceled) и откатывает её влияние на остатки, связанную проводку и оплату поставщику. Нельзя отменить уже отменённую, связанную (ответную) транзакцию, проводки продаж, смен, долгов, кредитов и инкассаций, а также приходную часть конвертации — 400.
Из формы (
multipart/form-data) методPATCHотправляется какPOSTс параметром?_method=PATCH.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
{
"message": "Success"
}Список транзакций
/company/cashbox/transactionТранзакции по кассам, доступным пользователю; filter[contract_number] ищет по номеру договора ICAN. show[]=total вместе с filter[total_date_from] и filter[total_date_to] (Y-m-d H:i:s) добавляет total — суммы завершённых транзакций по типу, типу оплаты, источнику и валюте. ?format=excel выгружает список.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Параметр | Описание |
|---|---|
filter[id] | ID — точное значение |
filter[company_id] | Компания — одно значение или список filter[company_id][] |
filter[creator_id] | Создатель — точное значение |
filter[cashbox_id] | Касса — точное значение |
filter[type] | Тип — точное значение |
filter[payment_type] | Тип оплаты — точное значение |
filter[currency] | Валюта — точное значение |
filter[status] | Статус — точное значение |
filter[source_type] | Источник — одно значение или список filter[source_type][] |
filter[source_id] | Источник — точное значение |
filter[created_at] | Создано — период: [0] — с, [1] — по (Y-m-d) |
sort[] | Сортировка, - — по убыванию: id, -id |
with[] | Подгрузить связи: creator.profile, cashbox, source |
page | Номер страницы, с 1 |
page-size | Записей на странице, не больше 20 |
GET /company/cashbox/transaction?filter[id]=1&filter[company_id][0]=1&filter[company_id][1]=2&filter[creator_id]=2&filter[cashbox_id]=1&filter[type]=income&filter[payment_type]=cash&filter[currency]=uzs&filter[status]=completed&filter[source_type][0]=cashbox&filter[source_type][1]=reason&filter[source_id]=1&filter[created_at][0]=2026-09-29&filter[created_at][1]=2026-09-30Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | integer | ID |
data[].company_id | integer | Компания |
data[].creator_id | integer | Создатель |
data[].cashbox_id | integer | Касса |
data[].type | string | Тип |
data[].payment_type | string | Тип оплаты |
data[].currency | string | Валюта |
data[].amount | integer | Сумма |
data[].comment | string | Комментарий |
data[].status | string | Статус |
data[].source_type | string | Источник |
data[].source_id | integer | Источник |
data[].source_data | array | |
data[].related_to_id | null | |
data[].reversal_of_id | null | |
data[].cancel_comment | null | Причина удаления |
data[].additional | object | |
data[].additional.on_hold_after | array | |
data[].additional.balances_after | array | |
data[].created_at | string | Создано |
data[].updated_at | string | Обновлено |
data[].source | null | |
data[].contract_number | null | Номер контракта |
{
"data": [
{
"id": 1,
"company_id": 1,
"creator_id": 2,
"cashbox_id": 1,
"type": "income",
"payment_type": "cash",
"currency": "uzs",
"amount": 1000,
"comment": "Comment 1",
"status": "completed",
"source_type": "reason",
"source_id": 1,
"source_data": [],
"related_to_id": null,
"reversal_of_id": null,
"cancel_comment": null,
"additional": {
"on_hold_after": [],
"balances_after": []
},
"created_at": "2026-09-30 12:47:58",
"updated_at": "2026-09-30 12:47:58",
"source": null,
"contract_number": null
}
],
"links": {
"first": "https://api.wasyt.uz/company/cashbox/transaction?page=1",
"last": "https://api.wasyt.uz/company/cashbox/transaction?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/cashbox/transaction",
"per_page": 20,
"to": 1,
"total": 1
}
}Транзакция
/company/cashbox/transaction/{model}Одна транзакция кассы; with[]=source подгружает её источник (кассу, инкассацию, статью или поставщика).
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
company_id | integer | Компания |
creator_id | integer | Создатель |
cashbox_id | integer | Касса |
type | string | Тип |
payment_type | string | Тип оплаты |
currency | string | Валюта |
amount | integer | Сумма |
comment | string | Комментарий |
status | string | Статус |
source_type | string | Источник |
source_id | integer | Источник |
source_data | array | |
related_to_id | null | |
reversal_of_id | null | |
cancel_comment | null | Причина удаления |
additional | object | |
additional.on_hold_after | array | |
additional.balances_after | array | |
created_at | string | Создано |
updated_at | string | Обновлено |
source | null | |
contract_number | null | Номер контракта |
{
"id": 1,
"company_id": 1,
"creator_id": 2,
"cashbox_id": 1,
"type": "income",
"payment_type": "cash",
"currency": "uzs",
"amount": 1000,
"comment": "Comment 1",
"status": "completed",
"source_type": "reason",
"source_id": 1,
"source_data": [],
"related_to_id": null,
"reversal_of_id": null,
"cancel_comment": null,
"additional": {
"on_hold_after": [],
"balances_after": []
},
"created_at": "2026-09-30 12:47:58",
"updated_at": "2026-09-30 12:47:58",
"source": null,
"contract_number": null
}Создать транзакцию
/company/cashbox/transactionДоход или расход кассы по статье (source_type = reason, только вложенная статья того же типа) либо оплата поставщику (source_type = supplier, только расход). Доход вносится только в основную кассу, расход — из любой доступной. Проводится сразу (completed); оплата поставщику уменьшает долг перед ним.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
cashbox_id | integer | Да | Касса. ID существующей записи, доступной пользователю |
type | string | Да | Тип. Допустимые значения: income, outcome |
payment_type | string | Да | Тип оплаты. Допустимые значения: bank, card, cash, system |
currency | string | Да | Валюта. Допустимые значения: uzs, usd, eur, rub |
amount | number | Да | Сумма. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
comment | string | Да | Комментарий. Макс. 1000 символов |
source_type | string | Да | Источник. Допустимые значения: reason, supplier |
source_id | integer | Да | ID статьи (reason) или поставщика (supplier). ID существующей записи, доступной пользователю |
{
"cashbox_id": 1,
"payment_type": "cash",
"currency": "uzs",
"amount": 1000,
"comment": "Comment 3",
"type": "income",
"source_type": "reason",
"source_id": 2
}curl -X POST "https://api.wasyt.uz/company/cashbox/transaction" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"cashbox_id":1,"payment_type":"cash","currency":"uzs","amount":1000,"comment":"Comment 3","type":"income","source_type":"reason","source_id":2}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
additional | object | |
additional.balances_after | object | |
additional.balances_after.cash | object | |
additional.balances_after.cash.uzs | string | |
additional.on_hold_after | array | |
source_data | array | |
cashbox_id | integer | Касса |
type | string | Тип |
payment_type | string | Тип оплаты |
currency | string | Валюта |
amount | integer | Сумма |
comment | string | Комментарий |
source_type | string | Источник |
source_id | integer | Источник |
status | string | Статус |
updated_at | string | Обновлено |
created_at | string | Создано |
company_id | integer | Компания |
creator_id | integer | Создатель |
id | integer | ID |
source | null | |
contract_number | null | Номер контракта |
{
"additional": {
"balances_after": {
"cash": {
"uzs": "2000.00"
}
},
"on_hold_after": []
},
"source_data": [],
"cashbox_id": 1,
"type": "income",
"payment_type": "cash",
"currency": "uzs",
"amount": 1000,
"comment": "Comment 3",
"source_type": "reason",
"source_id": 2,
"status": "completed",
"updated_at": "2026-09-30 12:51:27",
"created_at": "2026-09-30 12:51:27",
"company_id": 1,
"creator_id": 2,
"id": 49,
"source": null,
"contract_number": null
}
