Введение
Данный документ является руководством программиста для интеграции с программной кассой (ПК).
Вся интеракция с ПК происходит без взаимодейтсвия с пользователем. Исключением является:
- Ожидание прикладывания карты пользователем.
Способы взаимодействия
- Android
Intent- Для взаимодействия с ПК по интентам необходимо создать Intent передав в него тип action -
by.ikassa.smartx.android.TRANSACTION. Пример:val intent = Intent("by.ikassa.smartx.android.TRANSACTION")
- Для взаимодействия с ПК по интентам необходимо создать Intent передав в него тип action -
- HTTP Сервер
- Для взаимодействия с ПК по HTTP, необходимо включить режим сервера в настройках кассы.
- Отправка происходит через
POSTзапросы используя порт37015по адресуv1. Пример:http://192.168.1.2:37015/v1
Для выбора типа операции необходимо предать Header с ключом INTENT_OPERATION_TYPE и значением из доступнх типов операций.
Регистр ключа ОБЯЗАН быть передан в верхнем регистре.
Значение передаваемое по ключу регистронезависимо и может быть передано в любом регистре.
При получении неизвестного типа операции или его отсутсвии будет выброшена ошибка.
SSDP (Simple Service Discovery Protocol)
-
Пример запроса на python
- ssdp discover --st 'ikassa-smartx'
-
Пример ответа
{
[::ffff:192.168.88.91]:41724 - - [Wed May 15 17:02:11 2024] HTTP/1.1 200 OK
ST: ikassa-smartx
USN: uuid:dcc76660-c8f5-11ed-afa1-0242ac120002
LOCATION: http://192.168.88.91:37015
SERIAL_NUMBER: AVQ11129961000
REG_NUMBER: 129961000
}
- LOCATION - ip-адрес устройства и порт.
- SERIAL_NUMBER: серийный номер СКО.
- REG_NUMBER: регистрационный номер СКО.
Способы авторизации (физическое СКО)
- Для того чтобы работать с кассой, необходима авторизация. После успешной авторизации, касса остается авторизована, до перезапуска ПК.
- При передаче специального флага, ПК помимо авторизации вернет
token. Этот токен валиден в течение24 часови дает возможность автоматической авторизации в случае если ПК была перезапущена. Для использования этой возможности необходимо передать полученныйtokenвHeaderс ключомAuth-token.
Способы передачи INTENT_OPERATION_TYPE
Типом операции во всех случаях является строка String
- Android
Intent- Добавить поле в интент
intent.putExtra("INTENT_OPERATION_TYPE", #ТипОперации#).
- Добавить поле в интент
- HTTP Сервер
- Передать в
Headerзапроса["Content-Type": "application/json"] - Передать в
Headerзапроса["INTENT_OPERATION_TYPE": #ТипОперации#].
- Передать в
Способы передачи Auth-token
Типом операции во всех случаях является строка String
- Android
Intent- Добавить поле в интент
intent.putExtra("Auth-token", #Токен#).
- Добавить поле в интент
- HTTP Сервер
- Передать в
Headerзапроса["Auth-token": #Токен#].
- Передать в
Способы передачи тела запроса
Телом операции в запросах является Json строка String.
- Android
Intent- Добавить поле в интент
intent.putExtra("INTENT_OPERATION_DATA", #JsonСтрока#).
- Добавить поле в интент
- HTTP Сервер
- Передать в теле запроса Json строку.
Параметр финиширования активити
Передать в queryParam запроса closeActivity=true
Пример запроса:
suspend fun send() {
val response: String = client.post("http://192.168.88.18:37015/v1?closeActivity=true", A(cashier = "admin", sum = "100")) {
contentType(ContentType.Application.Json)
header("INTENT_OPERATION_TYPE", "DEPOSIT")
}
println(response)
Intent "Включить режим сервера"
- добавлен тип операции
#ТипОперации# = START_SERVER
Запрос "Выгрузить логи"
- добавлен тип операции
INTENT_OPERATION_TYPE = UPLOAD_LOGS
Получение ответа
В качестве ответа ПК возвращает обратно Json строку с обязательными полями вида Подробнее:
{
"messageDetail": "Успешная оплата",
"messageTitle": "Успех",
"registerNumberSKO": "123456789",
"resultCode": 200,
"type": "SALE"
}
- Android
Intent- Проверить resultCode на ошибку:
- -1 (Activity.RESULT_OK) – ОК.
- -2 – Ошибка.
- Использовать ключ
INTENT_OPERATION_RESULT_INFOдля получения результата. Пример:val json = intent.getStringExtra("INTENT_OPERATION_RESULT_INFO").
- Проверить resultCode на ошибку:
- HTTP Сервер
- Проверить статус ответа:
- 200 - ОК
- 400 - Ошибка
- Получить результат из body ответа.
- Проверить статус ответа:
Пример взаимодействия
- Авторизация в СКО
- Для того чтобы начать работу с ПК необходимо произвести авторизацию в СКО. Если авторизация в СКО уже произведена, в повторной авторизации нет необходимости.
- Открыть смену
- Если смена закрыта.
- Сделать внесение
- Если необходимо.
- Совершить продажу
- Сделать изъятие
- Если в кассе есть наличные.
- Закрыть смену
Доступные операции
Авторизация в СКО
Параметры
Header:
INTENT_OPERATION_TYPE - AUTH
Тело запроса: Auth
- Для того чтобы работать с кассой, необходима авторизация. После успешной авторизации, касса остается авторизована, до перезапуска ПК.
- При передаче специального флага, ПК помимо авторизации вернет
token. Этот токен валиден в течение24 часови дает возможность автоматической авторизации в случае если ПК была перезапущена. Для использования этой возможности необходимо передать полученныйtokenвHeaderс ключомAuth-token.
Примеры
Успех
Запрос:
{
"pin": "12345",
"rememberPin": true,
"returnToken": true
}
Ответ AuthResponse:
{
"messageDetail": "Токен авторизован",
"messageTitle": "Успех",
"resultCode": 200,
"type": "AUTH",
"token": "fb890591-f294-4562-8654-e071c14e6f00"
}
Полученый "token" валиден в течении 24 часов
Успех
Запрос:
{
"pin": "12345",
"rememberPin": true
}
Ответ AuthResponse:
{
"messageDetail": "Токен авторизован",
"messageTitle": "Успех",
"registerNumberSKO": "123456789",
"resultCode": 200,
"type": "AUTH"
}
Успех (пин код был предварительно сохранен)
Запрос:
{
// Пустое тело
}
Ответ AuthResponse:
{
"messageDetail": "Токен авторизован",
"messageTitle": "Успех",
"registerNumberSKO": "123456789",
"resultCode": 200,
"type": "AUTH"
}
Ошибка (неверный пин)
Запрос:
{
"pin": "123",
"rememberPin": true
}
Ответ AuthResponse:
{
"messageDetail": "Неверный пароль доступа к токену",
"messageTitle": "Ошибка",
"resultCode": 405,
"type": "AUTH"
}
Открытие смены
Параметры
Header:
INTENT_OPERATION_TYPE - OPEN_SHIFT
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Shift (Опционально)
Примеры
Успех
Запрос:
{
"bankShiftRequired": false
}
Ответ BaseResponse:
{
"dateTime": "2022-07-05T16:41:48+03:00",
"messageDetail": "Смена открыта",
"messageTitle": "Успех",
"numberCheck": "777",
"registerNumberSKO": "123456789",
"resultCode": 200,
"type": "OPEN_SHIFT"
}
Ошибка (смена уже открыта)
Запрос: Тело пустое
Ответ BaseResponse:
{
"messageDetail": "Смена уже открыта",
"messageTitle": "Ошибка",
"resultCode": 406,
"type": "OPEN_SHIFT"
}
Ошибка (токен не авторизован/не подключен)
Запрос: Тело пустое
Ответ BaseResponse:
{
"messageDetail": "Токен не авторизован",
"messageTitle": "Ошибка",
"resultCode": 401,
"type": "OPEN_SHIFT"
}
Закрытие смены
Параметры
Header:
INTENT_OPERATION_TYPE - CLOSE_SHIFT
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Shift (Опционально)
Примеры
Успех
Запрос:
{
"cashier": "Кассир",
"bankShiftRequired": false,
"printCheque": true
}
Ответ ReportResponse:
{
"messageDetail": "Успешно распечатали X-отчет",
"messageTitle": "Успех",
"registerNumberSKO": "133030187",
"resultCode": 200,
"type": "Z_REPORT",
"dateOpenShift": "2024-11-01T19:39:08+03:00",
"amountDocument": "3",
"numberFirstCheck": "4139",
"numberLastCheck": "4144",
"amountCurrency": "1",
"amountOfSale": "3",
"sumSalePerShift": "112.35",
"sumSaleCardPerShift": "0",
"sumSaleOtherPerShift": "0",
"sumSaleCashPerShift": "112.35",
"amountMoneyBackPerShift": "1",
"sumMoneyBackPerShift": "34.5",
"sumMoneyBackCashPerShift": "34.5",
"sumMoneyBackCardPerShift": "0",
"sumMoneyBackOtherPerShift": "0",
"amountDepositPerShift": "2",
"sumDepositPerShift": "400",
"amountWithdrawPerShift": "1",
"sumWithdrawPerShift": "319.22",
"amountRollbackPerShift": "1",
"sumRollbackPerShift": "41.05",
"sumRollBackCashPerShift": "41.05",
"sumRollbackCardPerShift": "0",
"sumRollbackOtherPerShift": "0",
"cardHolderWithdrawSum": "117.58",
"cardHolderWithdrawCount": "1",
"saleThirdPartySum": "112.35",
"saleThirdPartyCount": "3",
"rollbackThirdPartySum": "41.05",
"rollbackThirdPartyCount": "1",
"saleSiSum": "91.5",
"saleSiCount": "5",
"saleUkzSum": "0",
"saleUkzCount": "0",
"moneyBackSiSum": "34.5",
"moneyBackSiCount": "2",
"moneyBackUkzSum": "0",
"moneyBackUkzCount": "0",
"rollbackSiSum": "34.5",
"rollbackSiCount": "2",
"rollbackUkzSum": "0",
"rollbackUkzCount": "0",
"isPrintSuccess": true
}
Ошибка (смена уже закрыта)
Запрос: Тело пустое
Ответ BaseResponse:
{
"messageDetail": "Смена уже закрыта",
"messageTitle": "Ошибка",
"resultCode": 408,
"type": "CLOSE_SHIFT"
}
Ошибка (токен не авторизован/не подключен)
Запрос: Тело пустое
Ответ BaseResponse:
{
"messageDetail": "Токен не авторизован",
"messageTitle": "Ошибка",
"resultCode": 401,
"type": "CLOSE_SHIFT"
}
Внесение
Параметры
Header:
INTENT_OPERATION_TYPE - DEPOSIT
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Sum
Примеры
Успех
Запрос:
{
"cashier": "Кассир",
"sum": "10",
"prefix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"suffix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"operationId": "123"
}
Ответ BaseResponse:
{
"dateTime": "2024-11-01T19:40:21+03:00",
"messageDetail": "Успешное внесение",
"messageTitle": "Успех",
"numberCheck": "4138",
"registerNumberSKO": "133030187",
"resultCode": 200,
"type": "DEPOSIT",
"uid": "314FEAAAE1A0CD9F07EDE12B",
"isPrintSuccess": true,
"sum": "200"
}
Ошибка (смена закрыта)
Запрос:
{
"cashier": "Кассир",
"sum": "10"
}
Ответ BaseResponse:
{
"messageDetail": "Необходимо открыть смену",
"messageTitle": "Ошибка",
"resultCode": 400,
"type": "DEPOSIT"
}
Изъятие
Параметры
Header:
INTENT_OPERATION_TYPE - WITHDRAW
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Sum
Примеры
Успех
Запрос:
{
"cashier": "Кассир",
"sum": "10",
"prefix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"suffix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"operationId": "123"
}
Ответ BaseResponse:
{
"dateTime": "2022-07-05T21:57:17+03:00",
"messageDetail": "Успешное изъятие из кассы",
"messageTitle": "Успех",
"numberCheck": "9133",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "WITHDRAW",
"uid": "32B1E3361C6573F807CF1091",
"sum": "5"
}
Ошибка (смена закрыта)
Запрос:
{
"cashier": "Кассир",
"sum": "10"
}
Ответ BaseResponse:
{
"messageDetail": "Смена уже закрыта",
"messageTitle": "Ошибка",
"resultCode": 408,
"type": "WITHDRAW"
}
Выдача
Параметры
Header:
INTENT_OPERATION_TYPE - CH_WITHDRAW
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Sum
- Для операции Выдача
CH_WITHDRAWпередача валюты недоступна. - Сумма выдачи: Значение не должно превышать 5 базовых величин.
Примеры
Успех
Запрос:
{
"cashier": "Кассир",
"sum": "10",
"prefix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"suffix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"operationId": "123"
}
Ответ BaseResponse:
{
"dateTime": "2022-07-05T21:57:17+03:00",
"messageDetail": "Успешная выдача из кассы",
"messageTitle": "Успех",
"numberCheck": "9133",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "CH_WITHDRAW",
"uid": "32B1E3361C6573F807CF1091",
"sum": "5"
}
Ошибка (смена закрыта)
Запрос:
{
"cashier": "Кассир",
"sum": "10"
}
Ответ BaseResponse:
{
"messageDetail": "Смена уже закрыта",
"messageTitle": "Ошибка",
"resultCode": 408,
"type": "CH_WITHDRAW"
}
Продажа
Параметры
Header:
INTENT_OPERATION_TYPE - SALE
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Sale
Примеры
Успех
Запрос:
{
"cashier": "Кассир",
"itemList": [
{
"nameTitle": "Товар 1",
"codeNumber": "1",
"typeCode": "0",
"price": "4",
"amount": "1"
},
{
"nameTitle": "Товар 2",
"codeNumber": "234002634987",
"typeCode": "1",
"markings": [
{
"si": "midom0im20m03223d-2-d"
},
{
"ukz": "2321987121CAC"
}
],
],
"price": "1",
"amount": "9999.99",
"isPercentDiscount": false,
"discount": "9999.98",
"isPercentIncrease": true,
"increase": "50",
"section":{
"code": 123,
"name": "бакалея"
}
},
{
"codeNumber": "20",
"price": "4",
"amount": "1",
"isPercentDiscount": true,
"discount": "1"
}
],
"cash": "15",
"cashless": "0",
"certificate": "0",
"isPercentIncrease": false,
"chequeIncrease": "10",
"isPercentDiscount": true,
"chequeDiscount": "10",
"tpTaxNumber": 193141246,
"printCheque": false,
"prefix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"suffix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"operationId": "123"
}
Ответ BaseResponse:
{
"dateTime": "2022-01-22T12:00:00+03:00",
"messageDetail": "Успешная оплата",
"messageTitle": "Успех",
"numberCheck": "1234",
"registerNumberSKO": "123456789",
"resultCode": 200,
"rrn": "",
"type": "SALE",
"uid": "461F60C220B2010407CF1091",
"total": "7.97",
"change": "7.03",
"isPrintSuccess": true,
"uuid": "j1923-123mi1-123j19"
"payments": [
{
"type": "Cash",
"sum": "15"
}
]
}
Ошибка (не передано имя кассира)
Запрос:
{
"itemList": [
{
"nameTitle": "Товар 1",
"codeNumber": "1",
"typeCode": "0",
"price": "4",
"amount": "1"
},
{
"nameTitle": "Товар 2",
"codeNumber": "10",
"typeCode": "0",
"price": "1",
"amount": "9999.99",
"isPercentDiscount": false,
"discount": "9999.98"
},
{
"codeNumber": "20",
"price": "4",
"amount": "1",
"isPercentDiscount": true,
"discount": "1"
}
],
"cash": "15",
"cashless": "0",
"certificate": "0"
}
Ответ BaseResponse:
{
"messageDetail": "Не передано имя кассира",
"messageTitle": "Ошибка",
"resultCode": 435,
"type": "SALE"
}
Ошибка (превышен лимит цены)
Запрос:
{
"cashier": "Кассир",
"itemList": [
{
"nameTitle": "Товар 9999",
"codeNumber": "999",
"typeCode": "0",
"price": "99999999",
"amount": "9999.99",
"isPercentDiscount": false,
"discount": "9999.98"
}
],
"cash": "15",
"cashless": "0",
"certificate": "0"
}
Ответ BaseResponse:
{
"messageDetail": "Максимально допустимая цена 99999999999.99",
"messageTitle": "Ошибка",
"resultCode": 414,
"type": "SALE"
}
Х-отчет
Параметры
Header:
INTENT_OPERATION_TYPE - X_REPORT
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: BaseRequest
cashierв запросе игнорируется
Примеры
Успех
Запрос:
{
"printCheque": true
}
Ответ ReportResponse:
{
"messageDetail": "Успешно распечатали X-отчет",
"messageTitle": "Успех",
"registerNumberSKO": "133030187",
"resultCode": 200,
"type": "X_REPORT",
"dateOpenShift": "2024-11-01T19:39:08+03:00",
"amountDocument": "3",
"bynIncome": "26343.1",
"rubIncome": "3",
"usdIncome": "2",
"eurIncome": "2",
"bynCashIn": "133.63",
"numberFirstCheck": "4139",
"numberLastCheck": "4144",
"amountCurrency": "1",
"amountOfSale": "3",
"sumSalePerShift": "112.35",
"sumSaleCardPerShift": "0",
"sumSaleOtherPerShift": "0",
"sumSaleCashPerShift": "112.35",
"amountMoneyBackPerShift": "1",
"sumMoneyBackPerShift": "34.5",
"sumMoneyBackCashPerShift": "34.5",
"sumMoneyBackCardPerShift": "0",
"sumMoneyBackOtherPerShift": "0",
"amountDepositPerShift": "2",
"sumDepositPerShift": "400",
"amountWithdrawPerShift": "0",
"sumWithdrawPerShift": "0",
"amountRollbackPerShift": "1",
"sumRollbackPerShift": "41.05",
"sumRollBackCashPerShift": "41.05",
"sumRollbackCardPerShift": "0",
"sumRollbackOtherPerShift": "0",
"cardHolderWithdrawSum": "117.58",
"cardHolderWithdrawCount": "1",
"saleThirdPartySum": "112.35",
"saleThirdPartyCount": "3",
"rollbackThirdPartySum": "41.05",
"rollbackThirdPartyCount": "1",
"saleSiSum": "91.5",
"saleSiCount": "5",
"saleUkzSum": "0",
"saleUkzCount": "0",
"moneyBackSiSum": "34.5",
"moneyBackSiCount": "2",
"moneyBackUkzSum": "0",
"moneyBackUkzCount": "0",
"rollbackSiSum": "34.5",
"rollbackSiCount": "2",
"rollbackUkzSum": "0",
"rollbackUkzCount": "0",
"isPrintSuccess": true
}
Ошибка (смена закрыта)
Запрос:
{
// Пустое тело
}
Ответ BaseResponse:
{
"messageDetail": "Необходимо открыть смену",
"messageTitle": "Ошибка",
"resultCode": 400,
"type": "X_REPORT"
}
Аннулирование по номеру чека
Параметры
Header:
INTENT_OPERATION_TYPE - ROLLBACK_NUMBER_CHECK
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: RollBack
Примеры
Успех
Запрос:
{
"cashier": "Кассир",
"chequeNumber": 9145,
"printCheque": false
}
Ответ RollbackResponse:
{
"dateTime": "2024-11-01T20:19:29+03:00",
"messageDetail": "Успешное аннулирование чека №4144",
"messageTitle": "Успех",
"numberCheck": "4145",
"registerNumberSKO": "133030187",
"resultCode": 200,
"uid": "A4FF71A9A7DB79C607EDE12B",
"type": "ROLLBACK_NUMBER_CHECK",
"numberCheckRollback": "4144",
"uidDocumentRollback": "2C7794F09E5DBD7E07EDE12B"
}
Ошибка (Переданный номер чека не является последней продажнй в смене)
Запрос:
{
"messageDetail": "Переданный номер чека не является последней продажнй в смене",
"messageTitle": "Ошибка",
"resultCode": 420,
"type": "ROLLBACK_NUMBER_CHECK"
}
Ответ BaseResponse:
{
"messageDetail": "Нет чека для аннулирования",
"messageTitle": "Ошибка",
"resultCode": 411,
"type": "ROLLBACK_NUMBER_CHECK"
}
Возврат
Параметры
Header:
INTENT_OPERATION_TYPE - MONEY_BACK
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: MoneyBack
Примеры
Успех
Запрос:
{
"cashier": "Кассир",
"itemList": [
{
"nameTitle": "Товар 2",
"codeNumber": "234002634987",
"typeCode": "1",
"markings": [
{
"si": "midom0im20m03223d-2-d"
},
{
"ukz": "2321987121CAC"
}
]
},
"price": "1",
"amount": "9999.99",
"isPercentDiscount": false,
"discount": "9999.98",
"isPercentIncrease": true,
"increase": "50",
"section": {
"code": 123,
"name": "бакалея"
}
],
"cashless": "0",
"cash": "1",
"other": "0",
"prefix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"suffix": [{"Text": {"text": "тексттекст"}}, {"QrCode": {"qrCode" : "BASE64"}}],
"operationId": "123"
}
Ответ BaseResponse:
{
"dateTime": "2022-07-06T10:00:56+03:00",
"messageDetail": "Успешный возврат",
"messageTitle": "Успех",
"numberCheck": "9148",
"registerNumberSKO": "131010705",
"resultCode": 200,
"rrn": "",
"type": "MONEY_BACK",
"uid": "E0CC03A64326BAE607CF1091",
"total": "1",
"isPrintSuccess": false,
"payments": [
{
"type": "Cash",
"sum": "1"
}
]
}
Ошибка (в кассе недостаточно средств)
Запрос:
{
"cashier": "Кассир",
"codeNumber": "0",
"typeCode": 0,
"price": "1000",
"amount": "1.00",
"discount": "0",
"cashless": "0",
"cash": "1000",
"other": "0"
}
Ответ BaseResponse:
{
"messageDetail": "Невозможно провести операцию, в кассе недостаточно средств",
"messageTitle": "Ошибка",
"resultCode": 425,
"type": "MONEY_BACK"
}
Получение прочей информации
Параметры
Header:
INTENT_OPERATION_TYPE - OTHER_INFO
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Отсутсвует
Примеры
Успех
Запрос:
{
// Пустое тело
}
Ответ OtherInfo:
{
"cash_in_shift": "208",
"messageDetail": "Дополнительная информация получена",
"messageTitle": "Успех",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "OTHER_INFO",
"last_number_document": 9148,
"version_code_apk": 7,
"coreVersion": "2.0.0 (Smart X)",
"shift_status": true,
"list_payment_method": [
"EXTERNAL",
"PAY_IKASSA"
],
"date_open_shift": "2022-07-05T22:05:56+03:00",
"date_last_close_shift": "2022-07-05T16:41:31+03:00",
"number_shift": 769,
"count_un_send_documents": 0
}
Ошибка (смена закрыта)
Запрос:
{
// Пустое тело
}
Ответ BaseResponse:
{
"messageDetail": "Необходимо открыть смену",
"messageTitle": "Ошибка",
"resultCode": 400,
"type": "OTHER_INFO"
}
Печать контрольной ленты
Параметры
Header:
INTENT_OPERATION_TYPE - CONTROL_TAPE
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Отсутсвует
Примеры
Успех
Запрос:
{
// Пустое тело
}
Ответ BaseResponse:
{
"messageDetail": "Контрольная лента распечаталась",
"messageTitle": "Успех",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "CONTROL_TAPE"
}
Ошибка (принтер не подключен)
Запрос:
{
// Пустое тело
}
Ответ BaseResponse:
{
"messageDetail": "Unable to print reason: Принтер не подключен",
"messageTitle": "Ошибка",
"resultCode": 399,
"type": "CONTROL_TAPE"
}
Запрос журнала кассовых документов
Параметры
Header:
INTENT_OPERATION_TYPE - GET_SHIFT_DOCUMENTS
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Отсутсвует
Примеры
Успех
Запрос:
{
// Пустое тело
}
Ответ BaseResponse:
{
"messageTitle": "Успех",
"resultCode": 200,
"type": "GET_SHIFT_DOCUMENTS",
"registerNumberSKO": "129961033",
"documents": [
{
"dateTime": "2023-12-18T15:07:55+03:00",
"messageDetail": "Успешный возврат",
"messageTitle": "Успех",
"numberCheck": "1992",
"registerNumberSKO": "129961033",
"resultCode": 200,
"rrn": "335254462818",
"type": "MONEY_BACK",
"uid": "42344ADD7978D96907BF0C49",
"total": "5",
"isPrintSuccess": true,
"metaInfo": {
"bankName": "Белинвестбанк",
"terminalId": "11000086"
},
"payments": [
{
"type": "Cash",
"sum": "3"
},
{
"type": "Cashless",
"sum": "2",
"ref": "335254462818"
}
]
},
{
"dateTime": "2023-12-18T15:06:57+03:00",
"messageDetail": "Успешная оплата",
"messageTitle": "Успех",
"numberCheck": "1991",
"registerNumberSKO": "129961033",
"resultCode": 200,
"rrn": "NO_RRN,335254352816",
"type": "SALE",
"uid": "28A98E6B8D96819807BF0C49",
"total": "10",
"change": "2",
"isPrintSuccess": true,
"oplati_payment_number": "48552",
"payments": [
{
"type": "Cash",
"sum": "4"
},
{
"type": "QR",
"sum": "2",
"ref": "48552"
},
{
"type": "Other",
"sum": "2"
},
{
"type": "Cashless",
"sum": "2",
"ref": "NO_RRN"
},
{
"type": "Cashless",
"sum": "2",
"ref": "335254352816"
}
]
},
{
"dateTime": "2023-12-18T15:04:21+03:00",
"messageDetail": "Успешное изъятие из кассы",
"messageTitle": "Успех",
"numberCheck": "1990",
"registerNumberSKO": "129961033",
"resultCode": 200,
"type": "WITHDRAW",
"uid": "85FA21A77816D22207BF0C49",
"isPrintSuccess": false,
"sum": "5"
},
{
"dateTime": "2023-12-18T15:03:28+03:00",
"messageDetail": "Успешное внесение",
"messageTitle": "Успех",
"numberCheck": "1989",
"registerNumberSKO": "129961033",
"resultCode": 200,
"type": "DEPOSIT",
"uid": "2FB8783C1C186A6A07BF0C49",
"isPrintSuccess": true,
"sum": "10"
}
]
}
Журнал банковских операций
Параметры
Header:
INTENT_OPERATION_TYPE - GET_BANK_DOCUMENTS
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: BankOperation
Примеры
Успех
Запрос:
{
"bankOperation": "JournalOfBankDocuments",
"merchantId": 1
}
Ответ BaseResponse:
{
"messageTitle": "Успех",
"resultCode": 200,
"type": "GET_BANK_DOCUMENTS"
}
Печать последнего документа продажи
Параметры
Header:
INTENT_OPERATION_TYPE - PRINT_LAST_CHECK
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: PrintAny
Примеры
Успех
Запрос:
{
// Пустое тело
}
Ответ BaseResponse:
{
"messageDetail": "Чек распечатался",
"messageTitle": "Успех",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "PRINT_LAST_CHECK"
}
Ошибка (принтер не подключен)
Запрос:
{
// Пустое тело
}
Ответ BaseResponse:
{
"messageDetail": "Unable to print reason: Принтер не подключен",
"messageTitle": "Ошибка",
"resultCode": 399,
"type": "PRINT_LAST_CHECK"
}
Печать по номеру чека
Параметры
Header:
INTENT_OPERATION_TYPE - PRINT
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: ChequeNumber
Примеры
Успех
Запрос:
{
"chequeNumber": 9390
}
Ответ BaseResponse:
{
"messageDetail": "Чек распечатался",
"messageTitle": "Успех",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "PRINT"
}
Ошибка (смена закрыта)
Запрос:
{
"chequeNumber": 9390
}
Ответ BaseResponse:
{
"messageDetail": "Принтер не подключен",
"messageTitle": "Ошибка",
"resultCode": 450,
"type": "PRINT"
}
Печать последнего Z-отчета
Параметры
Header:
INTENT_OPERATION_TYPE - PRINT_Z_REPORT
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: Отсутсвует
Примеры
Успех
Запрос:
{
// Пустое тело
}
Ответ BaseResponse:
{
"messageDetail": "Чек распечатался",
"messageTitle": "Успех",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "PRINT_LAST_CHECK"
}
Ошибка (предыдущая смена не найдена)
Запрос:
{
// Пустое тело
}
Ответ BaseResponse:
{
"messageDetail": "Чек не найден",
"messageTitle": "Ошибка",
"resultCode": 427,
"type": "PRINT_Z_REPORT"
}
Отправка чека на E-mail
Параметры
Header:
INTENT_OPERATION_TYPE - SEND_EMAIL
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: SendEmail
Примеры
Успех
Запрос:
{
"chequeNumber": 9390,
"emails": [
"[email protected]",
"[email protected]"
]
}
Ответ BaseResponse:
{
"messageDetail": "Чек был отправлен на почту",
"messageTitle": "Успех",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "SEND_EMAIL"
}
Ошибка (смена закрыта)
Запрос:
{
"chequeNumber": 9390,
"emails": [
"[email protected]",
"[email protected]"
]
}
Ответ BaseResponse:
{
"messageDetail": "Необходимо открыть смену",
"messageTitle": "Ошибка",
"resultCode": 400,
"type": "SEND_EMAIL"
}
Нефискальная печать
Параметры
Header:
INTENT_OPERATION_TYPE - PRINT_BASE64
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: PrintBase64
Примечение:
Печать изображений на Bluetooth принтерах отсутвует.
Примеры
Успех
Запрос:
{
"is_image": false,
"data_base64": "0KLQtdGB0YLQvtCy0LDRjyDQvdC10YTQuNGB0LrQsNC70YzQvdCw0Y8g0L/QtdGH0LDRgtGMLiBpS2Fzc2EgaUthc3NhIGlLYXNzYSBpS2Fzc2EgaUthc3NhIGlLYXNzYSBpS2Fzc2E="
}
Ответ BaseResponse:
{
"messageDetail": "Чек распечатался",
"messageTitle": "Успех",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "PRINT_BASE64"
}
Ошибка (принтер не подключен)
Запрос:
{
"is_image": false,
"data_base64": "0KLQtdGB0YLQvtCy0LDRjyDQvdC10YTQuNGB0LrQsNC70YzQvdCw0Y8g0L/QtdGH0LDRgtGMLiBpS2Fzc2EgaUthc3NhIGlLYXNzYSBpS2Fzc2EgaUthc3NhIGlLYXNzYSBpS2Fzc2E="
}
Ответ BaseResponse:
{
"messageDetail": "Принтер не подключен",
"messageTitle": "Ошибка",
"resultCode": 450,
"type": "PRINT_BASE64"
}
Получение значения веса
Параметры
Header:
INTENT_OPERATION_TYPE - GET_WEIGHT
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: отсутствует
Примеры
Успех
Запрос: Тело пустое
Ответ Ответ с результатами веса:
{
"weight": "0.374"
}
Ошибка
{
"messageDetail": "Не удалось получить вес с весов",
"messageTitle": "Ошибка",
"resultCode": 399,
"type": "GET_WEIGHT"
}
Получение значения скана
Данный метод предназначен для использования встроенной камеры устройства для сканирования кодов маркировки и GTIN товара
Параметры
Header:
INTENT_OPERATION_TYPE - CAMERA_SCAN
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: отсутствует
Примеры
Успех
Запрос: Тело пустое
Ответ Ответ с результатами скана маркировки:
{
"messageTitle": "Успех",
"resultCode": 200,
"type": "CAMERA_SCAN",
"qrScan": "0104600605034507215ZuZYE 93+C6Y"
}
Ответ Ответ с результатами скана ШК:
{
"messageTitle": "Успех",
"resultCode": 200,
"type": "CAMERA_SCAN",
"scan": "4600605034507"
}
Блокировка интерфейса в Режиме сервера
- Данный метод предназначен для отключения возможности пользователя взаимодействовать с интерфейсом кассы без участия API
- Если пользователь ранее был авторизован в кассе, то его разлогинивает из кассы на экран с выбором пользователя без возможности войти
- Режим сбрасывается:
- После нажатия на кнопку “Выйти“
- После перезагрузки устройства
- При установке значения
defaultповторным запросом
Параметры
Header:
INTENT_OPERATION_TYPE - SET_UI_MODE
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: UIMODE
Примеры
Примеры
Успех
Запрос:
{
"uiMode": "server"
}
Ответ BaseResponse:
{
"messageTitle": "Успех",
"resultCode": 200,
"type": "SET_UI_MODE"
}
Добавление чеков
Параметры
Header:
INTENT_OPERATION_TYPE - ADD_CHEQUES
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: [ChequeRequest] (массив)
Примеры
Успех
Запрос:
[
{
"info": {
"uuid": "9aa03f0c-d77c-40ae-8f4d-236c432054a8",
"name": "Чек 1",
"chequeType": "Postponed",
"note": "Cheque2",
"number": "111IKASSA"
},
"currency": "BYN",
"chequeDiscount": {
"isPercent": true,
"value": "5"
},
"chequeIncrease": {
"isPercent": true,
"value": "5"
},
"tpTaxNumber": "123456789",
"items": [
{
"price": "100",
"name": "Tovar",
"quantity": "1",
"code": {
"type": "1",
"value": "112321312310"
},
"discount": {
"isPercent": true,
"value": "10"
},
"increase": {
"isPercent": true,
"value": "5"
},
"section": {
"code": 111,
"name": "имя секции"
},
"markings": [
{
"si": "midom0im20m03223d-2-d"
},
{
"ukz": "2321987121CAC"
}
],
"taxRate": "tax10"
}
]
}
]
Ответ BaseResponse:
{
"messageDetail": "Чеки успешно добавлены",
"messageTitle": "Успех",
"registerNumberSKO": "131010705",
"resultCode": 200,
"type": "ADD_CHEQUES"
}
Ошибка (неуникальный UUID)
Запрос:
[
{
"info": {
"uuid": "bb074ac8-3661-4c56-818e-26686d5a7ec3",
"name": "Чек 2",
"chequeType": "Order",
"table": 2,
"place": 3
},
"currency": "BYN",
"chequeDiscount": {
"isPercent": true,
"value": "5"
},
"items": [
{
"name": "Чай",
"price": "5"
}
]
}
]
Ответ BaseResponse:
{
"messageDetail": "UUID чека \"bb074ac8-3661-4c56-818e-26686d5a7ec3\" не уникален",
"messageTitle": "Ошибка",
"resultCode": 491,
"type": "ADD_CHEQUES"
}
Оплата чеков
Параметры
Header:
INTENT_OPERATION_TYPE - CHEQUE_PAYMENT
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: PaymentChequeRequest (массив)
* Частичная оплата чека производится по одному типу оплаты за раз
* Частичная оплата чека методом Наличными `cash` производится в последнюю очередь
* Интерфейс кассы блокируется при наличии незавершенной оплаты чека
* Если сумма по платежам больше (за счет суммы `cash` и формирования сдачи) или равна итогу к оплате предчека, происходит автоматическая фискализация
* При наличии незавершенного предчека операции с удалением данного предчека, с оплатой других предчеков, оплатой, возвратом и пр. не доступны
Примеры
Успех
Запрос:
{
"uuid": "9aa03f0c-d77c-40ae-8f4d-236c432054a8",
"cash": "0",
"cashless": "20",
"certificate": "0",
"oplati": "0",
"payment_method": "INTERNAL",
"cashier": "Админ"
}
Ответ BaseResponse:
{
"messageDetail": "Успешная оплата",
"messageTitle": "Успех",
"registerNumberSKO": "129961053",
"resultCode": 200,
"type": "CHEQUE_PAYMENT",
"metaInfo": {
"bankName": "Белинвестбанк",
"terminalId": "11000086"
},
"uuid": "9aa03f0c-d77c-40ae-8f4d-236c432054a8",
"payments": [
{
"type": "Cashless",
"sum": "20",
"ref": "402340452973"
}
],
"remain": "37.47"
}
Полная оплата чека (сопровождается фискализацией и печатью чека)
Ответ BaseResponse:
{
"dateTime": "2024-01-23T11:20:05+03:00",
"messageDetail": "Успешная оплата",
"messageTitle": "Успех",
"numberCheck": "409",
"registerNumberSKO": "129961053",
"resultCode": 200,
"rrn": "402340452973",
"type": "SALE",
"uid": "126AF405E6FD5ED307BF0C5D",
"total": "57.47",
"change": "0",
"isPrintSuccess": true,
"metaInfo": {
"bankName": "Белинвестбанк",
"terminalId": "11000086"
},
"uuid": "9aa03f0c-d77c-40ae-8f4d-236c432054a8",
"transactionId": "49784",
"payments": [
{
"type": "Cashless",
"sum": "20",
"ref": "402340452973"
},
{
"type": "Other",
"sum": "10",
"ref": "e0b92d58-4a07-4563-95a7-f1d44ac78a4f"
},
{
"type": "Cash",
"sum": "5"
},
{
"type": "QR",
"sum": "22.47",
"ref": "49784"
}
]
}
Аннулирование оплаты
Параметры
Header:
INTENT_OPERATION_TYPE - CHEQUE_ROLLBACK
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: RollbackChequeRequest
* При наличии незавершенного предчека операции с удалением данного предчека, с оплатой других предчеков, оплатой, возвратом и пр. не доступны
Примеры
Успех
Запрос:
{
"uuid": "9aa03f0c-d77c-40ae-8f4d-236c432054a8",
"type": "Cashless",
"sum": "15",
"ref": "402341402975",
"payment_method": "INTERNAL"
}
Ответ BaseResponse:
{
"messageDetail": "Успешное аннулирование",
"messageTitle": "Успех",
"registerNumberSKO": "129961053",
"resultCode": 200,
"type": "CHEQUE_ROLLBACK"
}
Получение чеков
Параметры
Header:
INTENT_OPERATION_TYPE - GET_CHEQUES
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: UUIDs
Запрос позволяет получить:
- весь список чеков если передавать пустое тело или пустой массив
uuids. - только выбранные
uuidsесли передавать список.
Примеры
Успех
Запрос: Тело пустое
Запрос:
{
"uuids": [
]
}
Ответ ChequesResponse:
{
"messageDetail": "Чеки успешно получены",
"messageTitle": "Успех",
"resultCode": 200,
"type": "GET_CHEQUES",
"cheques": [
{
"info": {
"uuid": "9aa03f0c-d77c-40ae-8f4d-236c432054a8",
"name": "Чек 1",
"chequeType": "Postponed"
},
"currency": "BYN",
"chequeDiscount": {
"isPercent": true,
"value": "5",
"sum": "3.03"
},
"subTotal": "60.5",
"total": "57.47",
"items": [
{
"price": "5",
"quantity": "1",
"sum": "5",
"total": "5"
},
{
"price": "5",
"quantity": "3",
"sum": "15",
"total": "15"
},
{
"price": "5",
"quantity": "3",
"discount": {
"isPercent": true,
"value": "10",
"sum": "1.5"
},
"sum": "15",
"total": "13.5"
},
{
"price": "5",
"quantity": "3",
"discount": {
"isPercent": true,
"value": "10",
"sum": "1.5"
},
"tax": {
"rate": "10",
"value": "1.23"
},
"sum": "15",
"total": "13.5"
},
{
"code": {
"type": 0,
"value": 10
},
"price": "5",
"quantity": "3",
"discount": {
"isPercent": true,
"value": "10",
"sum": "1.5"
},
"tax": {
"rate": "10",
"value": "1.23"
},
"sum": "15",
"total": "13.5"
}
],
"payments": [
]
},
{
"info": {
"uuid": "bb074ac8-3661-4c56-818e-26686d5a7ec3",
"name": "Чек 2",
"chequeType": "Order",
"table": 2,
"place": 3
},
"currency": "BYN",
"chequeDiscount": {
"isPercent": true,
"value": "5",
"sum": "0.25"
},
"subTotal": "5",
"total": "4.75",
"items": [
{
"name": "Чай",
"price": "5",
"quantity": "1",
"sum": "5",
"total": "5"
}
],
"payments": [
]
}
]
}
Успех
Запрос:
{
"uuids": [
"bb074ac8-3661-4c56-818e-26686d5a7ec3"
]
}
Ответ ChequesResponse:
{
"messageDetail": "Чеки успешно получены",
"messageTitle": "Успех",
"resultCode": 200,
"type": "GET_CHEQUES",
"cheques": [
{
"info": {
"uuid": "bb074ac8-3661-4c56-818e-26686d5a7ec3",
"name": "Чек 2",
"chequeType": "Order",
"table": 2,
"place": 3
},
"currency": "BYN",
"chequeDiscount": {
"isPercent": true,
"value": "5",
"sum": "0.25"
},
"subTotal": "5",
"total": "4.75",
"items": [
{
"name": "Чай",
"price": "5",
"quantity": "1",
"sum": "5",
"total": "5"
}
],
"payments": [
]
}
]
}
Ошибка (отсутствует UUID)
Запрос:
{
"uuids": [
"12345-6789-4c56-818e-26686d5a7ec3"
]
}
Ответ BaseResponse:
{
"messageDetail": "Один или несколько чеков не найдены",
"messageTitle": "Ошибка",
"resultCode": 488,
"type": "GET_CHEQUES"
}
Удаление чеков
Параметры
Header:
INTENT_OPERATION_TYPE - REMOVE_CHEQUES
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: UUIDs
Примеры
Успех
Запрос:
{
"uuids": [
"bb074ac8-3661-4c56-818e-26686d",
"bb074ac8-3661-4c56-818e-26686d5a7ec3"
]
}
Ответ ChequesResponse:
{
"messageDetail": "Чеки успешно удалены",
"messageTitle": "Успех",
"resultCode": 200,
"type": "REMOVE_CHEQUES",
"cheques": [
{
"info": {
"uuid": "bb074ac8-3661-4c56-818e-26686d",
"name": "Счет №9",
"chequeType": "Order"
},
"currency": "BYN",
"items": [
{
"name": "Батареи литиевые кнопочные GP CR2016-7C5 55, 5 шт",
"code": {
"type": 0,
"value": 4891199001123
},
"price": "0.59",
"quantity": "1",
"sum": "0.59",
"total": "0.59"
},
{
"name": "Aquafresh Standard Зубная щетка",
"code": {
"type": 0,
"value": 5999518577553
},
"price": "1.36",
"quantity": "1",
"discount": {
"value": "0.2",
"sum": "0.2"
},
"sum": "1.36",
"total": "1.16"
},
{
"code": {
"type": 0,
"value": 2
},
"price": "10",
"quantity": "1",
"sum": "10",
"total": "10"
}
],
"chequeDiscount": {
"isPercent": true,
"value": "2",
"sum": "0.24"
},
"subTotal": "11.75",
"total": "11.51",
"payments": [
]
},
{
"info": {
"uuid": "bb074ac8-3661-4c56-818e-26686d5a7ec3",
"name": "Чек 2",
"chequeType": "Order",
"table": 2,
"place": 3
},
"currency": "BYN",
"items": [
{
"name": "Чай",
"price": "5",
"quantity": "1",
"sum": "5",
"total": "5"
}
],
"chequeDiscount": {
"isPercent": true,
"value": "5",
"sum": "0.25"
},
"subTotal": "5",
"total": "4.75",
"payments": [
]
}
]
}
Успех
Запрос:
{
"uuids": [
"b5770c9b-c32a-4ea7-9062-6d2553611062"
]
}
Ответ ChequesResponse:
{
"messageDetail": "Чеки успешно удалены",
"messageTitle": "Успех",
"resultCode": 200,
"type": "REMOVE_CHEQUES",
"cheques": [
{
"info": {
"uuid": "b5770c9b-c32a-4ea7-9062-6d2553611062",
"name": "Счет №9",
"chequeType": "Order"
},
"currency": "BYN",
"items": [
{
"code": {
"type": 0,
"value": 2
},
"price": "8",
"quantity": "1",
"sum": "8",
"total": "8"
}
],
"subTotal": "8",
"total": "8",
"payments": [
]
}
]
}
Ошибка (пустой список)
Запрос:
{
"uuids": [
]
}
Ответ BaseResponse:
{
"messageDetail": "Один или несколько чеков не найдены",
"messageTitle": "Ошибка",
"resultCode": 488,
"type": "REMOVE_CHEQUES"
}
Ошибка (чек не найден)
Запрос:
{
"uuids": [
"b5770c9b-c32a-4ea7-9062-6d2553611062"
]
}
Ответ BaseResponse:
{
"messageDetail": "Один или несколько чеков не найдены",
"messageTitle": "Ошибка",
"resultCode": 488,
"type": "REMOVE_CHEQUES"
}
Получение фискализированного чека по UUID
Параметры
Header:
INTENT_OPERATION_TYPE - GET_DOCS_BY_UUID
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: UUID
Примеры
Успех
Запрос:
{
"uuid": "323.156.25123459"
}
Ответ BaseResponse:
{
"messageTitle": "Успех",
"resultCode": 200,
"type": "GET_DOCS_BY_UUID",
"registerNumberSKO": "111600670",
"documents": [
{
"dateTime": "2025-07-04T09:40:26+03:00",
"messageDetail": "Успешная оплата",
"messageTitle": "Успех",
"numberCheck": "3991",
"registerNumberSKO": "111600670",
"resultCode": 200,
"rrn": "040700507405,040700507343",
"type": "SALE",
"uid": "ADAEB851CE0161F306A6E41E",
"total": "68",
"change": "0",
"isPrintSuccess": true,
"metaInfo": {
"bankName": "",
"terminalId": "11000082",
"merchantId": ""
},
"uuid": "323.156.25123459",
"payments": [
{
"type": "Cash",
"sum": "65.63"
},
{
"type": "Other",
"sum": "2.33"
},
{
"type": "Cashless",
"sum": "0.03",
"ref": "040700507405"
},
{
"type": "Cashless",
"sum": "0.01",
"ref": "040700507343"
}
]
}
]
}
Произвольная оплата
- запрос предназначен для оплаты или/и редактирования предчеков посредством интерфейса приложения.
Параметры
Header:
INTENT_OPERATION_TYPE - CHEQUE_ACTION
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: [ChequeRequest]
Примеры
Успех
Запрос:
{
"type": "cheque_edit_payment",
"cashier": "кассир",
"cheque": {
"isNotEditable": true,
"info": {
"uuid": "9aa03f0c-d77c-40ae-8f4d-236c43212b",
"name": "доставка_123",
"chequeType": "Postponed"
},
"currency": "BYN",
"items": [
{
"price": "10",
"name": "Мороженое сливочное ваниль, 60 г, страна-производитель БЕЛАРУСЬ",
"quantity": "1",
"code": {
"type": "1",
"value": "4810206005695"
},
"markingKindToScan": "unknown",
"taxRate": "20"
},
{
"price": "10",
"name": "Мороженое сливочное ваниль, 60 г, страна-производитель БЕЛАРУСЬ",
"quantity": "1",
"code": {
"type": "1",
"value": "4810206005695"
},
"markings": [
{
"si": "0104810206005695212pNszst8\u001d93yn0q"
}
],
"taxRate": "20"
}
]
}
}
Успешный ответ для запросов типа cheque_edit_payment и payment
Ответ BaseResponse:
{
"dateTime": "2025-09-24T12:54:11+03:00",
"messageDetail": "Успешная оплата",
"messageTitle": "Успех",
"numberCheck": "1715",
"registerNumberSKO": "159990038",
"resultCode": 200,
"rrn": "",
"type": "SALE",
"uid": "D33E71DB435B7AB909894116",
"total": "2.76",
"change": "0",
"isPrintSuccess": false,
"uuid": "9aa03f0c-d77c-40ae-8f4d-236c4320a",
"payments": [
{
"type": "Cash",
"sum": "2.76"
}
]
}
Успешный ответ для запросов типа cheque_edit при нажатии кнопки "Завершить" (предчек сохраняется в кассе)
Ответ BaseResponse:
{
"messageDetail": "Чек успешно отредактирован",
"messageTitle": "Успех",
"registerNumberSKO": "133030187",
"resultCode": 200,
"type": "ADD_CHEQUES"
}
Ошибка (при нажатии кнопки "Назад", предчек удаляется)
Ответ BaseResponse:
{
"messageDetail": "Отменено пользователем",
"messageTitle": "Ошибка",
"resultCode": 440,
"type": "CHEQUE_ACTION"
}
Получение статуса операции
Параметры
Header:
INTENT_OPERATION_TYPE - OPERATION_ID
Auth-token - Токен авторизации (опционально). Подробнее
Тело запроса: OperationIdRequest
Примеры
Успех
Запрос:
{
"operationId": "123"
}
Ответ OperationResponse:
{
"operationId": "123",
"uid": "32B1E3361C6573F807CF1091",
"uuid": "bb074ac8-3661-4c56-818e-26686d5a7ec3",
"header": {
"cashier": "Администратор",
"chequeNumber": 3192,
"date": "2022-07-05T21:57:17+03:00",
"currency": "BYN"
},
"total": "2.15",
"payments": ["Cash"],
"operationType": "Sale",
"isSucceed": true
}
Повторная попытка фискализации
Параметры
Header:
INTENT_OPERATION_TYPE - FISCAL_UNCOMPLETED
Auth-token - Токен авторизации (опционально). Подробнее
Запрос позволяет:
- совершить повторную попытку фискализации последнего чека при ошибке записи операции в СКО
- рекомендуется применять для операция содержащих безналичные способы оплаты
Примеры
Успех
Запрос: Тело пустое
Запрос:
null
Ответ ChequesResponse:
{
"messageDetail": "Неверный GTIN '232002234987'",
"messageTitle": "Ошибка",
"resultCode": 399,
"type": "FISCAL_UNCOMPLETED"
}
Типы данных
Тип Auth
{
"pin": String?,
"rememberPin": Boolean = false,
"returnToken": Boolean = false
}
pin- Необязательное поле- Пин код для авторизации в СКО. Если ничего не передано будет использован сохраненный пин код если он был сохранен.
rememberPin- Необязательное поле. По умолчаниюfalse- Флаг отвечающий за сохранение пин кода. Если пин код уже был сохранен, пин код не удалится.
returnToken- Необязательное поле. По умолчаниюfalse- Флаг определяющий будет ли передан токен для последующей авторизации по токену
- Возвращаемый токен валиден в течение 24 часов
Тип Sale
{
"cashier": String,
"itemList": [SaleItem],
"currency": Currency = "BYN",
"cash": BigDecimal,
"cashless": BigDecimal,
"certificate": BigDecimal,
"oplati": BigDecimal,
"isPercentDiscount": Boolean = false,
"chequeDiscount": BigDecimal?,
"isPercentIncrease": Boolean = false,
"chequeIncrease": BigDecimal?,
"payment_method": CashlessType?,
"bank_package_name": String?,
"merchantId": Int?,
"tpTaxNumber": Int?,
"printCheque": Boolean = true?,
"prefix": [Printable]?,
"suffix": [Printable]?,
"operationId": String?,
"printQrCheque": Boolean = false?
}
cashier- Имя кассира.
- Хотя бы 1 символ. Все что больше 20 символов, отбрасывается.
- Имя кассира.
itemList- Список товаров типа SaleItem
currency- Не обязательное поле. Стандартное значение BYN.- Валюта для проведения операции. Типы валют.
cash- Сумма наличными
cashless- Сумма безналичными
certificate- Сумма другими способами
oplati- Сумма способом QR
isPercentDiscount- Необязательное поле. Стандартное значение = false.- Показатель типа скидки.
- Если
true- добавляет скидку в процентах. - Если
false- добавляет ценовую скидку.
- Если
- Показатель типа скидки.
chequeDiscount- Необязательное поле.- Процентная
- Максимальное значение 100. 2 Знака после запятой.
- Ценовая
- Максимальное значение 99999999999.99.
- Процентная
isPercentIncrease- Необязательное поле. Стандартное значение = false.- Показатель типа надбавки.
- Если
true- добавляет надбавку в процентах. - Если
false- добавляет ценовую надбавку.
- Если
- Показатель типа надбавки.
chequeIncrease- Необязательное поле.- Процентная
- Максимальное значение 100. 2 Знака после запятой.
- Ценовая
- Максимальное значение 99999999999.99.
- Процентная
payment_methodCashlessType- Необязательное поле если
cashless= 0. - Необязательное поле если в настройках включен только один способ оплаты.
- Необязательное поле если
bank_package_name- Передается только в случае если
payment_method=PAY_IKASSA - Необязательный в случае если есть только один способ оплаты через iKassa Pay
- Передается только в случае если
merchantId- Необязательное поле.- Номер торговца
tpTaxNumber- Необязательное поле. УНП третьего лица, в пользу которого оформляется док-т продажи. Применяется при приеме платежей в адрес третьих лиц платежными агрегаторами.- 9 десятичных цифр
printCheque- Необязательное поле. Стандартное значение = true.- Флаг определяющий будет ли печататься чек.
prefix- Необязательное поле. Printable- адрес торгового объекта (магазина), объекта выполнения работ, объекта оказания услуг
suffix- Необязательное поле. Printable- Иная необязательная информация, необходимая субъекту хозяйствования информация, не являющаяся обязательной
operationId- Идентификатор операции.- уникальный в рамках смены.
printQrCheque- Необязательное поле. Стандартное значение = false.- печать короткого чека в виде QR со ссылкой на электронный документ.
Тип SaleItem
{
"nameTitle": String?,
"typeCode": Long,
"section": Section?,
"markings": [Markings]?,
"codeNumber": String,
"price": BigDecimal,
"amount": BigDecimal = "1",
"isPercentDiscount": Boolean = false,
"discount": BigDecimal?,
"isPercentIncrease": Boolean = false,
"increase": BigDecimal?,
"taxRate": TaxRate?
}
nameTitle- Необязательное поле.- Имя товара.
typeCode- Необязательное поле. Стандартное значение = 0.- Представляет тип кода. Подробнее.
codeNumber- Обязательное поле.- Непосредственно сам код товарной позиции
section- Необязательное поле. Стандартное значение = 0.- Секция товара.
- Представляет Секции
markings- Необязательное поле.- Информация о коде и типе кода тов. позиции c маркировкой.
- Представляет Маркировка
price- BigDecimal- Цена товарной позиции.
- Больше нуля.
- Максимальное значение 99999999999.99.
amount- BigDecimal. Необязательное поле, стандартное значение -1- Количество.
- Больше нуля.
- Максимальное значение 9999.999.
- Для товаров с Маркировкой кол-во ед. продаваемого товара должно быть равно 1 шт.
isPercentDiscount- Необязательное поле. Стандартное значение = false.- Показатель типа скидки.
- Если
true- добавляет скидку в процентах. - Если
false- добавляет ценовую скидку.
- Если
- Показатель типа скидки.
discount- BigDecimal. Скидка. Необязательное поле.- Процентная
- Максимальное значение 100. 2 Знака после запятой.
- Ценовая
- Максимальное значение 99999999999.99.
- Процентная
isPercentIncrease- Необязательное поле. Стандартное значение = false.- Показатель типа надбавки.
- Если
true- добавляет надбавку в процентах. - Если
false- добавляет ценовую надбавку.
- Если
increase- BigDecimal. Надбавка. Необязательное поле.- Процентная
- Максимальное значение 100. 2 Знака после запятой.
- Ценовая
- Максимальное значение 99999999999.99.
- Процентная
taxRate- TaxRate. Необязательное поле.- ставка НДС для товарной позиции
Тип Sum
{
"cashier": String,
"sum": BigDecimal,
"currency": Currency = "BYN",
"printCheque": Boolean = true,
"operationId": String?,
"prefix": [Printable]?,
"suffix": [Printable]?,
"terminalType": CashlessType?
}
cashier- Имя кассира.
- Хотя бы 1 символ. Все что больше 20 символов, отбрасывается.
- Имя кассира.
sum- BigDecimal- Передаваемая сумма для операции.
currency- Не обязательное поле. Стандартное значение BYN.- Для операции Выдача
CH_WITHDRAWизменение валюты с BYN недоступно. - Валюта для проведения операции. Типы валют.
- Для операции Выдача
printCheque- Необязательное поле. Стандартное значение = true.- Флаг определяющий будет ли печататься чек.
operationId- Идентификатор операции.prefix- Необязательное поле. Printable- адрес торгового объекта (магазина), объекта выполнения работ, объекта оказания услуг
suffix- Необязательное поле. Printable- Иная необязательная информация, необходимая субъекту хозяйствования информация, не являющаяся обязательной
terminalType- CashlessType- Для операции Выдача
CH_WITHDRAW- доступные способы
INTERNAL(для устройств с поддержкой функции) иEXTERNAL
- доступные способы
- Для операции Выдача
Типы безналичных операций CashlessType
Для использования любого из спобов - способ должен быть включен в настройках.
INTERNAL- Встроенный терминал (если он есть)EXTERNAL- Внешний терминалPAY_IKASSA- SoftPos (iKassa Pay)TAPXPHONE- TapXPhone
Тип RollBack
{
"cashier": String,
"chequeNumber": Long,
"printCheque": Boolean = true,
"operationId": String?
}
cashier- Имя кассира.
- Хотя бы 1 символ. Все что больше 20 символов, отбрасывается.
- Имя кассира.
chequeNumber- Номер чека для аннулирования.
- Может быть аннулирован только последний платежный документ. Если после платежного документа были сделаны любые другие фиск. операции, аннулирование невозможно.
printCheque- Необязательное поле. Стандартное значение = true.- Флаг определяющий будет ли печататься чек.
operationId- Идентификатор операции.
Тип MoneyBack
{
"cashier": String,
"itemList": [MoneyBackItem],
"cash": BigDecimal,
"cashless": BigDecimal,
"oplati": BigDecimal,
"other": BigDecimal,
"rrn": String?,
"transactionId": String?,
"payment_method": CashlessType?,
"bank_package_name": String?,
"printCheque": Boolean = true,
"prefix": [Printable]?,
"suffix": [Printable]?,
"operationId": String?
}
cashier- Имя кассира.
- Хотя бы 1 символ. Все что больше 20 символов, отбрасывается.
- Имя кассира.
itemList- Список товаров типа MoneyBackIte
cash- Сумма возврата наличными
cashless- Сумма возврата безналичными
other- Сумма возврата другими способами
oplati- Сумма возврата Оплати
rrn- Необязательное поле.- Номер банковского чека для совершения возврата.
- Необязательный если только наличные.
- Необязательный для некоторых типов терминала.
transactionId- Необязательное поле.- Номер операции с QR кодом.
payment_methodCashlessType- Необязательное поле если
cashless= 0. - Необязательное поле если в настройках включен только один способ оплаты.
- Необязательное поле если
bank_package_name- Передается только в случае если
payment_method=PAY_IKASSA - Необязательный в случае если есть только один способ оплаты через iKassa Pay
- Передается только в случае если
merchantId- Необязательное поле.- Номер торговца
printCheque- Необязательное поле. Стандартное значение = true.- Флаг определяющий будет ли печататься чек.
prefix- Необязательное поле. Printable- адрес торгового объекта (магазина), объекта выполнения работ, объекта оказания услуг
suffix- Необязательное поле. Printable- Иная необязательная информация, необходимая субъекту хозяйствования информация, не являющаяся обязательной
operationId- Идентификатор операции.
Тип MoneyBackItem
{
"nameTitle": String?,
"typeCode": Long = 0,
"section": Section?,
"markings": [Markings]?,
"codeNumber": String = "0",
"price": BigDecimal,
"amount": BigDecimal = "1",
"isPercentDiscount": Boolean = false,
"discount": BigDecimal?,
"isPercentIncrease": Boolean = false,
"increase": BigDecimal?
}
nameTitle- Необязательное поле.- Имя товара.
typeCode- Необязательное поле. Стандартное значение = 0.- Представляет тип кода. Подробнее.
codeNumber- Необязательное поле. Стандартное значение = "0".- Непосредственно сам код товарной позиции
section- Необязательное поле. Стандартное значение = 0.- Секция товара.
- Представляет Секции
markings- Необязательное поле.- Информация о коде и типе кода тов. позиции c маркировкой.
- Представляет Маркировка
price- BigDecimal- Цена товарной позиции.
- Больше нуля.
- Максимальное значение 99999999999.99.
amount- BigDecimal. Необязательное поле, стандартное значение -1- Количество.
- Больше нуля.
- Максимальное значение 9999.999.
- Для товаров с Маркировкой кол-во ед. продаваемого товара должно быть равно 1 шт.
isPercentDiscount- Необязательное поле. Стандартное значение = false.- Показатель типа скидки.
- Если
true- добавляет скидку в процентах. - Если
false- добавляет ценовую скидку.
- Если
- Показатель типа скидки.
discount- BigDecimal. Необязательное поле.- Если значение отрицательное, то применяется надбавка.
- Процентная
- Максимальное значение 100. 2 Знака после запятой.
- Ценовая
- Максимальное значение 99999999999.99.
isPercentIncrease- Необязательное поле. Стандартное значение = false.- Показатель типа надбавки.
- Если
true- добавляет надбавку в процентах. - Если
false- добавляет ценовую надбавку.
- Если
increase- Необязательное поле.- Процентная
- Максимальное значение 100. 2 Знака после запятой.
- Ценовая
- Максимальное значение 99999999999.99.
- Процентная
Тип кода
- Поддерживаемые значения:
- 0 -
plain-код(не имеет классификации) - 1 -
GTIN/EAN - 3 -
Услуга - 4 -
Аванс
- 0 -
Код товара
- Непосредственно сам код товарной позиции.
- В случае, если
typeCodeуказан какGTIN/EAN, максимальная длина значения равна 14 символам. - Для остальных случаев ограничение в 13 символов.
Тип Section
{
"code": Int,
"name": "String"
}
code- Код/Идентификатор секции.- Принимает значение От 1 до 255
- Если было передано значение 0 - секция будет проигнорирована.
name- Наименование секции для отображения на чеке.
Тип Markings
[
{"si": "value"?},
{"ukz": "value"?},
{"unknown": "value"?}
]
si- маркировка СИukz- маркировка УКЗunknown- неизвестный тип маркировки
Если у товара указан признак любой из маркировки то:
- Тип
typeCodeдолжен быть указан какGTIN/EAN. - Кол-во ед. продаваемого товара должно быть равно 1 шт.
- Невозможно передать более одного СИ или УКЗ
- Максимальная длинна маркировки: 256 для СИ и 64 для УКЗ
- Если передано СИ или УКЗ и Неизвестный тип маркировки, значение последнего будет помещено в поле УКЗ или СИ соответственно
- Если передано 2 Неизвестных типа маркировки, значения будут распределены следующим обрзаом:
- Если оба значения меньше или равны по длине 64 символам, то первое сканирование кладется в СИ, второе в УКЗ
- Если одно из сканирований превышает длину в 64 символа, то оно помещается в СИ, а второе в УКЗ
- Символ GS требуется передавать как \u001D
Тип markingKindToScan
- Поддерживаемые значения:
si- маркировка СИukz- маркировка УКЗsiukz- маркировка УКЗ и СИunknown- неизвестный тип маркировки
Если у товара указан признак любой из маркировки то:
- Тип
typeCodeдолжен быть указан какGTIN/EAN. - Кол-во ед. продаваемого товара должно быть равно 1 шт.
- Невозможно передать более одного СИ, УКЗ или unknown
- Максимальная длинна маркировки: 256 для СИ и 64 для УКЗ
- Если передано
siukzилиunknownна кассе будет предложено выбрать тип маркировки после сканирования - Если при сканировании на кассе будут указаны 2 Неизвестных типа маркировки, значения будут распределены следующим обрзаом:
- Если оба значения меньше или равны по длине 64 символам, то первое сканирование кладется в СИ, второе в УКЗ
- Если одно из сканирований превышает длину в 64 символа, то оно помещается в СИ, а второе в УКЗ
Тип BigDecimal
Числовой дробный тип. Можно передавать в виде:
String- Рекомендуемый. Возвращаемый.LongIntDouble
Типы валют Currency
Передается как строка String
BYN- Белорусские рублиRUB- Российские рублиUSD- ДолларыEUR- Евро
Базовый запрос BaseRequest
{
"cashier": String?,
"printCheque": Boolean = true
}
cashier- Имя кассира.
- В некоторых запросах, где имя кассира не обязательно - это поле игнорируется.
- Хотя бы 1 символ. Все что больше 16 символов, отбрасывается.
- Имя кассира.
printCheque- Необязательное поле. Стандартное значение = true.- В некоторых запросах, где нет печати - это поле игнорируется.
- Флаг определяющий будет ли печататься чек.
Тип ChequeNumber
{
"chequeNumber": Long
}
chequeNumber- Номер документа
Тип PrintAny
{
"PrintAny": Boolean = False
}
PrintAny- Необязательное поле. Стандартное значение = False.- печать последнего фискального документа
Тип Printable
[
{
"Text": {
"text": String?
}
}
{
"QrCode": {
"qrCode": String?
}
}
]
text- Текстовое значение для печати на чеке.
qrCode- Контент qrCode в BASE64.
Тип SendEmail
{
"chequeNumber": Long,
"emails": [String]
}
chequeNumber- Номер документа
emails- Массив String- Получатели чека
Тип Shift
{
"cashier": String?,
"bankShiftRequired": Boolean,
"printCheque": Boolean
}
cashier- Необязательное поле.- Имя кассира.
- Хотя бы 1 символ. Все что больше 16 символов, отбрасывается.
- Имя кассира.
bankShiftRequired- Не обязательное поле. Стандартное значение true.- Флаг указывающий обязательность закрытия/открытия смены банка. Если
false, будет закрыта ТОЛЬКО фискальная смена, смена банка будет ПРОПУЩЕНА.- Использовать
falseтолько в случае необходимости закрыть смену при ошибке смены банка.
- Использовать
- Флаг указывающий обязательность закрытия/открытия смены банка. Если
printCheque- Необязательное поле. Стандартное значение = true.- Флаг определяющий будет ли печататься чек.
Базовый запрос PrintBase64
{
"is_image": Boolean = true,
"data_base64": String
}
is_image- Необязательное поле. Стандартное значение = true.- Определяет тип передаваемых данных. Возможнные типы:
- Изображение
- Текст (UTF-8)
- Определяет тип передаваемых данных. Возможнные типы:
data_base64- Информация для печати закодированная в Base64
Тип ChequeInfo
{
"uuid": String?,
"name": String?,
"chequeType": ChequeInfo.Type,
"note": String?,
"number": String?
}
Нефискальная информация о чеке
chequeType- Тип чекаuuid- уникальный идентификатор чека. Необязательное поле.- необходим для идентификации чеков, их сохранения, удаления и оплаты
- уникален в рамках сохраненных в приложении предчеков
name- отображаемое в приложении имя чека.- ограничение 100 символов
- не отображается на печатном чеке
note- примечание. Необязательное поле- ограничение 200 символов
- не отображается на печатном чеке
number- номер чека. Необязательное поле- поддерживает буквы и цифры, ограничение 20 символов
- не отображается на печатном чеке
Типы чеков ChequeType
Postponed- Отложеный чек- не может быть распечатан до фискализации
- не имеет номера стола и места
Передается в виде строки
Пример:
{
...
"type": "Postponed",
...
}
Тип Code
{
"type": Int,
"value": Long
}
Код продукта
type- Тип кодаvalue- значение кода
Тип Discount/Increase
{
"isPercent": Boolean = false,
"value": BigDecimal,
"sum": BigDecimal?
}
isPercent- Необязательное поле. Стандартное значениеfalse- флаг указывающий тип скидки/надбавки - процентный или сумовой
true- процентныйfalse- сумовой
- флаг указывающий тип скидки/надбавки - процентный или сумовой
value- BigDecimal- значение скидки/надбавки
- в зависимости от типа скидки "
isPercent", отбражает процент или сумму
- в зависимости от типа скидки "
- значение скидки/надбавки
sum- BigDecimal. Необязательное поле.- используется только при возврате результата
- игноируется при получении
- поле обязательное при возврате результата
Тип TaxRate
enum имеющий следующие поддерживаемые значения:
tax0tax10tax20tax25
Пример:
{
...
"taxRate": "tax0",
...
}
Тип Tax
{
"rate": BigDecimal,
"value": BigDecimal
}
rate- BigDecimal- Ставка НДС
- от 0 до 25
value- BigDecimal- Сумма НДС
Тип ChequeRequest
{
"info": ChequeInfo,
"currency": Currency = "BYN",
"items": [SaleItemRequest],
"chequeDiscount": Discount?,
"chequeIncrease": Increase?,
"isNotEditable": Boolean = false,
"tpTaxNumber": String?
}
info- ChequeInfo- нефискальная информация о чеке
currency- Не обязательное поле. Стандартное значение BYN.- Валюта чека. Типы валют.
items- массив SaleItemRequestchequeDiscount- Discount. Необязательное поле.- скидка на чек
chequeIncrease- Increase Необязательное поле.- надбавка на чек
isNotEditable- не обязатально поле. Стандартное значение = false- если
true- запретить редактировать предчек чек на кассе
- если
tpTaxNumber- не обязатально поле- УНП третьего лица
Тип SaleItemRequest
{
"name": String?,
"code": Code = {"type":0,"value":0},
"price": BigDecimal,
"quantity": BigDecimal = "1",
"discount": Discount?,
"increase": Increase?,
"taxRate": TaxRate?,
"markings": [Markings]?,
"markingKindToScan": String?
}
name- Необязательное поле.- Имя товара.
code- Code. Обязательное поле - тип- Код товара
price- BigDecimal- Цена товарной позиции.
- Больше нуля.
- Максимальное значение 99999999999.99.
quantity- BigDecimal. Необязательное поле, стандартное значение -1- Количество.
- Больше нуля.
- Максимальное значение 9999.999.
discount- Discount. Необязательное поле.- скидка на единицу товара
increase- Increase. Необязательное поле.- надбавка на единицу товара
taxRate- TaxRate. Необязательное поле.- ставка НДС для товарной позиции
markings- необязательное поле.- Информация о коде и типе кода передаваемой на кассу маркировки тов. позиции.
- Передается уже отсканированная маркировка.
- Представляет Маркировка
- Информация о коде и типе кода передаваемой на кассу маркировки тов. позиции.
markingKindToScan- - необязательное поле.- Информация о типе ожидамой к сканированию на кассу маркировки тов. позиции.
- Сканирование маркировки производится на кассе, согласно переданного ожидаемого типа.
- Доступные значения markingKindToScan
- Информация о типе ожидамой к сканированию на кассу маркировки тов. позиции.
Тип PaymentChequeResponse
{
"uuid": String,
"cash": BigDecimal,
"cashless": BigDecimal,
"certificate": BigDecimal,
"oplati": BigDecimal,
"payment_method": CashlessType?,
"bank_package_name": String?,
"ref": String?,
"cashier" String?
}
uuid- обязательное поле. ChequeInfo- уникальных идентификатор чека в виде строки
cash- Сумма наличными
cashless- Сумма безналичными
certificate- Сумма другими способами
oplati- Сумма способом QR
payment_methodCashlessType- Необязательное поле если
cashless= 0. - Необязательное поле если в настройках включен только один способ оплаты.
- Необязательное поле если
bank_package_name- Передается только в случае если
payment_method=PAY_IKASSA - Необязательный в случае если есть только один способ оплаты через iKassa Pay
- Передается только в случае если
ref- Необязательное поле.- используется для идентификации оплаты по сертификату
- если не передать, то будет присвоен рандомный
cashier- Необязательное поле.- используется для передачи имени кассира в чек, отличного от авторизированного пользователя кассы
- рекомендуется передавать поле при работе на устройствах с отключениями токена
Тип RollBackChequeRequest
{
"uuid": String,
"type": PaymentType?,
"sum": BigDecimal,
"ref": String?
"payment_method": CashlessType?,
"bank_package_name": String?
}
uuid- обязательное поле. ChequeInfo- уникальных идентификатор чека в виде строки
type- обязательное поле. PaymentType- идентификатор типа оплаты
sum- обязательное поле- сумма оплаты
ref- Необязательное поле.- при аннулировании безналом через встроенный терминал передаётся rrn
- пля аннулировании оплаты внешним терминалом в необходимо передать "NO_RRN"
- при аннулированиии через оплати передаётся номер transactionId
- при аннулировании сертификата передаётся ref, которое было указано в методе CHEQUE_PAYMENT, или сгенерированное и переданное в ответе
- для сертификата поле ref необязательное, если его не передать, будет идти проверка только по сумме
payment_methodCashlessType- Необязательное поле если
cashless= 0. - Необязательное поле если в настройках включен только один способ оплаты.
- Необязательное поле если
bank_package_name- Передается только в случае если
payment_method=PAY_IKASSA - Необязательный в случае если есть только один способ оплаты через iKassa Pay
- Передается только в случае если
Тип ChequeResponse
{
"info": ChequeInfo,
"currency": Currency,
"items": [SaleItemResponse],
"chequeDiscount": Discount?
"subTotal": BigDecimal,
"total": BigDecimal,
"payments": [Payment]
}
info- ChequeInfo- нефискальная информация о чеке
items- массив SaleItemResponsecurrency- Валюта чека. Типы валют.
chequeDiscount- Discount. Необязательное поле.- скидка на чек
subTotal- BigDecimal- Под итог чека, без применения скидки на чек
total- BigDecimal- Итоговая сумма к оплате
payments- массив Payment- список совершенных оплат в чеке
Тип SaleItemResponse
{
"name": String?,
"code": Code,
"price": BigDecimal,
"quantity": BigDecimal,
"discount": Discount?,
"tax": Tax?,
"sum": BigDecimal,
"total": BigDecimal
}
name- Необязательное поле.- Имя товара.
code- Code- Код товара
price- BigDecimal- Цена товарной позиции.
- Больше нуля.
- Максимальное значение 99999999999.99.
quantity- BigDecimal- Количество.
- Больше нуля.
- Максимальное значение 9999.999.
discount- Discount. Необязательное поле.- скидка на единицу товара
tax- Tax. Необязательное поле.- НДС для товара
sum- BigDecimal- посчитанная сумма без применения скидки.
price * quantity
- посчитанная сумма без применения скидки.
total- BigDecimal- итоговая сумма товарной позиции с примененной скидкой
Тип Payment
{
"type": PaymentType,
"sum": BigDecimal,
"ref": String?
}
type- PaymentType- Тип оплаты
sum- BigDecimal- сумма оплаты
ref- Необязательное поле.- идентификатор оплаты (если есть). Например:
rrnбанковской операцииtransactionIdоперации с QR кодом
- идентификатор оплаты (если есть). Например:
Тип PaymentType
enum имеющий следующие поддерживаемые значения:
CashCashlessOtherQR
Пример:
{
...
"type": "Cash",
...
}
Тип BankOperation
{
"type": BankOperationType,
"merchantId": Int?
}
type- BankOperationType- Тип отчета
merchantId- Необязательное поле.- Номер торговца
Тип BankOperationType
enum имеющий следующие поддерживаемые значения:
JournalOfBankDocuments- Детальный отчет
XReport- Краткий отчет
BankReconciliation- Сверка итогов
Пример:
{
...
"type": "JournalOfBankDocuments",
...
}
Тип UUIDs
{
"uuids": [String] = []
}
uuids- Необязательное поле, стандартное значение - пустой массив.- список уникальных id в виде строк
Тип UUID
{
"uuid": String
}
uuid- уникальный идентификатор предчека
Тип UiMode
{
"uiMode": String
}
server- включить блокировку интерфейсаdefault- выключить блокировку интерфейса
Тип ChequeActionRequest
{
"type": ChequeActionType,
"cashier": String,
"cheque": ChequeRequest
}
type- ChequeActionType- тип вызываемой операции с чеком.
cashier- Имя кассира.cheque- ChequeRequest- состав чека.
Тип ChequeActionType
имеющий следующие поддерживаемые значения, определяющий открываемый экран кассы:
cheque_edit- Редактирование предчека:- при выходе с экрана по кнопке "Назад" предчек удаляется;
- при нажатии на кнопку "Завершить" предчек сохраняется в кассе с возможность его последующей оплаты по uuid.
cheque_edit_payment- Редактирование предчека + Оплата предчека:- касса открывается на экане предчека с возможностью редактирования и последующей оплаты;
- при выходе с экрана по кнопке "Назад" предчек удаляется;
- успешным завершением операции является фискализация.
payment- Оплата предчека:- касса открывается на экане оплаты;
- при выходе с экрана по кнопке "Назад" предчек удаляется;
- успешным завершением операции является фискализация.
Пример:
{
...
"type": "cheque_edit_paymen",
...
}
Типы ответов
Базовый ответ BaseResponse
{
"dateTime": String?,
"messageDetail": String,
"messageTitle": String,
"numberCheck": String?,
"registerNumberSKO": String?,
"resultCode": Long,
"rrn": String?,
"type": String,
"uid": String?,
"uuid": String?,
"isPrintSuccess": Boolean?
"total": String?,
"change": String?,
"remain": String?,
"isPrintSuccess": Boolean
}
Поле dateTime (опциональное) в формате ISO8601 yyyy-MM-dd'T'HH:mm:ssZ. Время и дата совершения фискальной операции. Например 2022-01-21T12:00:00+03:00.
Поле messageDetail описание результата. Например "Токен авторизован" или "Неверный пароль доступа к токену".
Поле messageTitle оглавление результата. Например "Успех" или "Ошибка".
Поле numberCheck (опциональное) номер чека, после успешной фискализации.
Поле registerNumberSKO (отсутсвует для ошибок) регистрационный номер ско.
Поле resultCode код результата операции. Описание возможных кодов ответа.
Поле rrn (опциональное) номер банковской операции. Если несколько то разделены запятыми.
Поле type (опциональное) тип операции переданный в INTENT_OPERATION_TYPE.
Поле uid (опциональное) уникальный идентификатор фискальной операции.
Поле uuid (опциональное) уникальный идентификатор предчека.
Поле isPrintSuccess (опциональное) возвращает null в случае если был передан флаг "printCheque": false.
Возвращает true если чек был успешно распечатан и false если произошла ошибка при печати.
Поле total (опциональное) возвращает итоговую сумму для Продажи и Возврата.
Поле change (опциональное) возвращает сумму сдачи для Продажи.
Поле remain (опциональное) возвращает сумму остатка для оплаты незавершенного чека.
Ответ с чеками AuthResponse
{
"messageDetail": String,
"messageTitle": String,
"resultCode": Long,
"type": String,
"token": String?
}
Поле messageDetail описание результата. Например "Токен авторизован" или "Неверный пароль доступа к токену".
Поле messageTitle оглавление результата. Например "Успех" или "Ошибка".
Поле resultCode код результата операции. Описание возможных кодов ответа.
Поле type тип операции переданный в INTENT_OPERATION_TYPE.
Поле token уникальный токен для автоматической авторизации в течение 24 часов.
- не обязательное
- наличие зависит от переданного в запрос авторизации флага
returnToken
Ответ с отчетом ReportResponse
uid: String?,
numberCheck: String?,
messageDetail: String,
messageTitle: String,
registerNumberSKO: String,
resultCode: Long,
type: String,
dateOpenShift: String,
dateCloseShift: String?,
amountDocument: String,
bynIncome: String,
rubIncome: String,
usdIncome: String,
eurIncome: String,
bynCashIn: String?
rubCashIn: String?
usdCashIn: String?
eurCashIn: String?
numberFirstCheck: String,
numberLastCheck: String,
amountCurrency: String,
amountOfSale: String,
sumSalePerShift: String,
sumSaleCardPerShift: String,
sumSaleOtherPerShift: String,
sumSaleCashPerShift: String,
amountMoneyBackPerShift: String,
sumMoneyBackPerShift: String,
sumMoneyBackCashPerShift: String,
sumMoneyBackCardPerShift: String,
sumMoneyBackOtherPerShift: String,
amountDepositPerShift: String,
sumDepositPerShift: String,
amountWithdrawPerShift: String,
sumWithdrawPerShift: String,
amountRollbackPerShift: String,
sumRollbackPerShift: String,
sumRollBackCashPerShift: String,
sumRollbackCardPerShift: String,
sumRollbackOtherPerShift: String,
cardHolderWithdrawSum: String,
cardHolderWithdrawCount: String,
saleThirdPartySum: String,
saleThirdPartyCount: String,
rollbackThirdPartySum: String,
rollbackThirdPartyCount: String,
saleSiSum: String,
saleSiCount: String,
saleUkzSum: String,
saleUkzCount: String,
moneyBackSiSum: String,
moneyBackSiCount: String,
moneyBackUkzSum: String,
moneyBackUkzCount: String,
rollbackSiSum: String,
rollbackSiCount: String,
rollbackUkzSum: String,
rollbackUkzCount: String,
isPrintSuccess: Boolean?
Поле uid (отсутвует для Х-отчета) уникальный идентификатор документа.
Поле numberCheck (отсутствует для Х-отчета) номер закрытой смены.
Поле messageDetail описание результата. Например "Смена закрыта".
Поле messageTitle оглавление результата. Например "Успех" или "Ошибка".
Поле registerNumberSKO (отсутсвует для ошибок) регистрационный номер ско
Поле resultCode код результата операции. Описание возможных кодов ответа.
Поле type (опциональное) тип операции переданный в INTENT_OPERATION_TYPE.
Поле dateOpenShift в формате ISO8601 yyyy-MM-dd'T'HH:mm:ssZ. Время открытия смены.
Поле dateCloseShift (отсутствует для Х-отчета) в формате ISO8601. Время закрытия смены.
Поле amountDocument количество документов.
Поля bynIncome / rubIncome / usdIncome / eurIncome накопленный оборот по валюте
Поля bynCashIn /rubCashIn / usdCashIn / eurCashIn наличные в кассе по валюте (отсутствует для Z-отчета)
Поле numberFirstCheck номер первого чека. 0 если не было фискализировано ни одной операции.
Поле numberLastCheck номер последнего чека. 0 если не было фискализировано ни одной операции.
Поле amountCurrency количетсво валют.
Поле amountOfSale количество продаж за смену.
Поле sumSalePerShift сумма продаж за смену.
Поле sumSaleCardPerShift сумма безналичных продаж по карте.
Поле sumSaleOtherPerShift сумма безналичных продаж другими способами.
Поле sumSaleCashPerShift сумма наличных продаж.
Поле amountMoneyBackPerShift количество возвратов
Поле sumMoneyBackPerShift сумма возвратов.
Поле sumMoneyBackCashPerShift сумма возвратов наличными.
Поле sumMoneyBackCardPerShift сумма безналичных возвратов по карте.
Поле sumMoneyBackOtherPerShift сумма безналичных возвратов другими способами.
Поле amountDepositPerShift количество внесений.
Поле sumDepositPerShift сумма депозита.
Поле amountWithdrawPerShift количество изъятий.
Поле sumWithdrawPerShift сумма изъятий.
Поле amountRollbackPerShift количество аннулирований.
Поле sumRollbackPerShift сумма аннулирований.
Поле sumRollBackCashPerShift сумма аннулирований наличными.
Поле sumRollbackCardPerShift сумма аннулирований по карте.
Поле sumRollbackOtherPerShift сумма аннулирований другими способами.
Поле cardHolderWithdrawSum сумма выдачи.
Поле cardHolderWithdrawCount количество выдачи.
Поле saleThirdPartySum сумма прода в пользу 3-х лиц.
Поле saleThirdPartyCount количество продаж в пользу 3-х лиц.
Поле rollbackThirdPartySum сумма аннулирований наличными в пользу 3-х лиц.
Поле rollbackThirdPartyCount количество аннулирований наличными в пользу 3-х лиц.
Поле saleSiSum сумма продажи СИ.
Поле saleSiCount количество проданных товаров СИ.
Поле saleUkzSum сумма продажи УКЗ.
Поле saleUkzCount количество проданных товаров УКЗ.
Поле moneyBackSiSum сумма возвратов СИ.
Поле moneyBackSiCount количество возвратов товаров СИ.
Поле moneyBackUkzSum сумма вовзратов УКЗ.
Поле moneyBackUkzCount количество возвратов товаров УКЗ.
Поле rollbackSiSum сумма аннулирований СИ.
Поле rollbackSiCount количество аннулирований товаров СИ.
Поле rollbackUkzSum сумма аннулирований УКЗ.
Поле rollbackUkzCount количество аннулирований товаров УКЗ.
Поле isPrintSuccess (опциональное) Возвращает null в случае если был передан флаг "printCheque": false.
Возвращает true если чек был успешно распечатан и false если произошла ошибка при печати.
Ответ с прочей информацией OtherInfoResponse
{
cash_in_shift: BigDecimal,
usd_cash_in_shift: BigDecimal?,
eur_cash_in_shift: BigDecimal?,
rub_cash_in_shift: BigDecimal?,
messageDetail: String,
messageTitle: String,
registerNumberSKO: String,
resultCode: Int,
type: String,
last_number_document: Long,
version_code_apk: Int,
coreVersion: String,
shift_status: Boolean,
list_payment_method: [CashlessType],
date_open_shift: String,
date_last_close_shift: String?,
number_shift: Long,
count_un_send_documents: Int
}
Поле cash_in_shift наличные BYN в кассе.
Поле usd_cash_in_shift (опциональное) наличные USD в кассе.
Поле eur_cash_in_shift (опциональное) наличные EUR в кассе.
Поле rub_cash_in_shift (опциональное) наличные RUB в кассе.
Поле messageDetail описание результата. Например "Токен авторизован" или "Неверный пароль доступа к токену".
Поле messageTitle оглавление результата. Например "Успех" или "Ошибка".
Поле registerNumberSKO регистрационный номер ско
Поле resultCode код результата операции. Описание возможных кодов ответа.
Поле type тип операции переданный в INTENT_OPERATION_TYPE.
Поле last_number_document номер последнего документа. 0 если нет документов за смену.
Поле version_code_apk номер версии интерфейса.
Поле coreVersion версия ПК.
Поле shift_status - true - если открыта. false - если открыта более 24 часов.
Поле list_payment_method список доступных способов безналичного платежа.
Поле date_open_shift дата открытия смены. ISO8601 yyyy-MM-dd'T'HH:mm:ssZ.
Поле date_last_close_shift (опциональное) дата закрытия предыдущей смены. ISO8601 yyyy-MM-dd'T'HH:mm:ssZ.
Поле number_shift номер текущей смены.
Поле count_un_send_documents кол-во неотправленных документов в СКО.
Ответ аннулирования RollBackResponse
{
dateTime: String,
messageDetail: String,
messageTitle: String,
numberCheck: String,
registerNumberSKO: String,
resultCode: Long,
uid: String,
type: String,
numberCheckRollback: String,
uidDocumentRollback : String,
isPrintSuccess: Boolean?
}
Поле dateTime (опциональное) в формате ISO8601 yyyy-MM-dd'T'HH:mm:ssZ. Время и дата совершения фискальной операции.
Например 2022-01-21T12:00:00+03:00.
Поле messageDetail описание результата. Например "Токен авторизован" или "Неверный пароль доступа к токену".
Поле messageTitle оглавление результата. Например "Успех" или "Ошибка".
Поле numberCheck (опциональное) номер чека, после успешной фискализации.
Поле registerNumberSKO (отсутсвует для ошибок) регистрационный номер ско
Поле resultCode код результата операции. Описание возможных кодов ответа.
Поле uid уникальный идентификатор фискальной операции.
Поле type тип операции переданный в INTENT_OPERATION_TYPE.
Поле numberCheckRollback номер чека аннулированной операции.
Поле uidDocumentRollback уникальный идентификатор аннулированной операции.
Поле isPrintSuccess (опциональное) Возвращает null в случае если был передан флаг "printCheque": false.
Возвращает true если чек был успешно распечатан и false если произошла ошибка при печати.
Ответ с чеками ChequesResponse
{
"messageDetail": String,
"messageTitle": String,
"resultCode": Long,
"type": String,
"cheques": [ChequeResponse]
}
Поле messageDetail описание результата. Например "Токен авторизован" или "Неверный пароль доступа к токену".
Поле messageTitle оглавление результата. Например "Успех" или "Ошибка".
Поле resultCode код результата операции. Описание возможных кодов ответа.
Поле type тип операции переданный в INTENT_OPERATION_TYPE.
Поле cheques массив чеков в результате типа ChequeResponse
Ответ с результатами веса WeightResponse
{
"weight": String
}
Поле weight - значение веса
Ответ с результатами скана ScanResponse
{
"messageTitle": "Успех",
"resultCode": 200,
"type": "CAMERA_SCAN",
"scan": "4600605034507"
}
Поле scan - значение ШК
{
"messageTitle": "Успех",
"resultCode": 200,
"type": "CAMERA_SCAN",
"qrScan": "019481900857000421086065239AAB"
}
Поле qrScan - значение маркировки
Возможные коды ответа resultCode
200Успех399Общая ошибка- Если у ошибки нет своего кода.
400Необходимо открыть смену401Требуется авторизация402Сумма должна быть >= 0.01403Получена недействительная цена товарной позиции- При превышении лимита цены 99999999999.99
- При отрицательной цене
404Получен отрицательный итог- Может возникнуть если скидка на чек превышает под итог
405Ошибка токена406Смена уже открыта407Срок действия сертификата истек- может возникнуть если время на устройстве синхронизировано не корректно
- может возникнуть если сертификат истек
408Смена уже закрыта409Касса заблокирована или не инициализирована410Невозможно выполнить продажу пока присутствует незавершенная продажа.- Может возникнуть если в продаже были добавлены безналичные платежи и/или платежи другими способами и произошла ошибка фискализации.
- Завершить такой платеж можно только вручную зайдя в ПК.
411Нет чека для аннулирования412Смена уже открыта более 24 часов413Неверное тело запроса414Сумма должна быть <= 99999999999.99415Количество должно быть >= 0.001416Количество должно быть <= 9999.999418Для совершения операции требуется RRN- Для совершения операции возврата необходимо передать RRN банковской транзакции.
420Cумма нал + безнал превышает итого к возврату421Сумма безнал + др. способы превышает итого к оплате422Переданная сумма меньше чем итого к оплате- Может возникнуть если нал + безнал + др. способы меньше чем итого к оплате
423Переданный терминал выключен в настройках терминала424Не выбран терминал для безналичной оплаты425Невозможно провести операцию, в кассе недостаточно средств- При изъятии суммы больше чем есть в кассе
- При совершении возврата и аннулировании при недостаточном количестве средств
- При попытке закрыть смену без изъятия всех денег
426Токен не подключен427Чек не найден- Может возникнуть если чек для печати или для отправки на e-mail не найден
430Неизвестный тип операции- Передан неизвестный
INTENT_OPERATION_TYPE
- Передан неизвестный
432Передана некорректная скидка433Сумма не должна быть отрицательной434Количество товарных позиций не должно превышать 150- При превышении лимита на количество товарных позиций в продаже
435Требуется передать имя кассира440Отменено пользователем450Ошибка принтера: принтер не подключен451Ошибка принтера: низкий заряд452Ошибка принтера: нет бумаги453Ошибка принтера- Общая ошибка для принтера
454Не поддерживаемый формат для печати488Один или несколько чеков не найдены- Может возникнуть при запросе на получение или удаление чеков
489В чеке присутствует незавершенная оплата- Может возникнуть при попытке удалить чек у которого есть незавершенная оплата, например сохранена оплата картой
490В запросе присутствуют UUID дубликаты- Может возникнуть при отправке чеков с не уникальными UUID
491В запросе присутствует не уникальный UUID который уже был сохранен- Может возникнуть при отправке чека с UUID который уже был сохранен в кассе
494Необходимо разблокировать экран для обработки внешнего запроса495Приложение должно быть в фокусе для обработки внешних запросов499Операция уже выполняется
Changelog
1.11.2024 Версия 2.0.0
Изменения:
-
Операция SALE:
-
Изменение в структуре запроса:
-
добавлено поле
isPercentIncrease, -
добавлено поле
chequeIncrease, -
добавлено поле
tpTaxNumber, -
добавлено поле
prefix, -
добавлено поле
suffix, -
удалено поле
phone_number, -
удалено поле
address, -
удалено поле
name_of_outlet, -
удалено поле
advertising_text, -
Изменения в структуре полей типа
itemList:- добавлено поле
section:- добавлено поле
code, - добавлено поле
name.
- добавлено поле
- добавлено поле
isPercentIncrease, - добавлено поле
increase, - добавлено поле
markings.
- добавлено поле
-
-
Операция MONEY_BACK:
-
Изменение в структуре запроса:
- добавлено поле
prefix, - добавлено поле
suffix, - добавлено поле
itemList:- добавлено поле
nameTitle, - добавлено поле
typeCode, - добавлено поле
section:- добавлено поле
code, - добавлено поле
name.
- добавлено поле
- добавлено поле
price, - добавлено поле
amount, - добавлено поле
isPercentDiscount, - добавлено поле
discount, - добавлено поле
isPercentIncrease, - добавлено поле
increase, - добавлено поле
taxRate, - добавлено поле
markings.
- добавлено поле
- удалено поле
phone_number, - удалено поле
address, - удалено поле
name_of_outlet, - удалено поле
advertising_text, - удалено поле
typeCode, - удалено поле
codeNumber.
- добавлено поле
-
Операция ADD_CHEQUES:
-
Изменение в структуре запроса:
-
добавлено поле
chequeIncrease:- добавлено поле
isPercent, - добавлено поле
value, - добавлено поле
sum.
- добавлено поле
-
добавлено поле
tpTaxNumber. -
Изменения в структуре полей типа
items:- добавлено поле
section:- добавлено поле
code, - добавлено поле
name.
- добавлено поле
- добавлено поле
increase:- добавлено поле
isPercent, - добавлено поле
value, - добавлено поле
sum.
- добавлено поле
- добавлено поле
markings.
- добавлено поле
-
-
Операция CLOSE_SHIFT:
-
Изменение в структуре ответа:
- добавлено поле
amountOfSale, - добавлено поле
sumSalePerShift, - добавлено поле
sumSaleCardPerShift, - добавлено поле
sumSaleOtherPerShift, - добавлено поле
sumMoneyBackCashPerShift, - добавлено поле
sumMoneyBackCardPerShift, - добавлено поле
sumMoneyBackOtherPerShift, - добавлено поле
cardHolderWithdrawSum, - добавлено поле
cardHolderWithdrawCount, - добавлено поле
saleThirdPartySum, - добавлено поле
saleThirdPartyCount, - добавлено поле
rollbackThirdPartySum, - добавлено поле
rollbackThirdPartyCount, - добавлено поле
saleSiSum, - добавлено поле
saleSiCount, - добавлено поле
saleUkzSum, - добавлено поле
saleUkzCount, - добавлено поле
moneyBackSiSum, - добавлено поле
moneyBackSiCount, - добавлено поле
moneyBackUkzSum, - добавлено поле
moneyBackUkzCount, - добавлено поле
rollbackSiSum, - добавлено поле
rollbackSiCount, - добавлено поле
rollbackUkzSum, - добавлено поле
rollbackUkzCount. - удалено поле
amountOfPaymentsDocInCurrencyOne, - удалено поле
sumSalePaymentsPerShift, - удалено поле
amountMoneyBackCashlessPerShift, - удалено поле
sumMoneyBackCashlessPerShift, - удалено поле
amountRollbackCashPerShift, - удалено поле
amountRollbackCardPerShift, - удалено поле
amountRollbackOtherPerShift, - удалено поле
amountCorrectionPerShift, - удалено поле
sumCorrectionPerShift, - удалено поле
amountCancelPerShift, - удалено поле
sumCancelPerShift.
- добавлено поле
-
Операция X_REPORT:
-
Изменение в структуре ответа:
- добавлено поле
amountOfSale, - добавлено поле
sumSalePerShift, - добавлено поле
sumSaleCardPerShift, - добавлено поле
sumSaleOtherPerShift, - добавлено поле
sumMoneyBackCashPerShift, - добавлено поле
sumMoneyBackCardPerShift, - добавлено поле
sumMoneyBackOtherPerShift, - добавлено поле
cardHolderWithdrawSum, - добавлено поле
cardHolderWithdrawCount, - добавлено поле
saleThirdPartySum, - добавлено поле
saleThirdPartyCount, - добавлено поле
rollbackThirdPartySum, - добавлено поле
rollbackThirdPartyCount, - добавлено поле
saleSiSum, - добавлено поле
saleSiCount, - добавлено поле
saleUkzSum, - добавлено поле
saleUkzCount, - добавлено поле
moneyBackSiSum, - добавлено поле
moneyBackSiCount, - добавлено поле
moneyBackUkzSum, - добавлено поле
moneyBackUkzCount, - добавлено поле
rollbackSiSum, - добавлено поле
rollbackSiCount, - добавлено поле
rollbackUkzSum, - добавлено поле
rollbackUkzCount. - удалено поле
amountOfPaymentsDocInCurrencyOne, - удалено поле
sumSalePaymentsPerShift, - удалено поле
amountMoneyBackCashlessPerShift, - удалено поле
sumMoneyBackCashlessPerShift, - удалено поле
amountRollbackCashPerShift, - удалено поле
amountRollbackCardPerShift, - удалено поле
amountRollbackOtherPerShift, - удалено поле
amountCorrectionPerShift, - удалено поле
sumCorrectionPerShift, - удалено поле
amountCancelPerShift, - удалено поле
sumCancelPerShift.
- добавлено поле
-
Операция DEPOSIT:
-
Изменение в структуре запроса:
- добавлено поле
prefix, - добавлено поле
suffix.
- добавлено поле
-
Операция WITHDRAW:
-
Изменение в структуре запроса:
- добавлено поле
prefix, - добавлено поле
suffix.
- добавлено поле
-
Операция ROLLBACK_NUMBER_CHECK:
-
Изменение в структуре запроса:
- добавлено поле
prefix, - добавлено поле
suffix.
- добавлено поле
-
Операция ROLLBACK_NUMBER_CHECK:
-
Изменение в структуре запроса:
- добавлено поле
prefix, - добавлено поле
suffix.
- добавлено поле
-
Добавлена Операция CH_WITHDRAW:
- добавлено поле
cashier, - добавлено поле
sum, - добавлено поле
prefix, - добавлено поле
suffix, - добавлено поле
terminalType.
- добавлено поле