Skip to content

Кассовые смены ​

Смена кассира на кассе продаж: открытие с разменной суммой, расходы из кассы во время смены и закрытие с пересчётом денег по каждому типу оплаты и валюте. Кассир видит только свои смены, директор — все смены компании.

МетодАдресНазначение
GET/company/trade/cashbox-shift/currentТекущая смена кассира
GET/company/trade/cashbox-shift/expense-reasonsТипы расходов смены
POST/company/trade/cashbox-shift/expense-reasonsДобавить тип расхода
PATCH/company/trade/cashbox-shift/{model}/closeЗакрыть смену
POST/company/trade/cashbox-shift/{model}/expenseРасход из кассы
GET/company/trade/cashbox-shiftСписок смен
GET/company/trade/cashbox-shift/{model}Детали смены
POST/company/trade/cashbox-shiftОткрыть смену

Текущая смена кассира ​

GET/company/trade/cashbox-shift/current

Открытая смена текущего пользователя в data (или null, если смены нет) и правила смен компании в settings. В смене приходит closes_in — сколько секунд осталось до конца рабочего времени (отрицательное после его окончания, null без ограничения).

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Ответ · 200 ​

Поля ответа
ПолеТипОписание
datanullДанные
settingsobjectНастройки
settings.is_enabledbooleanВключено
settings.is_working_hours_enabledbooleanРабочее время смены
settings.working_hours_fromstringНачало рабочего времени
settings.working_hours_tostringКонец рабочего времени
settings.is_round_the_clockboolean24-часовая смена
settings.overdue_actionstringКогда время вышло
json
{
    "data": null,
    "settings": {
        "is_enabled": true,
        "is_working_hours_enabled": false,
        "working_hours_from": "09:00",
        "working_hours_to": "21:00",
        "is_round_the_clock": false,
        "overdue_action": "remind"
    }
}

Типы расходов смены ​

GET/company/trade/cashbox-shift/expense-reasons

Статьи «Расход» компании, на которые можно провести расход из кассы: конечные статьи дерева и статьи верхнего уровня без вложенных. Каждая с родительской группой parent.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Ответ · 200 ​

Поля ответа
ПолеТипОписание
dataobject[]Данные
data[].idintegerID
data[].namestringНазвание
data[].parentobject
data[].parent.idintegerID
data[].parent.namestringНазвание
json
{
    "data": [
        {
            "id": 11,
            "name": "Обед",
            "parent": {
                "id": 3,
                "name": "Transaction reason 2"
            }
        },
        {
            "id": 12,
            "name": "Транспорт",
            "parent": null
        }
    ]
}

Добавить тип расхода ​

POST/company/trade/cashbox-shift/expense-reasons

Создаёт статью «Расход» с указанным названием в группе «Расходы из кассы» (группа создаётся при необходимости). Если статья с таким названием уже есть, возвращается она — дубль не создаётся.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Тело запроса ​

ПолеТипОбязательноОписание
namestringДаНазвание. Макс. 255 символов
json
{
    "name": "Такси"
}
bash
curl -X POST "https://api.wasyt.uz/company/trade/cashbox-shift/expense-reasons" \
  -H "Accept: application/json" \
  -H "Accept-Language: ru" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"name":"Такси"}'

Ответ · 200 ​

Поля ответа
ПолеТипОписание
idintegerID
namestringНазвание
parentobject
parent.idintegerID
parent.namestringНазвание
json
{
    "id": 14,
    "name": "Такси",
    "parent": {
        "id": 13,
        "name": "Расходы из кассы"
    }
}

Закрыть смену ​

PATCH/company/trade/cashbox-shift/{model}/close

Закрывает открытую смену по пересчитанным суммам actuals (не указанная строка считается равной ожидаемой). Расхождение по любой строке требует closing_comment и проводится по кассе приходом или расходом. closing_action: keep — всё остаётся в кассе, transfer_all — всё уходит инкассацией в основную кассу, transfer_part — в кассе остаются наличные из leave_amounts (не больше пересчитанных). Итоговые цифры смены замораживаются.

Из формы (multipart/form-data) метод PATCH отправляется как POST с параметром ?_method=PATCH.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Тело запроса ​

ПолеТипОбязательноОписание
actualsobject[]НетФактические суммы. Макс. 50 элементов
actuals[].payment_typestringДаТип оплаты. Допустимые значения: cash, card, bank
actuals[].payment_type_idintegerНет
actuals[].currencystringДаВалюта. Допустимые значения: uzs, usd, eur, rub
actuals[].amountnumberДаФактически. До 2 знаков после запятой. Не меньше -999999999999.99. Не больше 999999999999.99
closing_actionstringДаДействие при закрытии. Допустимые значения: keep, transfer_all, transfer_part
leave_amountsobject[]НетСумма остатка. Макс. 20 элементов
leave_amounts[].currencystringДаВалюта. Без повторов. Допустимые значения: uzs, usd, eur, rub
leave_amounts[].amountnumberДаСумма остатка. До 2 знаков после запятой. Не меньше 0. Не больше 999999999999.99
closing_commentstringНетКомментарий к кассовой смене. Макс. 1000 символов
json
{
    "actuals": [
        {
            "payment_type": "cash",
            "currency": "uzs",
            "amount": 1000
        },
        {
            "payment_type": "card",
            "currency": "uzs",
            "amount": 3000
        },
        {
            "payment_type": "bank",
            "currency": "uzs",
            "amount": 0
        }
    ],
    "closing_action": "keep"
}
bash
curl -X PATCH "https://api.wasyt.uz/company/trade/cashbox-shift/4/close" \
  -H "Accept: application/json" \
  -H "Accept-Language: ru" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"actuals":[{"payment_type":"cash","currency":"uzs","amount":1000},{"payment_type":"card","currency":"uzs","amount":3000},{"payment_type":"bank","currency":"uzs","amount":0}],"closing_action":"keep"}'

Ответ · 200 ​

Поля ответа
ПолеТипОписание
idintegerID
creator_idintegerСоздатель
company_idintegerКомпания
cashbox_idintegerКасса
stock_idintegerСклад
closed_by_idinteger
collection_idnull
statusstringСтатус
opening_balancesobject[]
opening_balances[].amountintegerСумма
opening_balances[].currencystringВалюта
opening_balances[].payment_typestringТип оплаты
opening_amountintegerСумма открытия
opening_currencynullВалюта открытия
opening_commentnullПримечание
closing_actionstringДействие при закрытии
closing_commentnullКомментарий к кассовой смене
summaryobject
summary.currencystringВалюта
summary.rowsobject[]
summary.rows[].payment_typestringТип оплаты
summary.rows[].payment_type_idnull
summary.rows[].payment_type_namenull
summary.rows[].currencystringВалюта
summary.rows[].opening_balanceinteger
summary.rows[].opening_amountintegerСумма открытия
summary.rows[].openinginteger
summary.rows[].incomeintegerДоход
summary.rows[].outcomeinteger
summary.rows[].expectedinteger
summary.rows[].by_sourcearray
summary.rows[].actualinteger
summary.rows[].differenceinteger
summary.rows[].transferredinteger
summary.rows[].leftinteger
summary.totalsobject[]
summary.totals[].currencystringВалюта
summary.totals[].openinginteger
summary.totals[].incomeintegerДоход
summary.totals[].outcomeinteger
summary.totals[].expectedinteger
summary.totals[].actualinteger
summary.totals[].differenceinteger
summary.totals[].transferredinteger
summary.totals[].leftinteger
summary.totals[].cashinteger
summary.totals[].non_cashinteger
summary.checks_countinteger
summary.returns_countintegerВозвраты (шт.)
summary.debtsarray
summary.transactionsarrayТранзакции
opened_atstring
closes_atnull
overdue_actionnullКогда время вышло
closed_atstring
created_atstringСоздано
updated_atstringОбновлено
companyobjectКомпания
company.idintegerID
company.parent_idnullРодитель
company.partner_idintegerПартнёр
company.district_idintegerРайон
company.industry_idintegerСфера деятельности
company.namestringНазвание
company.company_namestringКомпания
company.logoobjectЛоготип
company.logo.originalobject
company.logo.original.rawstring
company.logo.original.webpstring
company.logo.widen_25object
company.logo.widen_25.rawstring
company.logo.widen_25.webpstring
company.logo.widen_100object
company.logo.widen_100.rawstring
company.logo.widen_100.webpstring
company.logo.widen_500object
company.logo.widen_500.rawstring
company.logo.widen_500.webpstring
company.innstringИНН
company.mfostringМФО
company.addressstringАдрес
company.latitudenullШирота
company.longitudenullДолгота
company.commentstringКомментарий
company.telegram_phonestringТелефон в Telegram
company.director_full_namestringФИО директора
company.bankstringБанк
company.payment_accountstringРасчётный счёт
company.agreement_numberstringНомер договора
company.agreement_datenull
company.atmos_terminal_idintegerID терминала в Atmos
company.uniaccess_auto_payment_credit_overdue_daysinteger
company.uniaccess_branch_idintegerBranch ID в Uniaccess
company.field_of_activitystringНаправление
company.vat_percentstringНДС (%)
company.is_using_new_my_uzcard_auto_payment_by_pinflbooleanИспользует новый метод MyUzcard для автосписания по ПИНФЛ
company.bonus_entry_periodintegerПериод учёта бонусов (в месяцах)
company.abc_segment_ainteger
company.abc_segment_binteger
company.abc_segment_cinteger
company.is_pos_window_enabledboolean
company.cashbox_shift_settingsobject
company.cashbox_shift_settings.is_enabledbooleanВключено
company.has_bank_payment_typeboolean
company.is_ican_turned_onbooleanICAN включён
company.is_partner_turned_onbooleanПартнёр включён
company.created_atstringСоздано
company.updated_atstringОбновлено
company.is_deletedboolean
company.parentnull
creatorobject
creator.idintegerID
creator.typestringТип
creator.role_idintegerРоль
creator.company_idintegerКомпания
creator.partner_idnullПартнёр
creator.usernamestringЛогин
creator.pinflnullПИНФЛ
creator.phonestringТелефон
creator.sipuni_sip_numberstringVoIP - Sipuni (SIP-номер)
json
{
    "id": 4,
    "creator_id": 2,
    "company_id": 1,
    "cashbox_id": 2,
    "stock_id": 1,
    "closed_by_id": 2,
    "collection_id": null,
    "status": "closed",
    "opening_balances": [
        {
            "amount": 1000,
            "currency": "uzs",
            "payment_type": "cash"
        },
        {
            "amount": 3000,
            "currency": "uzs",
            "payment_type": "card"
        }
    ],
    "opening_amount": 0,
    "opening_currency": null,
    "opening_comment": null,
    "closing_action": "keep",
    "closing_comment": null,
    "summary": {
        "currency": "uzs",
        "rows": [
            {
                "payment_type": "cash",
                "payment_type_id": null,
                "payment_type_name": null,
                "currency": "uzs",
                "opening_balance": 1000,
                "opening_amount": 0,
                "opening": 1000,
                "income": 0,
                "outcome": 0,
                "expected": 1000,
                "by_source": [],
                "actual": 1000,
                "difference": 0,
                "transferred": 0,
                "left": 1000
            },
            {
                "payment_type": "card",
                "payment_type_id": null,
                "payment_type_name": null,
                "currency": "uzs",
                "opening_balance": 3000,
                "opening_amount": 0,
                "opening": 3000,
                "income": 0,
                "outcome": 0,
                "expected": 3000,
                "by_source": [],
                "actual": 3000,
                "difference": 0,
                "transferred": 0,
                "left": 3000
            }
        ],
        "totals": [
            {
                "currency": "uzs",
                "opening": 4000,
                "income": 0,
                "outcome": 0,
                "expected": 4000,
                "actual": 4000,
                "difference": 0,
                "transferred": 0,
                "left": 4000,
                "cash": 1000,
                "non_cash": 3000
            },
            {
                "currency": "usd",
                "opening": 0,
                "income": 0,
                "outcome": 0,
                "expected": 0,
                "actual": 0,
                "difference": 0,
                "transferred": 0,
                "left": 0,
                "cash": 0,
                "non_cash": 0
            }
        ],
        "checks_count": 0,
        "returns_count": 0,
        "debts": [],
        "transactions": []
    },
    "opened_at": "2026-09-30 12:53:52",
    "closes_at": null,
    "overdue_action": null,
    "closed_at": "2026-09-30 12:53:52",
    "created_at": "2026-09-30 12:53:52",
    "updated_at": "2026-09-30 12:53:52",
    "company": {
        "id": 1,
        "parent_id": null,
        "partner_id": 1,
        "district_id": 1,
        "industry_id": 1,
        "name": "Company 1",
        "company_name": "Company 1",
        "logo": {
            "original": {
                "raw": "https://api.wasyt.uz/test_data/images/1.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/original/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            },
            "widen_25": {
                "raw": "https://api.wasyt.uz/storage/thumbs/widen/25/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/widen/25/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            },
            "widen_100": {
                "raw": "https://api.wasyt.uz/storage/thumbs/widen/100/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/widen/100/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            },
            "widen_500": {
                "raw": "https://api.wasyt.uz/storage/thumbs/widen/500/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/widen/500/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            }
        },
        "inn": "000000001",
        "mfo": "00001",
        "address": "Address 1",
        "latitude": null,
        "longitude": null,
        "comment": "Comment 1",
        "telegram_phone": "998000000001",
        "director_full_name": "Director 1",
        "bank": "Bank 1",
        "payment_account": "00000000000000000001",
        "agreement_number": "001/2026",
        "agreement_date": null,
        "atmos_terminal_id": 97007302,
        "uniaccess_auto_payment_credit_overdue_days": 3,
        "uniaccess_branch_id": 1,
        "field_of_activity": "trading",
        "vat_percent": "12.00",
        "is_using_new_my_uzcard_auto_payment_by_pinfl": true,
        "bonus_entry_period": 12,
        "abc_segment_a": 75,
        "abc_segment_b": 15,
        "abc_segment_c": 10,
        "is_pos_window_enabled": true,
        "cashbox_shift_settings": {
            "is_enabled": true
        },
        "has_bank_payment_type": false,
        "is_ican_turned_on": true,
        "is_partner_turned_on": false,
        "created_at": "2026-09-30 12:47:58",
        "updated_at": "2026-09-30 12:49:04",
        "is_deleted": false,
        "parent": null
    },
    "creator": {
        "id": 2,
        "type": "director",
        "role_id": 2,
        "company_id": 1,
        "partner_id": null,
        "username": "director_1@local.host",
        "pinfl": null,
        "phone": "998020000001",
        "sipuni_sip_number": "210",
        "is_confirmed": true,
        "are_all_companies_available": false,
        "last_login_at": null,
        "created_at": "2026-09-30 12:47:59",
        "updated_at": "2026-09-30 12:47:59",
        "is_deleted": false,
        "profile": {
            "first_name": null,
            "last_name": null,
            "position": null,
            "birth_date": null,
            "gender": null,
            "full_name": " "
        }
    },
    "closed_by": {
        "id": 2,
        "type": "director",
        "role_id": 2,
        "company_id": 1,
        "partner_id": null,
        "username": "director_1@local.host",
        "pinfl": null,
        "phone": "998020000001",
        "sipuni_sip_number": "210",
        "is_confirmed": true,
        "are_all_companies_available": false,
        "last_login_at": null,
        "created_at": "2026-09-30 12:47:59",
        "updated_at": "2026-09-30 12:47:59",
        "is_deleted": false,
        "profile": {
            "first_name": null,
            "last_name": null,
            "position": null,
            "birth_date": null,
            "gender": null,
            "full_name": " "
        }
    },
    "cashbox": {
        "id": 2,
        "creator_id": 2,
        "company_id": 1,
        "name": "Cashbox 2",
        "type": "sale",
        "created_at": "2026-09-30 12:47:58",
        "updated_at": "2026-09-30 12:47:58",
        "is_deleted": false
    },
    "stock": {
        "id": 1,
        "creator_id": 2,
        "company_id": 1,
        "name": "Stock 1",
        "is_available": true,
        "created_at": "2026-09-30 12:47:59",
        "updated_at": "2026-09-30 12:47:59",
        "is_deleted": false
    }
}

Пример ошибки · 422 ​

json
{
    "message": "Есть расхождение — укажите причину в комментарии",
    "errors": {
        "closing_comment": [
            "Есть расхождение — укажите причину в комментарии"
        ]
    }
}

Расход из кассы ​

POST/company/trade/cashbox-shift/{model}/expense

Проводит расход из кассы открытой смены по существующей статье transaction_reason_id или по новой, заданной названием reason_name (создаётся статья «Расход»). Возвращает созданную кассовую операцию; по закрытой смене — ошибка 400.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Тело запроса ​

ПолеТипОбязательноОписание
transaction_reason_idintegerЕсли не передано reason_nameТип расхода. ID существующей записи, доступной пользователю
reason_namestringЕсли не передано transaction_reason_idНазвание расхода. Макс. 255 символов
reason_parent_idintegerНетГруппа расхода. ID существующей записи, доступной пользователю
payment_typestringДаТип оплаты. Допустимые значения: cash, card, bank
currencystringДаВалюта. Допустимые значения: uzs, usd, eur, rub
amountnumberДаСумма. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99
commentstringНетКомментарий. Макс. 1000 символов
json
{
    "transaction_reason_id": 6,
    "payment_type": "cash",
    "currency": "uzs",
    "amount": 200,
    "comment": "Обед сотрудникам"
}
bash
curl -X POST "https://api.wasyt.uz/company/trade/cashbox-shift/27/expense" \
  -H "Accept: application/json" \
  -H "Accept-Language: ru" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"transaction_reason_id":6,"payment_type":"cash","currency":"uzs","amount":200,"comment":"Обед сотрудникам"}'

Ответ · 200 ​

Поля ответа
ПолеТипОписание
additionalobject
additional.balances_afterobject
additional.balances_after.cardobject
additional.balances_after.card.uzsstring
additional.balances_after.cashobject
additional.balances_after.cash.uzsstring
additional.on_hold_afterarray
source_dataobject
source_data.cashbox_shift_idinteger
cashbox_idintegerКасса
typestringТип
payment_typestringТип оплаты
currencystringВалюта
amountintegerСумма
statusstringСтатус
source_typestringИсточник
source_idintegerИсточник
commentstringКомментарий
updated_atstringОбновлено
created_atstringСоздано
company_idintegerКомпания
creator_idintegerСоздатель
idintegerID
cashboxobject
cashbox.idintegerID
cashbox.creator_idintegerСоздатель
cashbox.company_idintegerКомпания
cashbox.namestringНазвание
cashbox.typestringТип
cashbox.created_atstringСоздано
cashbox.updated_atstringОбновлено
cashbox.is_deletedboolean
sourcenull
contract_numbernullНомер контракта
json
{
    "additional": {
        "balances_after": {
            "card": {
                "uzs": "3000.00"
            },
            "cash": {
                "uzs": "800.00"
            }
        },
        "on_hold_after": []
    },
    "source_data": {
        "cashbox_shift_id": 27
    },
    "cashbox_id": 2,
    "type": "outcome",
    "payment_type": "cash",
    "currency": "uzs",
    "amount": 200,
    "status": "completed",
    "source_type": "reason",
    "source_id": 6,
    "comment": "Обед сотрудникам",
    "updated_at": "2026-09-30 12:54:00",
    "created_at": "2026-09-30 12:54:00",
    "company_id": 1,
    "creator_id": 2,
    "id": 147,
    "cashbox": {
        "id": 2,
        "creator_id": 2,
        "company_id": 1,
        "name": "Cashbox 2",
        "type": "sale",
        "created_at": "2026-09-30 12:47:58",
        "updated_at": "2026-09-30 12:47:58",
        "is_deleted": false
    },
    "source": null,
    "contract_number": null
}

Список смен ​

GET/company/trade/cashbox-shift

Смены кассиров с пагинацией. Кассир видит только свои смены, директор — все смены компании.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

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

ПараметрОписание
filter[id]ID — точное значение
filter[creator_id]Создатель — точное значение
filter[company_id]Компания — точное значение
filter[cashbox_id]Касса — точное значение
filter[stock_id]Склад — точное значение
filter[status]Статус — одно значение или список filter[status][]
filter[opened_at]период: [0] — с, [1] — по (Y-m-d)
filter[closed_at]период: [0] — с, [1] — по (Y-m-d)
sort[]Сортировка, - — по убыванию: id, -id, opened_at, -opened_at, closed_at, -closed_at
with[]Подгрузить связи: creator.profile, closed_by.profile, company, cashbox, stock
pageНомер страницы, с 1
page-sizeЗаписей на странице, не больше 20

Ответ ​

Пример ответа пока не записан тестами.

Детали смены ​

GET/company/trade/cashbox-shift/{model}

Смена с итогами в summary: движения по каждому типу оплаты и валюте, количество чеков и возвратов, выданные и погашенные долги. У открытой смены цифры пересчитываются при каждом запросе, у закрытой — зафиксированы на момент закрытия.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Ответ · 200 ​

Поля ответа
ПолеТипОписание
idintegerID
creator_idintegerСоздатель
company_idintegerКомпания
cashbox_idintegerКасса
stock_idintegerСклад
closed_by_idnull
collection_idnull
statusstringСтатус
opening_balancesobject[]
opening_balances[].amountintegerСумма
opening_balances[].currencystringВалюта
opening_balances[].payment_typestringТип оплаты
opening_amountintegerСумма открытия
opening_currencystringВалюта открытия
opening_commentnullПримечание
closing_actionnullДействие при закрытии
closing_commentnullКомментарий к кассовой смене
summaryobject
summary.currencystringВалюта
summary.rowsobject[]
summary.rows[].payment_typestringТип оплаты
summary.rows[].payment_type_idnull
summary.rows[].payment_type_namenull
summary.rows[].currencystringВалюта
summary.rows[].opening_balanceinteger
summary.rows[].opening_amountintegerСумма открытия
summary.rows[].openinginteger
summary.rows[].incomeintegerДоход
summary.rows[].outcomeinteger
summary.rows[].expectedinteger
summary.rows[].by_sourceobject
summary.rows[].by_source.saleobject
summary.rows[].by_source.sale.incomeintegerДоход
summary.rows[].by_source.sale.outcomeinteger
summary.rows[].by_source.client_debtobject
summary.rows[].by_source.client_debt.incomeintegerДоход
summary.rows[].by_source.client_debt.outcomeinteger
summary.rows[].by_source.reasonobjectПричина
summary.rows[].by_source.reason.incomeintegerДоход
summary.rows[].by_source.reason.outcomeinteger
summary.totalsobject[]
summary.totals[].currencystringВалюта
summary.totals[].openinginteger
summary.totals[].incomeintegerДоход
summary.totals[].outcomeinteger
summary.totals[].expectedinteger
summary.totals[].cashinteger
summary.totals[].non_cashinteger
summary.checks_countinteger
summary.returns_countintegerВозвраты (шт.)
summary.debtsarray
summary.transactionsobject[]Транзакции
summary.transactions[].idintegerID
summary.transactions[].typestringТип
summary.transactions[].payment_typestringТип оплаты
summary.transactions[].payment_type_idnull
summary.transactions[].currencystringВалюта
summary.transactions[].amountintegerСумма
summary.transactions[].statusstringСтатус
summary.transactions[].source_typestringИсточник
summary.transactions[].source_idintegerИсточник
summary.transactions[].sale_idnullПродажа
summary.transactions[].reasonnullПричина
summary.transactions[].commentnullКомментарий
summary.transactions[].created_atstringСоздано
opened_atstring
closes_atnull
overdue_actionnullКогда время вышло
closed_atnull
created_atstringСоздано
updated_atstringОбновлено
closes_innull
companyobjectКомпания
company.idintegerID
company.parent_idnullРодитель
company.partner_idintegerПартнёр
company.district_idintegerРайон
company.industry_idintegerСфера деятельности
company.namestringНазвание
company.company_namestringКомпания
company.logoobjectЛоготип
company.logo.originalobject
company.logo.original.rawstring
company.logo.original.webpstring
company.logo.widen_25object
company.logo.widen_25.rawstring
company.logo.widen_25.webpstring
company.logo.widen_100object
company.logo.widen_100.rawstring
company.logo.widen_100.webpstring
company.logo.widen_500object
company.logo.widen_500.rawstring
company.logo.widen_500.webpstring
company.innstringИНН
company.mfostringМФО
company.addressstringАдрес
company.latitudenullШирота
company.longitudenullДолгота
company.commentstringКомментарий
company.telegram_phonestringТелефон в Telegram
company.director_full_namestringФИО директора
company.bankstringБанк
company.payment_accountstringРасчётный счёт
company.agreement_numberstringНомер договора
company.agreement_datenull
company.atmos_terminal_idintegerID терминала в Atmos
company.uniaccess_auto_payment_credit_overdue_daysinteger
company.uniaccess_branch_idintegerBranch ID в Uniaccess
company.field_of_activitystringНаправление
company.vat_percentstringНДС (%)
company.is_using_new_my_uzcard_auto_payment_by_pinflbooleanИспользует новый метод MyUzcard для автосписания по ПИНФЛ
company.bonus_entry_periodintegerПериод учёта бонусов (в месяцах)
company.abc_segment_ainteger
company.abc_segment_binteger
company.abc_segment_cinteger
company.is_pos_window_enabledboolean
company.cashbox_shift_settingsobject
company.cashbox_shift_settings.is_enabledbooleanВключено
company.has_bank_payment_typeboolean
company.is_ican_turned_onbooleanICAN включён
json
{
    "id": 31,
    "creator_id": 2,
    "company_id": 1,
    "cashbox_id": 2,
    "stock_id": 1,
    "closed_by_id": null,
    "collection_id": null,
    "status": "open",
    "opening_balances": [
        {
            "amount": 1000,
            "currency": "uzs",
            "payment_type": "cash"
        },
        {
            "amount": 3000,
            "currency": "uzs",
            "payment_type": "card"
        }
    ],
    "opening_amount": 500,
    "opening_currency": "uzs",
    "opening_comment": null,
    "closing_action": null,
    "closing_comment": null,
    "summary": {
        "currency": "uzs",
        "rows": [
            {
                "payment_type": "cash",
                "payment_type_id": null,
                "payment_type_name": null,
                "currency": "uzs",
                "opening_balance": 1000,
                "opening_amount": 500,
                "opening": 1500,
                "income": 950,
                "outcome": 150,
                "expected": 2300,
                "by_source": {
                    "sale": {
                        "income": 700,
                        "outcome": 100
                    },
                    "client_debt": {
                        "income": 250,
                        "outcome": 0
                    },
                    "reason": {
                        "income": 0,
                        "outcome": 50
                    }
                }
            },
            {
                "payment_type": "card",
                "payment_type_id": null,
                "payment_type_name": null,
                "currency": "uzs",
                "opening_balance": 3000,
                "opening_amount": 0,
                "opening": 3000,
                "income": 300,
                "outcome": 0,
                "expected": 3300,
                "by_source": {
                    "sale": {
                        "income": 300,
                        "outcome": 0
                    }
                }
            }
        ],
        "totals": [
            {
                "currency": "uzs",
                "opening": 4500,
                "income": 1250,
                "outcome": 150,
                "expected": 5600,
                "cash": 2300,
                "non_cash": 3300
            },
            {
                "currency": "usd",
                "opening": 0,
                "income": 0,
                "outcome": 0,
                "expected": 0,
                "cash": 0,
                "non_cash": 0
            }
        ],
        "checks_count": 0,
        "returns_count": 0,
        "debts": [],
        "transactions": [
            {
                "id": 151,
                "type": "income",
                "payment_type": "cash",
                "payment_type_id": null,
                "currency": "uzs",
                "amount": 700,
                "status": "completed",
                "source_type": "sale",
                "source_id": 1,
                "sale_id": null,
                "reason": null,
                "comment": null,
                "created_at": "2026-09-30 12:54:02"
            },
            {
                "id": 152,
                "type": "income",
                "payment_type": "card",
                "payment_type_id": null,
                "currency": "uzs",
                "amount": 300,
                "status": "completed",
                "source_type": "sale",
                "source_id": 1,
                "sale_id": null,
                "reason": null,
                "comment": null,
                "created_at": "2026-09-30 12:54:02"
            }
        ]
    },
    "opened_at": "2026-09-30 12:54:02",
    "closes_at": null,
    "overdue_action": null,
    "closed_at": null,
    "created_at": "2026-09-30 12:54:02",
    "updated_at": "2026-09-30 12:54:02",
    "closes_in": null,
    "company": {
        "id": 1,
        "parent_id": null,
        "partner_id": 1,
        "district_id": 1,
        "industry_id": 1,
        "name": "Company 1",
        "company_name": "Company 1",
        "logo": {
            "original": {
                "raw": "https://api.wasyt.uz/test_data/images/1.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/original/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            },
            "widen_25": {
                "raw": "https://api.wasyt.uz/storage/thumbs/widen/25/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/widen/25/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            },
            "widen_100": {
                "raw": "https://api.wasyt.uz/storage/thumbs/widen/100/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/widen/100/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            },
            "widen_500": {
                "raw": "https://api.wasyt.uz/storage/thumbs/widen/500/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/widen/500/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            }
        },
        "inn": "000000001",
        "mfo": "00001",
        "address": "Address 1",
        "latitude": null,
        "longitude": null,
        "comment": "Comment 1",
        "telegram_phone": "998000000001",
        "director_full_name": "Director 1",
        "bank": "Bank 1",
        "payment_account": "00000000000000000001",
        "agreement_number": "001/2026",
        "agreement_date": null,
        "atmos_terminal_id": 97007302,
        "uniaccess_auto_payment_credit_overdue_days": 3,
        "uniaccess_branch_id": 1,
        "field_of_activity": "trading",
        "vat_percent": "12.00",
        "is_using_new_my_uzcard_auto_payment_by_pinfl": true,
        "bonus_entry_period": 12,
        "abc_segment_a": 75,
        "abc_segment_b": 15,
        "abc_segment_c": 10,
        "is_pos_window_enabled": true,
        "cashbox_shift_settings": {
            "is_enabled": true
        },
        "has_bank_payment_type": false,
        "is_ican_turned_on": true,
        "is_partner_turned_on": false,
        "created_at": "2026-09-30 12:47:58",
        "updated_at": "2026-09-30 12:49:04",
        "is_deleted": false,
        "parent": null
    },
    "creator": {
        "id": 2,
        "type": "director",
        "role_id": 2,
        "company_id": 1,
        "partner_id": null,
        "username": "director_1@local.host",
        "pinfl": null,
        "phone": "998020000001",
        "sipuni_sip_number": "210",
        "is_confirmed": true,
        "are_all_companies_available": false,
        "last_login_at": null,
        "created_at": "2026-09-30 12:47:59",
        "updated_at": "2026-09-30 12:47:59",
        "is_deleted": false,
        "profile": {
            "first_name": null,
            "last_name": null,
            "position": null,
            "birth_date": null,
            "gender": null,
            "full_name": " "
        }
    },
    "closed_by": null,
    "cashbox": {
        "id": 2,
        "creator_id": 2,
        "company_id": 1,
        "name": "Cashbox 2",
        "type": "sale",
        "created_at": "2026-09-30 12:47:58",
        "updated_at": "2026-09-30 12:47:58",
        "is_deleted": false
    },
    "stock": {
        "id": 1,
        "creator_id": 2,
        "company_id": 1,
        "name": "Stock 1",
        "is_available": true,
        "created_at": "2026-09-30 12:47:59",
        "updated_at": "2026-09-30 12:47:59",
        "is_deleted": false
    }
}

Открыть смену ​

POST/company/trade/cashbox-shift

Открывает смену текущего кассира на кассе продаж и складе. Текущий баланс кассы фиксируется как входящий, а разменная сумма opening_amount приходуется в кассу наличными. Ошибка 400, если смены отключены в настройках, у кассира уже есть открытая смена или на кассе работает другой кассир.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Тело запроса ​

ПолеТипОбязательноОписание
cashbox_idintegerДаКасса. ID существующей записи, доступной пользователю
stock_idintegerДаСклад. ID существующей записи, доступной пользователю
opening_amountnumberНетСумма открытия. До 2 знаков после запятой. Не меньше 0. Не больше 999999999999.99
opening_currencystringДаВалюта открытия. Допустимые значения: uzs, usd, eur, rub
opening_commentstringНетПримечание. Макс. 1000 символов
json
{
    "cashbox_id": 2,
    "stock_id": 1,
    "opening_amount": 500,
    "opening_currency": "uzs",
    "opening_comment": "Размен"
}
bash
curl -X POST "https://api.wasyt.uz/company/trade/cashbox-shift" \
  -H "Accept: application/json" \
  -H "Accept-Language: ru" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"cashbox_id":2,"stock_id":1,"opening_amount":500,"opening_currency":"uzs","opening_comment":"Размен"}'

Ответ · 200 ​

Поля ответа
ПолеТипОписание
opening_balancesobject[]
opening_balances[].payment_typestringТип оплаты
opening_balances[].currencystringВалюта
opening_balances[].amountintegerСумма
company_idintegerКомпания
cashbox_idintegerКасса
stock_idintegerСклад
statusstringСтатус
opening_amountintegerСумма открытия
opening_currencystringВалюта открытия
opening_commentstringПримечание
opened_atstring
closes_atnull
overdue_actionnullКогда время вышло
updated_atstringОбновлено
created_atstringСоздано
creator_idintegerСоздатель
idintegerID
summaryobject
summary.currencystringВалюта
summary.rowsobject[]
summary.rows[].payment_typestringТип оплаты
summary.rows[].payment_type_idnull
summary.rows[].payment_type_namenull
summary.rows[].currencystringВалюта
summary.rows[].opening_balanceinteger
summary.rows[].opening_amountintegerСумма открытия
summary.rows[].openinginteger
summary.rows[].incomeintegerДоход
summary.rows[].outcomeinteger
summary.rows[].expectedinteger
summary.rows[].by_sourcearray
summary.totalsobject[]
summary.totals[].currencystringВалюта
summary.totals[].openinginteger
summary.totals[].incomeintegerДоход
summary.totals[].outcomeinteger
summary.totals[].expectedinteger
summary.totals[].cashinteger
summary.totals[].non_cashinteger
summary.checks_countinteger
summary.returns_countintegerВозвраты (шт.)
summary.debtsarray
summary.transactionsarrayТранзакции
closes_innull
companyobjectКомпания
company.idintegerID
company.parent_idnullРодитель
company.partner_idintegerПартнёр
company.district_idintegerРайон
company.industry_idintegerСфера деятельности
company.namestringНазвание
company.company_namestringКомпания
company.logoobjectЛоготип
company.logo.originalobject
company.logo.original.rawstring
company.logo.original.webpstring
company.logo.widen_25object
company.logo.widen_25.rawstring
company.logo.widen_25.webpstring
company.logo.widen_100object
company.logo.widen_100.rawstring
company.logo.widen_100.webpstring
company.logo.widen_500object
company.logo.widen_500.rawstring
company.logo.widen_500.webpstring
company.innstringИНН
company.mfostringМФО
company.addressstringАдрес
company.latitudenullШирота
company.longitudenullДолгота
company.commentstringКомментарий
company.telegram_phonestringТелефон в Telegram
company.director_full_namestringФИО директора
company.bankstringБанк
company.payment_accountstringРасчётный счёт
company.agreement_numberstringНомер договора
company.agreement_datenull
company.atmos_terminal_idintegerID терминала в Atmos
company.uniaccess_auto_payment_credit_overdue_daysinteger
company.uniaccess_branch_idintegerBranch ID в Uniaccess
company.field_of_activitystringНаправление
company.vat_percentstringНДС (%)
company.is_using_new_my_uzcard_auto_payment_by_pinflbooleanИспользует новый метод MyUzcard для автосписания по ПИНФЛ
company.bonus_entry_periodintegerПериод учёта бонусов (в месяцах)
company.abc_segment_ainteger
company.abc_segment_binteger
company.abc_segment_cinteger
company.is_pos_window_enabledboolean
company.cashbox_shift_settingsobject
company.cashbox_shift_settings.is_enabledbooleanВключено
company.has_bank_payment_typeboolean
company.is_ican_turned_onbooleanICAN включён
company.is_partner_turned_onbooleanПартнёр включён
company.created_atstringСоздано
company.updated_atstringОбновлено
company.is_deletedboolean
company.parentnull
creatorobject
creator.idintegerID
creator.typestringТип
creator.role_idintegerРоль
creator.company_idintegerКомпания
creator.partner_idnullПартнёр
creator.usernamestringЛогин
creator.pinflnullПИНФЛ
creator.phonestringТелефон
creator.sipuni_sip_numberstringVoIP - Sipuni (SIP-номер)
creator.is_confirmedboolean
creator.are_all_companies_availableboolean
creator.last_login_atnull
creator.created_atstringСоздано
creator.updated_atstringОбновлено
creator.is_deletedboolean
creator.profileobject
creator.profile.first_namenullИмя
creator.profile.last_namenullФамилия
creator.profile.positionnullДолжность
creator.profile.birth_datenullДата рождения
creator.profile.gendernullПол
json
{
    "opening_balances": [
        {
            "payment_type": "cash",
            "currency": "uzs",
            "amount": 1000
        },
        {
            "payment_type": "card",
            "currency": "uzs",
            "amount": 3000
        }
    ],
    "company_id": 1,
    "cashbox_id": 2,
    "stock_id": 1,
    "status": "open",
    "opening_amount": 500,
    "opening_currency": "uzs",
    "opening_comment": "Размен",
    "opened_at": "2026-09-30 12:53:56",
    "closes_at": null,
    "overdue_action": null,
    "updated_at": "2026-09-30 12:53:56",
    "created_at": "2026-09-30 12:53:56",
    "creator_id": 2,
    "id": 17,
    "summary": {
        "currency": "uzs",
        "rows": [
            {
                "payment_type": "cash",
                "payment_type_id": null,
                "payment_type_name": null,
                "currency": "uzs",
                "opening_balance": 1000,
                "opening_amount": 500,
                "opening": 1500,
                "income": 0,
                "outcome": 0,
                "expected": 1500,
                "by_source": []
            },
            {
                "payment_type": "card",
                "payment_type_id": null,
                "payment_type_name": null,
                "currency": "uzs",
                "opening_balance": 3000,
                "opening_amount": 0,
                "opening": 3000,
                "income": 0,
                "outcome": 0,
                "expected": 3000,
                "by_source": []
            }
        ],
        "totals": [
            {
                "currency": "uzs",
                "opening": 4500,
                "income": 0,
                "outcome": 0,
                "expected": 4500,
                "cash": 1500,
                "non_cash": 3000
            },
            {
                "currency": "usd",
                "opening": 0,
                "income": 0,
                "outcome": 0,
                "expected": 0,
                "cash": 0,
                "non_cash": 0
            }
        ],
        "checks_count": 0,
        "returns_count": 0,
        "debts": [],
        "transactions": []
    },
    "closes_in": null,
    "company": {
        "id": 1,
        "parent_id": null,
        "partner_id": 1,
        "district_id": 1,
        "industry_id": 1,
        "name": "Company 1",
        "company_name": "Company 1",
        "logo": {
            "original": {
                "raw": "https://api.wasyt.uz/test_data/images/1.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/original/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            },
            "widen_25": {
                "raw": "https://api.wasyt.uz/storage/thumbs/widen/25/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/widen/25/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            },
            "widen_100": {
                "raw": "https://api.wasyt.uz/storage/thumbs/widen/100/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/widen/100/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            },
            "widen_500": {
                "raw": "https://api.wasyt.uz/storage/thumbs/widen/500/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
                "webp": "https://api.wasyt.uz/storage/thumbs/widen/500/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
            }
        },
        "inn": "000000001",
        "mfo": "00001",
        "address": "Address 1",
        "latitude": null,
        "longitude": null,
        "comment": "Comment 1",
        "telegram_phone": "998000000001",
        "director_full_name": "Director 1",
        "bank": "Bank 1",
        "payment_account": "00000000000000000001",
        "agreement_number": "001/2026",
        "agreement_date": null,
        "atmos_terminal_id": 97007302,
        "uniaccess_auto_payment_credit_overdue_days": 3,
        "uniaccess_branch_id": 1,
        "field_of_activity": "trading",
        "vat_percent": "12.00",
        "is_using_new_my_uzcard_auto_payment_by_pinfl": true,
        "bonus_entry_period": 12,
        "abc_segment_a": 75,
        "abc_segment_b": 15,
        "abc_segment_c": 10,
        "is_pos_window_enabled": true,
        "cashbox_shift_settings": {
            "is_enabled": true
        },
        "has_bank_payment_type": false,
        "is_ican_turned_on": true,
        "is_partner_turned_on": false,
        "created_at": "2026-09-30 12:47:58",
        "updated_at": "2026-09-30 12:49:04",
        "is_deleted": false,
        "parent": null
    },
    "creator": {
        "id": 2,
        "type": "director",
        "role_id": 2,
        "company_id": 1,
        "partner_id": null,
        "username": "director_1@local.host",
        "pinfl": null,
        "phone": "998020000001",
        "sipuni_sip_number": "210",
        "is_confirmed": true,
        "are_all_companies_available": false,
        "last_login_at": null,
        "created_at": "2026-09-30 12:47:59",
        "updated_at": "2026-09-30 12:47:59",
        "is_deleted": false,
        "profile": {
            "first_name": null,
            "last_name": null,
            "position": null,
            "birth_date": null,
            "gender": null,
            "full_name": " "
        }
    },
    "closed_by": null,
    "cashbox": {
        "id": 2,
        "creator_id": 2,
        "company_id": 1,
        "name": "Cashbox 2",
        "type": "sale",
        "created_at": "2026-09-30 12:47:58",
        "updated_at": "2026-09-30 12:47:58",
        "is_deleted": false
    },
    "stock": {
        "id": 1,
        "creator_id": 2,
        "company_id": 1,
        "name": "Stock 1",
        "is_available": true,
        "created_at": "2026-09-30 12:47:59",
        "updated_at": "2026-09-30 12:47:59",
        "is_deleted": false
    }
}

Пример ошибки · 422 ​

json
{
    "message": "Выбранная запись не существует или была удалена (and 1 more error)",
    "errors": {
        "cashbox_id": [
            "Выбранная запись не существует или была удалена"
        ],
        "stock_id": [
            "Выбранная запись не существует или была удалена"
        ]
    }
}