Skip to content

Instantly share code, notes, and snippets.

@NikitaEremin
Last active December 4, 2025 09:50
Show Gist options
  • Select an option

  • Save NikitaEremin/8a5be0f4e8552605f4c02ca6981196cf to your computer and use it in GitHub Desktop.

Select an option

Save NikitaEremin/8a5be0f4e8552605f4c02ca6981196cf to your computer and use it in GitHub Desktop.
Протокол серверного приложения "Терминальный режим. Электронный чек"

История изменений

Версия 1.4.0 – 14.11.2025

  • Добавлен новый способ оплаты E-POS. Подробнее смотреть здесь.
  • Добавлено новое поддерживаемое устройство - Apollo Night (8.1 Android).
  • Добавлен запрос для печати QR-кода со ссылкой на сервис поиска чеков. Подробнее смотреть здесь.
  • Расширен запрос для получения копии документа copyDocument. Теперь есть возможность получить копию Z-отчета по номеру смены.
  • Внедрена система очереди запросов для улучшения стабильности работы API. Запросы обрабатываются последовательно. Размер очереди ограничен 3 одновременными запросами. При переполнении очереди запросов клиент получит ошибку с кодом * *429 (Too Many Requests)**.

Версия 1.3.1 – 13.08.2025

Добавлен запрос для обновления токена авторизации - Refresh Token, запрос предназначен для случаев, когда пользователи заходят под данными кассира параллельно в несколько приложений, в следствии чего, токен на всех активных сессиях становится невалидным и требуется переавторизация в приложение Терминальный режим. С помощью данного запроса можно обновить токен из управляющего приложения.

В запросе shift запрос и ответ добавлены параметры для отслеживания конфигурации банковского ПО. Параметр запроса временно введен как необязательный, осенью 2025 года, параметр станет обязательным.
Добавлен запрос получения контроьной ленты КАССОВЫХ документов по номеру Z-отчета Control Tape.

В Настройки Банковского ПО добавлена возможность закрытия банковской смены вручную.
В Настройки банковского ПО добавлена возможность проверки связи банка с хостом.
Переработана печать на устройстивах SUNMI.

Версия 1.3.0 – 07.07.2025

Изменены опции и экран Админ. меню.
Для большей наглядности параметр is_print добавлен в тела и описания запросов, которые используют этот параметр.
Добавлен блок часто задаваемых вопросов.
Добавлена возможность работы с банковским ПО и принтером без авторизации в приложение. Работа без авторизации будет осуществялться по нажатию на специальную кнопку на странице авторизации, запросы поддерживающие работу без авторизации отмечены флагом (local)

Добавлен запрос [PATCH] /settings/bankSetting необходимый для получения и изменения параметров вызова банковского ПО и печати банковских карт-чеков (В запросах использующих параметры из этого запроса будет помечено какие поля и для чего используются).
Добавлен запрос [POST] /bank/payment выполняющий запрос на оплату напрямую в банковское ПО (без проведения документа по кассе).
Добавлен запрос [POST] /bank/refund выполняющий запрос на возврат напрямую в банковское ПО (без проведения документа по кассе).
Добавлен запрос [POST] /bank/closeShift выполняющий запрос на закрытие смены напрямую в банковском ПО (без проведения документа по кассе).
Добавлен запрос [GET] /bank/lastOperations Выполняющий обращение к локальному хранилищу приложения Терминальный режим, для получения последних 10 операций по банковскому терминалу.
Добавлен запрос [DELETE] /bank/clearLastOperations Выполняющий обращение к локальному хранилищу приложения Терминальный режим, для очистки списка последних операций по банковскому терминалу.
Добавлен запрос [GET] /infoUserSectionList Получающий список секций, доступных для текущей кассы, которые пользователь создал в Личном кабинете ПКС.
В запресе receipt запрос и ответ добавлен параметр bank_card_check.
В запросе refund запрос и ответ добавлен параметр bank_card_check.
В запросе cancelLastDocument ответ добавлен параметр bank_card_check.
Поле transaction_rrn в ответе запроса receipt планируется к удалению осенью 2025 года, поле приходило в ответ на запросы, у которых была банковская оплата. На данный момент поле будет приходить в ответ на запросы у которых была банковская оплата и 1 банковский чек, для избежания последующих ошибок, рекомендуем использовать transaction_rrn внутри массива bank_card_check.

Добавлено новое поддерживаемое устройство - Aisino A90 (10 Android), интеграция распространяется строго на устройства Aisino с операционной системой Android 10, устройства Aisino с операционной системой Andoid 7 НЕ поддерживаются.

Внедрение логики оплаты несколькими банковскими картами
Возможность оплаты и возврата несколькими банковскими картами в пределах одного чека реализована следующим образом: Клиентское приложение отправляет запрос /bank/payment (для оплаты) или /bank/refund (для возврата), эти запросы не фискализируются в кассе, а в ответ отдают объект, соответствующий элементу массива bank_card_check. Клиентское приложение сохраняет объект на стороне своего софта, после того как необходимое количество банковских оплат было вызвано, вызывается запрос receipt (для оплаты) и запрос refund (для возврата), и помимо прочих полей - заполняется массив bank_card_check объектами полученными ранее.
Важно: в этом случае перед отправкой запроса receipt и refund параметр is_call_bank_soft запроса /settings/bankSetting должен иметь значение false, или будет вызвана оплата по картам еще раз уже при отправке кассового запроса.
Так же в случаях сбойных ситуаций и для удобства работы интеграторов было создано харнилище последних 10 банковских операций, доступ к харнилищу осуществляется через запрос /bank/lastOperations/.

Внедрение запросов для касс с "Расширенным тарифом"
Добавлен запрос /tariffId/. При авторизации программная касса получает идентификатор своего тарифа, этим запросом можно узнать является ли тариф для кассы расширенным.
Идентификатор расширенного тарифа для тестовой зоны - 11.
Идентификатор расширенного тарифа для прод зоны - 8
Для касс с расширенным тарифом доступен запрос /markChecker/markTypes/, запрос возвращает информацию от сервис Электронный знак о переданных в методе кодах маркировки.
Для касс с расширенным тарифом доступен запрос /markChecker/gtins/, запрос возвращает информацию от сервис Электронный знак о переданных в методе штрих-кодах.
Запросы, для которых на кассе должен быть выставлен тариф "Расширенный", помечены флагом extended.

Важные исправления
На устройствах, использующих банковский софт GTPOS, ввиду особенностей взаимодействия с этим софтом, могли происходить " вылеты" приложения "Терминальный режим", для этого разработчиками GTPOS был предоставлен метод проверки посленей операции: теперь, когда приложение вследствие взаимодействия с GTPOS "вылетает", при авторизации будет выполнена проверка последней банковской транзакции, так как соединение с клиентом было разорвано - банковский чек (при его наличии) будет печататься на принтере И добавляться в список /bank/lastOperations. Если же транзакция GTPOS была неуспешной - будет напечатан следующий текст: "Банковская транзакция не обнаружена, повторите операцию".

Версия 1.2.1 – 17.03.2025

Добавлен способ возврата another_amount. в запрос /refund/, так же добавлен блок для указания типа других способов возврата another_amount_types запроса /refund/.

Добавлена возможность работы с PAX RTX на 12 Android.

Добавлена возможность работы с Nexgo ST-20.

Для X-report добавлено поле cumulative_total.
Для Z-report добавлено поле cumulative_total.
Для Z-report добавлено поле section_report.
Для X-report добавлено поле section_report.


Версия 1.2.0 – 17.02.2025

Добавлен метод проверки типа кода маркировки /infoGetMarkType/[POST].

Для запроса /shift/[POST] добавлен параметр is_print, при отправке параметра со значением true, будет печататься информация - «Смена открыта».


Версия 1.1.2 – 23.12.2024

Изменена печать документов.


Версия 1.1.1 – 02.12.2024

Изменен UI главного экрана приложения.


Версия 1.1.0 – 26.11.2024

Добавлена поддержка устройств Feitian F20 с банковскими софтами GTPOS и PsAPOS. Добавлена поддержка устройства PAX A8500 с банковским софтом CAPS.


Версия 1.0.3 – 04.11.2024

Добавлена возможность подключения по localhost при условии нахождения терминального режима на том же устройстве, где находится управляющее приложение.


Версия 1.0.2 – 23.10.2024

Метод запроса /xreport/ изменен с GET на POST. Для запроса /xreport/ разрешен параметр is_print в теле запроса.

Исправлен баг: при отправке запроса /receipt/ без Необязательного поля change_percent - происходило ожидание ответа от запроса, которое завершалось только по таймауту.

Исправлены тела ошибок.

Добавлено удаление токена авторизации при нажатии на «Остановить сервер и выйти».


Версия 1.0.1 - 21.10.2024

Все поля, содержащие в себе «_percent» изменены с типа int на тип F3,2.

В случае отправки поля change_percent необходимо локально высчитывать change_amount и передавать оба поля, в случае, если отправить change_percent отличный от 0.00, а change_amount = 0.00 – возможны расхождения при расчете итоговой суммы.

tax_amount_unit – всегда вычисляется на стороне управляющего приложения.

Оглавление


Аннотация

«Терминальный режим «Электронный чек» функционирует как серверное приложение, принимающее запросы от сторонних клиентов в формате json5 через протокол HTTP 1.1 с использованием методов GET и POST. Все поступающие запросы обрабатываются последовательно.

Приложение поддерживается на устройствах с операционной системой Android версии 5.1 и выше, однако его функциональность может быть ограничена на устройствах с упрощенными версиями Android, такими как Android GO (Android GO Edition).

Часто задаваемые вопросы

1. Ошибка "Полученный токен неверный или истек" Эта ошибка означает, что токен авторизации был аннулирован, причин такого поведения может быть несколько: либо он истек по времени (7 дней), либо другой пользователь использовал те же данные авторизации что и вы. В любом случае, для исправления ошибочного поведения необходима переавторизация в приложение "Терминальный режим"

Авторизация пользователя

В целях обеспечения конфеденциальности аторизационных данных, авторизация в приложение реализована интерфейсно, авторизационные данные находятся у конечного субъекта хозяйствования (И относящихся к нему кассиров)

Данные, необходимые для первой авторизации, (логин, временный пароль, ID ПК) направляются Оператором на электронную почту пользователя услуг Оператора.

При первой авторизации необходимо ввести логин, временный пароль кассира и ID ПК (вручную или отсканировать QR-код). Далее нажать кнопку «Войти».

На странице смены пароля ввести новый пароль (4-12 символов) в поля «Новый пароль» и «Повторите пароль», нажать кнопку «Сменить пароль».

Далее в модальном окне «Желаете создать PIN-код?» Пользователь может задать PIN-код для последующей быстрой авторизации (без ввода логина и пароля). Необходимо нажать «Создать» и затем задать четырёхзначный PIN код.

Для устройств «3 в 1» в качестве ID ПК может приниматься номер (ICCID) установленной в устройстве СИМ-карты, при необходимости его можно отредактировать.

При последующих запусках «Терминального режима» пользователю предоставляется возможность авторизоваться либо при помощи ПИН-кода, либо используя логин и постоянный пароль кассира ПК

Базовым URL-адресом сервера является:

http://{ip адрес}:(порт)/.

С версии 1.0.3 Доступно подключение по адресу http://localhost:18081, для работы с «Терминальным режимом» в пределах одного устройства. Если приложение, отправляющее запросы в «Терминальный режим», находится на другом устройстве, доступно будет только подключение по IP адресу и порту, которые указаны на экране (Рисунок 2).

Примечание для интеграторов: _для корректной работы управляющего приложения с терминальным режимом, пользователю в настройках терминального режима, необходимо выставить настройку «Поверх других приложений - разрешено».

Перечень запросов

🧾 Кассовые операции

Запрос Метод URL Описание
Shift POST /shift/ Открытие смены
Deposit POST /deposit/ Внесение наличных средств в кассу
Withdraw POST /withdraw/ Изъятие наличных из кассы
Receipt POST /receipt/ Платёжный документ (чек)
Refund POST /refund/ Документ возврата
Cancel last document POST /cancelLastDocument/ Отмена последнего платёжного документа
Copy document POST /copyDocument/ Копия документа по номеру
X-Report POST /xreport/ Печать отчёта без гашения (Х-отчёт)
Z-Report POST /zreport/ Печать отчёта с гашением (закрытие смены / Z-отчёт)
Control tape POST /controlTape/ Печать контрольной ленты

🏦 Банковские операции

Адрес запроса Метод URL Описание
Setting (local) PATCH /settings/bankSetting Настройки печати банковских чеков и вызова ПО
Payment (local) POST /bank/payment Проведение продажи по терминалу
Refund (local) POST /bank/refund Проведение возврата по терминалу
Close shift (local) POST /bank/closeShift Закрытие банковской смены
Last operations (local) GET /bank/lastOperations Последние 10 банковских транзакций
Clear last operations (local) DELETE /bank/clearLastOperations Очистка истории банковских транзакций

E-POS

Адрес запроса Метод URL Описание
Services GET /epos/services Получение списка услуг и торговых точек ПУ
Create payment link POST /epos/createPaymentLink/ Создание платежной ссылки для оплаты в сервисе E-POS
Epos status by uid POST /epos/infoStatusByUid?request_uid={request_uid} Получение информации о платежной ссылке
Epos payment info by uid POST /epos/infoPaymentByUid?request_uid={request_uid} Получение информации о платеже E-POS

ℹ️ Информационные запросы

Адрес запроса Метод URL Описание
Last document GET /infoLastDocument/ Данные о последнем фискальном документе
User GET /infoUser/ Информация о пользователе
Check by uid GET /infoCheckByUid?request_uid={request_uid} Проверка документа по request_uid
Get mark type POST /infoGetMarkType/ Проверка типа кода маркировки
Section list GET /infoUserSectionList/ Список секций из ЛК ПКС

🏷️ Расширенный тариф

Адрес запроса Метод URL Описание
Mark types (extended) POST /markChecker/markTypes/ Проверка кодов маркировки
Check GTINs (extended) POST /markChecker/gtins/ Проверка штрих-кодов

🖨️ Печать

Адрес запроса Метод URL Описание
Print document (local) POST /printDocument/ Печать кассового документа
Print blocks (local) POST /printBlocks/ Печать произвольного текста
Print short document POST /printShortDocument/ Печать короткого документа (QR-кода)

⚙️ Системные запросы

Адрес запроса Метод URL Описание
Ping (local) GET /ping/ Проверка доступности сервера
Refresh token POST /refreshToken/ Обновление токена авторизации
Tariff id (local) GET /tariffId Получение актуального тарифа для кассы

Запросы

В протоколе существуют запросы, для отправки и получения положительных ответов от которых, нет необходимости в авторизации в приложении, эти запросы в протоколе помечены флагом (local). Работа без авторизации выполняется по нажатию на специальную кнопку в левом верхнем углу экрана авторизации.
В протоколе существуют запросы, для которых на кассе должен быть включен расширенный тариф, они отмечены флагом * *(extended)**.

На любой запрос сервер может вернуть сообщение об ошибке. В теле ответа сервера с кодом 400 содержится дополнительная информация об ошибке, например:

{
  code: "String",
  message: "String",
}

Значение поля message передается в ответе на запрос клиента.

Таймаут для всех запросов составляет 20 секунд. В любом запросе клиента обязательно должны передаваться следующие заголовки HTTP:

Параметр Значение
Connection keep-alive
Content-Type application/json; charset=utf-8

Для всех POST запросов, если в конкретном запросе не указано обратное, в теле запроса может передаваться параметр is_print, который отвечает за необходимость вывода документа на печать.
❗Значение по умолчанию - true.

Параметр Тип/Обязательность Описание
is_print O, boolean Вывод чека на принтер:
true - печатать
false – не печатать

Описание значений параметров

R — обязательное поле;

O — необязательное поле;

integer — целочисленный тип данных, n - максимальное количество символов;

String — строковый тип данных, n — максимальное количество символов;

String(Сn) — строковый тип для представления денежных величин (Currency). Всегда содержит ровно два знака после запятой. Параметр n определяет максимальную длину целой части. Разделитель — точка.
По умолчанию: n = 7.
Примеры:
String(C9) → макс. 9 цифр в целой части ("123456789.99")
String(C) → макс. 7 цифр в целой части ("1234567.99")

Fn,mстроковый тип данных, n — максимальное количество цифр целой части, m — максимальное количество цифр дробной части, разделитель — точка;

YYYY-MM-DDTHH:MM:SS — дата и время, YYYY — год, MM — месяц, DD — число, HH — часы, MM — минуты, SS — секунды;

boolean — логический тип данных. Принимает одно из значений: true (истина) или false (ложь)

[] — список(массив), с указанным перед ним типом данных. Пример: object[] - список объектов;

Ответы

Сервер отвечает также в формате json5, используя коды состояния HTTP как коды ответа сервера:

Код состояния HTTP Значение
200 Запрос выполнен успешно, дополнительная информация о результате выполнения запроса содержится в теле ответа.
201 Запрос на создание документа выполнен успешно. Документ создан.
400 Во время выполнения операции произошла ошибка, дополнительная информация об ошибке содержится в теле ответа.
403 Ограничение или отсутствие доступа к материалу
404 Ресурс не найден. (Вызван несуществующий запрос)
429 Ошибка возникает, если клиент отправил более 3 параллельных запросов на обработку. Сервер отклоняет лишние запросы, чтобы предотвратить перегрузку. Рекомендуется дождаться завершения текущих операций и повторить запрос.
Любой другой код, отсутствие ответа в течении таймаута Сервер недоступен или по каким-то причинам не может выполнить данный запрос, фатальная ошибка

Служебные запросы

ping (local)

Для данного запроса отсутствует параметр is_print

Пример запроса

[GET] http://{ip адрес}:(порт)/ping

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}

Параметры запроса: отсутствуют.

Ответ:

HTTP/1.1 200 OK

{}

Параметры ответа: отсутствуют.

bankSetting (local)

Для данного запроса отсутствует параметр is_print

Пример запроса

Запрос отправляется в 2 вариациях:

1. Вариант с обновлением настроек, в запросе отправляются настройки, изменяющие стандартные значения

[PATCH] http://{ip адрес}:(порт)/settings/bankSetting

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_call_bank_soft: true,
  is_print_second_bank_check: true,
  is_combined_bank_check: true
}

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

Название поля Тип данных Описание
is_call_bank_soft O, boolean Признак вызова банковского ПО (стандартно true)
is_print_second_bank_check O, boolean Признак печати второго банковского чека (стандартно true)
is_combined_bank_check O, boolean Признак объединённого банковского чека (стандартно false)

Ответ:

HTTP/1.1 201 Created

{
  is_call_bank_soft: true,
  is_print_second_bank_check: false,
  is_combined_bank_check: false
}

Параметры ответа:

Название поля Тип данных Описание
is_call_bank_soft R, boolean Признак вызова банковского ПО (стандартно true)
is_print_second_bank_check R, boolean Признак печати второго банковского чека (стандартно true)
is_combined_bank_check R, boolean Признак объединённого банковского чека с кассовым (стандартно false)

2. Вариант с получением настроек, запрос отправляется пустым, в ответ отдаются текущие настройки

[PATCH] http://{ip адрес}:(порт)/settings/bankSetting

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}

Параметры запроса: Отсутствуют

Ответ:

HTTP/1.1 200 OK

{
  is_call_bank_soft: false,
  is_print_second_bank_check: false,
  is_combined_bank_check: false,
}

Параметры ответа:

Название поля Тип данных Описание
is_call_bank_soft R, boolean Признак вызова банковского ПО (стандартно true)
is_print_second_bank_check R, boolean Признак печати второго банковского чека (стандартно true)
is_combined_bank_check R, boolean Признак объединённого банковского чека с кассовым (стандартно false)

Команды работы с Банковским терминалом

Bank payment (local)

Для данного запроса параметр is_print не отправляется. Всегда имеет значение true.
Методические указания к запросу
Параметр is_call_bank_soft запроса /settings/bankSetting не влияет на данный запрос.
Если параметр is_print_second_bank_check запроса /settings/bankSetting установлен false, при успешном осуществлении оплаты на терминале, банковский чек(чек для банка) будет печататься в одном экземпляре, а не в двух как при стандартном поведении программы.
Если параметр is_combined_bank_check запроса /settings/bankSetting установлен true, банковский чек(чек для клиента) распечатан не будет, если при этом параметр is_print_second_bank_check запроса /settings/bankSetting установлен false - печать банковских чеков произведена не будет.

Пример запроса

[POST] http://{ip адрес}:(порт)/bank/payment

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  amount: "String(C)"
}

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

Название поля Обязательное поле
Тип данных
Описание
amount R, String(C) Сумма оплаты

Ответ

HTTP/1.1 201 Created

{
  bic: "String",
  unp: "String",
  terminal_id: "String",
  mercant_id: "String",
  transaction_uuid_acquirer_bank: "String",
  transaction_uuid_arm_cashier: "String",
  transaction_rrn: "String",
  card_check_number: "String",
  transaction_type: "String",
  transaction_status: "String",
  transaction_status_message: "String",
  processing_response_code: "String",
  masked_card_number: "String",
  payment_system: "String",
  type_card_reader: "String",
  card_application_ID: "String",
  auth_code: "String",
  transaction_datetime: "String",
  transaction_currency: "String",
  transaction_amount: "String(C)",
  transaction_confirmation_method: "String",
  bank_name: "String",
  transaction_crn: "String",
}

Параметры ответа:

Название поля Тип данных Описание
bic O, String БИК банка
unp O, String УНП
terminal_id O, String Идентификатор терминала
mercant_id O, String Идентификатор мерчанта
transaction_uuid_acquirer_bank O, String UUID транзакции в банке-эквайере
transaction_uuid_arm_cashier O, String UUID транзакции в АРМ кассира
transaction_rrn R, String Retrieval Reference Number (RRN)
card_check_number O, String Контрольный номер карты
transaction_type O, String Тип транзакции
transaction_status R, String Статус транзакции
transaction_status_message O, String Детализация статуса/ошибки
processing_response_code O, String Код ответа процессинга
masked_card_number O, String Маскированный номер карты
payment_system O, String Платёжная система
type_card_reader O, String Тип кард-ридера
card_application_ID O, String Идентификатор приложения карты (AID)
auth_code O, String Код авторизации
transaction_datetime O, String Дата и время транзакции
transaction_currency O, String Валюта транзакции
transaction_amount R, String(C) Сумма транзакции
transaction_confirmation_method O, String Метод подтверждения
bank_name O, String Название банка-эквайера
transaction_crn O, String Customer Reference Number (CRN) (возвращается в ответе у устройств FEITIAN F20 с банковским софтом psAPOS)

Bank refund (local)

Для данного запроса параметр is_print не отправляется. Всегда имеет значение true.
Методические указания к запросу
Параметр is_call_bank_soft запроса /settings/bankSetting не влияет на данный запрос.
Если параметр is_print_second_bank_check запроса /settings/bankSetting установлен false, при успешном осуществлении оплаты на терминале, банковский чек(чек для банка) будет печататься в одном экземпляре, а не в двух как при стандартном поведении программы.
Если параметр is_combined_bank_check запроса /settings/bankSetting установлен true, банковский чек(чек для клиента) распечатан не будет, если при этом параметр is_print_second_bank_check запроса /settings/bankSetting установлен false - печать банковских чеков произведена не будет.

Пример запроса

[POST] http://{ip адрес}:(порт)/bank/refund

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  amount: "String(C)",
  transaction_rrn: "String"
}

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

Название поля Обязательное поле

Тип данных
Описание
amount R, String(C) Сумма оплаты
transaction_rrn R, String Retrieval Reference Number (RRN)

Ответ

HTTP/1.1 201 Created

{
  bic: "String",
  unp: "String",
  terminal_id: "String",
  mercant_id: "String",
  transaction_uuid_acquirer_bank: "String",
  transaction_uuid_arm_cashier: "String",
  transaction_rrn: "String",
  card_check_number: "String",
  transaction_type: "String",
  transaction_status: "String",
  transaction_status_message: "String",
  processing_response_code: "String",
  masked_card_number: "String",
  payment_system: "String",
  type_card_reader: "String",
  card_application_ID: "String",
  auth_code: "String",
  transaction_datetime: "String",
  transaction_currency: "String",
  transaction_amount: "String",
  transaction_confirmation_method: "String",
  bank_name: "String",
  transaction_crn: "String",
}

Параметры ответа:

Название поля Тип данных Описание
bic O, String БИК банка
unp O, String УНП
terminal_id O, String Идентификатор терминала
mercant_id O, String Идентификатор мерчанта
transaction_uuid_acquirer_bank O, String UUID транзакции в банке-эквайере
transaction_uuid_arm_cashier O, String UUID транзакции в АРМ кассира
transaction_rrn R, String Retrieval Reference Number (RRN)
card_check_number O, String Контрольный номер карты
transaction_type O, String Тип транзакции
transaction_status R, String Статус транзакции
transaction_status_message O, String Детализация статуса/ошибки
processing_response_code O, String Код ответа процессинга
masked_card_number O, String Маскированный номер карты
payment_system O, String Платёжная система
type_card_reader O, String Тип кард-ридера
card_application_ID O, String Идентификатор приложения карты (AID)
auth_code O, String Код авторизации
transaction_datetime O, String Дата и время транзакции
transaction_currency O, String Валюта транзакции
transaction_amount R, String(C) Сумма транзакции
transaction_confirmation_method O, String Метод подтверждения
bank_name O, String Название банка-эквайера
transaction_crn O, String Customer Reference Number (CRN)

Bank closeShift (local)

Для данного запроса параметр is_print не отправляется. Всегда имеет значение true.
Методические указания к запросу
Параметр is_call_bank_soft запроса /settings/bankSetting не влияет на данный запрос.
Параметр is_print_second_bank_check запроса /settings/bankSetting не влияет на данный запрос.
Параметр is_combined_bank_check запроса /settings/bankSetting не влияет на данный запрос.

Пример запроса

[POST] http://{ip адрес}:(порт)/bank/closeShift

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}

Параметры запроса: Отсутствуют

Ответ

HTTP/1.1 201 Created

{
  status: "String",
}

Параметры ответа:

Название поля Тип данных Описание
status O,String Статус операции

Bank lastOperations (local)

Для данного запроса отсутствует параметр is_print

Пример запроса

[GET] http://{ip адрес}:(порт)/bank/lastOperations

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}

Параметры запроса: отсутствуют.

Ответ:

HTTP/1.1 200 OK

{
  bank_card_check: [
    {
      type: "String",
      bic: "String",
      unp: "String",
      terminal_id: "String",
      mercant_id: "String",
      transaction_uuid_acquirer_bank: "String",
      transaction_uuid_arm_cashier: "String",
      transaction_rrn: "String",
      card_check_number: "String",
      transaction_type: "String",
      transaction_status: "String",
      transaction_status_message: "String",
      processing_response_code: "String",
      masked_card_number: "String",
      payment_system: "String",
      type_card_reader: "String",
      card_application_ID: "String",
      auth_code: "String",
      transaction_datetime: "String",
      transaction_currency: "String",
      transaction_amount: "String",
      transaction_confirmation_method: "String",
      bank_name: "String",
      transaction_crn: "String",
    },
  ],
}

Параметры ответа:

Название поля Тип данных Описание
bank_card_check R, object[] Список банковских чеков
| > type R, String Тип банковского документа (receipt, refund, cancel)
| > bic O, String БИК банка
| > unp O, String УНП
| > terminal_id O, String Идентификатор терминала
| > mercant_id O, String Идентификатор мерчанта
| > transaction_uuid_acquirer_bank O, String UUID транзакции в банке-эквайере
| > transaction_uuid_arm_cashier O, String UUID транзакции в АРМ кассира
| > transaction_rrn R, String Retrieval Reference Number (RRN)
| > card_check_number O, String Контрольный номер карты
| > transaction_type O, String Тип транзакции
| > transaction_status R, String Статус транзакции
| > transaction_status_message O, String Детализация статуса/ошибки
| > processing_response_code O, String Код ответа процессинга
| > masked_card_number O, String Маскированный номер карты
| > payment_system O, String Платёжная система
| > type_card_reader O, String Тип кард-ридера
| > card_application_ID O, String Идентификатор приложения карты (AID)
| > auth_code O, String Код авторизации
| > transaction_datetime O, String Дата и время транзакции
| > transaction_currency O, String Валюта транзакции
| > transaction_amount R, String(C) Сумма транзакции
| > transaction_confirmation_method O, String Метод подтверждения
| > bank_name O, String Название банка-эквайера
| > transaction_crn O, String Customer Reference Number (CRN)

Bank Clear lastOperations (local)

Запрос предназначен для очистки списка последних банковских операций.
Для данного запроса отсутствует параметр is_print

Пример запроса

[DELETE] http://{ip адрес}:(порт)/bank/clearLastOperations

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}

Параметры запроса: отсутствуют.

Ответ:

{}

Параметры ответа: отсутствуют.

HTTP/1.1 204 No Content

Команды принтера

printDocument (local)

Для данного запроса параметр is_print не отправляется. Всегда имеет значение true.

Важно Данный запрос не предназначен для интеграции через терминальный режим, используется при интеграции клиентского приложения напрямую с ПКС для исключения самостоятельной интеграции с принтером. Для получения копий документов при интеграции с терминальным режимом, используейте /copyDocument

Пример запроса

[POST] http://{ip адрес}:(порт)/printDocument

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  document_type: "String",
  document: {},
}

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

Название поля Обязательное поле

Тип данных
Описание
document_type R, String Тип документа.
Возможные значения:
receipt - платежный документ
refund - документ возврата
cancel - документ аннулирования
withdraw - документ изъятия
deposit - документ внесения
document R, object Тело ответа полученное от ПКС

Ответ

HTTP/1.1 201 Created

{}

Параметры ответа: отсутствуют.

printBlocks (local)

Для данного запроса параметр is_print не отправляется. Всегда имеет значение true.

Пример запроса

[POST] http://{ip адрес}:(порт)/printBlocks

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  print_blocks: [
    "String"
  ],
}

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

Название поля Обязательное поле

Тип данных
Описание
print_blocks R, String[] Список печатаемых строк

Ответ

HTTP/1.1 201 Created

{}

Параметры ответа: отсутствуют.

Print short document

Запрос предназначен для печати QR-кода, содержащего ссылку на сервис поиска чеков. Для данного запроса параметр is_print не отправляется.

Пример запроса

[POST] http://{ip адрес}:(порт)/printShortDocument

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  "document_number": 10,
  "document_type": "receipt"
}

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

Параметр Тип Обязательный Описание
document_number integer да Номер кассового документа
document_type String да Тип кассового документа. Возможные значения:
receipt — платежный документ
refund — документ возврата

Ответ

HTTP/1.1 201 Created

{}

Параметры ответа: отсутствуют.

Команды для выполнения кассовых операций

Refresh Token

Запрос предназначен для обновления токена авторизации при активной сессии в приложении Терминальный режим (когда на экране терминальный режим отображаются цифры ip адреса устройства)

Пример запроса

[POST] http://{ip адрес}:(порт)/auth/refreshToken

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  pin: "String",
}

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

Название поля Обязательное поле

Тип данных
Описание
pin R, String[] Пин код для входа в приложение Терминальный Режим

Ответ

HTTP/1.1 204 No Content

Параметры ответа отсутствуют

infoLastDocument

Пример запроса

[GET] http://{ip адрес}:(порт)/infoLastDocument/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}

Параметры запроса: отсутствуют

Ответ

HTTP/1.1 200 OK

В зависимости от типа документа

Параметры ответа:

В зависимости от типа документа

infoUser

Пример запроса

[GET] http://{ip адрес}:(порт)/infoUser/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}

Параметры запроса: отсутствуют

Ответ

{
  cashier: {
    name: "String",
    surname: "String",
    patronymic: "String",
    phone: "String",
    username: "String",
    is_active: true,
    created_at: "String",
    last_action_time: "String",
    note: "String",
    identificator: "String",
  },
  cashbox: {
    business_entity: "String",
    unp: "String",
    cashier: [
      "String"
    ],
    account_number: 0,
    to_name: "String",
    address: "String",
    cashbox_model: "String",
    register_date: "String",
    deregister_date: "String",
    tsok_date: "String",
    sko_info: "String",
    withdrawal_date: "String",
    certificate_start_date: "String",
    certificate_end_date: "String",
    note: "String",
    current_amount: "String",
    shift: {
      number: 0,
      open_datetime: "String",
      close_datetime: "String",
    },
    block: {
      is_blocked: "boolean",
      block_start_datetime: "String",
      block_end_datetime: "String",
      block_reason: 0,
      block_reason_verbose: "String",
    },
  },
  base_value: "String",
}

Параметры ответа

Название поля Тип данных Описание
cashier object
| > name String Имя
maxLength: 255
minLength: 1
| > surname String Фамилия
maxLength: 255
minLength: 1
| > patronymic String Отчество
maxLength: 255
minLength: 1
| > phone String Телефон
maxLength: 255
minLength: 1
| > username String Логин
maxLength: 255
minLength: 1
| > is_active boolean Признак активности
| > created_at String Дата создания (YYYY-MM-DD)
| > last_action_time String Время последней активности (YYYY-MM-DDTHH:MM:SS)
| > note String Примечание
| > identificator String Идентификатор кассира
maxLength: 16
minLength: 1
cashbox object
| > business_entity String Наименование СПД
| > unp String УНП
maxLength: 16
minLength: 1
| > cashier String[] Кассиры )
| > account_number integer Учетный номер
| > to_name String Наименование торговой точки
| > address String Адрес торговой точки
| > cashbox_model String Модель ПК
| > register_date String Дата постановки на учёт ПК в АИС ККО (YYYY-MM-DD)
| > deregister_date String Дата снятия с учёта ПК в АИС ККО (YYYY-MM-DD)
| > tsok_date String Дата выпуска (снаряжения) ТСОК в СККО (YYYY-MM-DD)
| > sko_info String Сведения о СКО
| > withdrawal_date String Дата снятия с учёта в АИС ЭЧ (YYYY-MM-DD)
| > certificate_start_date String Начало ТСОК (YYYY-MM-DDTHH:MM:SS)
| > certificate_end_date String Завершение ТСОК (YYYY-MM-DDTHH:MM:SS)
| > note String Примечание
| > current_amount String(C9) Текущая сумма денег в кассе<br
| > shift object
| | > number integer Номер смены
| | > open_datetime String Дата и время открытия смены (YYYY-MM-DDTHH:MM:SS)
| | > close_datetime String Дата и время закрытия смены (YYYY-MM-DDTHH:MM:SS)
| > block object
| | > is_blocked boolean Блокировка
| | > block_start_datetime String Дата и время начала блокировки (YYYY-MM-DDTHH:MM:SS)
| | > block_end_datetime String Дата и время окончания блокировки (YYYY-MM-DDTHH:MM:SS)
| | > block_reason integer Причина блокировки
| | > block_reason_verbose String Причина блокировки (описание)
base_value String Значение базовой величины

infoCheckByUid

Пример запроса

[GET] http://{ip адрес}:(порт)/infoCheckByUid/?request_uid=<request_uid>

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}

Query:

request_uid: "String"

{}

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

Название поля Тип данных Описание
Query параметры
request_uid String Request_uid операции
R

Ответ

HTTP/1.1 200 OK

В зависимости от типа документа

Параметры ответа:

В зависимости от типа документа

infoGetMarkType

Для данного запроса отсутствует параметр is_print

Пример запроса

[POST] http://{ip адрес}:(порт)/infoGetMarkType/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  code: "String",
}

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

Название поля Обязательность, тип данных Описание
code R, String Код маркировки по которому требуется определить его тип

Ответ

HTTP/1.1 201 Created

{
  type: "String",
}

Параметры ответа:

Название поля Обязательность, тип данных Описание
type R, String Возможные значения в ответе:

«si» - Средство идентификации;

«ukz» - Унифицированный контрольный знак;

«not_km» - Не определен как код маркировки

infoUserSectionList

Пример запроса

[GET] http://{ip адрес}:(порт)/infoUserSectionList/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}

Параметры запроса: отсутствуют

Ответ

{
  sections: [
    {
      name: "String",
      number: 0,
    },
  ],
}

Параметры ответа

Название поля Тип данных Описание
sections object[]
| > name String Название секции
| > number integer Номер секции

shift

Пример запроса

[POST] http://{ip адрес}:(порт)/shift/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
  cashier_software_code: "String",
}

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

Название поля Обязательность, тип данных Описание
cashier_software_code O, String Код программного обеспечения кассира, каждому интегратору присваивается индивидуально
is_print O, boolean Вывод чека на принтер:
true - печатать
false – не печатать

Ответ

HTTP/1.1 201 Created

{
  cashier_software_code: "String",
  model_device_designation: "String",
  bank_software_code: "String",
  os_version: "String",
  open_datetime: "String",
}

Параметры ответа:

Название поля Обязательность, тип данных Описание
open_datetime R, String Дата и время открытия смены
cashier_software_code R, String Код программного обеспечения кассира, каждому интегратору присваивается индивидуально
model_device_designation R, String Модель устройство, осуществляющего запросы в ПКС
os_version R, String Версия операционной системы устройства, осуществляющего щапросы в ПКС
bank_software_code R, String Код банковского ПО

deposit

Пример запроса

[POST] http://{ip адрес}:(порт)/deposit

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
  request_uid: "String",
  currency: "String",
  amount: "String"
}

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

Название поля Обязательность, тип данных Описание
is_print O, boolean Вывод чека на принтер: true -печатать, false – не печатать
request_uid R, String Уникальный идентификатор кассовой операции
currency R, String Наименование (код) валюты.
Допустимые значения: [BYN]
amount R, String(C9) Сумма внесения

Ответ

HTTP/1.1 201 Created

{
  current_amount: "String",
  request_uid: "String",
  document_number: 0,
  issued_at: "String",
  currency: "String",
  amount: "String",
  unique_code: "String",
  cashier_identificator: "String",
  cashier_login: "String",
  account_number: 0,
  printer_fiscal_error: {
    code: "String",
    message: "String",
  },
}

Параметры ответа:

Название поля Обязательность, Тип данных Описание
current_amount R, String(C9) Текущая сумма наличных средств в кассе
request_uid R, String Уникальный идентификатор кассовой операции
maxLength: 36
minLength: 1
document_number R, integer Номер операции
issued_at R, String (YYYY-MM-DDTHH:MM:SS) Дата и время формирования документа
currency R, String Валюта (BYN)
amount O, String(C9) Сумма внесения
unique_code R, String Уникальный идентификатор операции в разрезе кассы
maxLength: 24
minLength: 1
cashier_identificator R, String Идентификатор кассира
maxLength: 16
minLength: 1
cashier_login R, String Логин кассира
account_number R, integer Учетный номер кассы
printer_fiscal_error O, object[] Ошибки печати фискальных документов
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке

withdraw

Пример запроса

[POST] http://{ip адрес}:(порт)/withdraw

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
  request_uid: "String",
  currency: "String",
  amount: "String",
}

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

Название поля Обязательность, тип данных Описание
is_print O, boolean Вывод чека на принтер: true -печатать, false – не печатать
request_uid R, String Уникальный идентификатор кассовой операции
currency R, String Наименование (код) валюты.
Допустимые значения: [BYN]
amount R, String(C9) Сумма внесения

Ответ

HTTP/1.1 201 Created

{
  current_amount: "String",
  request_uid: "String",
  document_number: 0,
  issued_at: "String",
  currency: "String",
  amount: "String",
  unique_code: "String",
  cashier_identificator: "String",
  cashier_login: "String",
  account_number: 0,
  printer_fiscal_error: {
    code: "String",
    message: "String",
  },
}

Параметры ответа:

Название поля Обязательность, Тип данных Описание
current_amount R, String(C9) Текущая сумма наличных средств в кассе
request_uid R, String Уникальный идентификатор кассовой операции
maxLength: 36
minLength: 1
document_number R, integer Номер операции
issued_at R, String (YYYY-MM-DDTHH:MM:SS) Дата и время формирования документа
currency R, String Валюта (BYN)
amount O, String(C9) Сумма изъятия
unique_code R, String Уникальный идентификатор операции в разрезе кассы
maxLength: 24
minLength: 1
cashier_identificator R, String Идентификатор кассира
maxLength: 16
minLength: 1
cashier_login R, String Логин кассира
account_number R, integer Учетный номер кассы
printer_fiscal_error O, object[] Ошибки печати фискальных документов
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке

receipt

Методические указания к запросу
Если параметр is_call_bank_soft запроса /settings/bankSetting установлен false, вызов банковского ПО осуществлен * не будет*, массив bank_card_check при оплате картой может заполняться интегратором, для формирования чека в ПКС с оплатой по нескольким банковским картам. Для получения данных для заполнения массива, необходимо осуществить оплату через запрос /bank/payment и сохранить в клиентском приложении тело ответа, для последующего заполнения массива bank_card_check запроса receipt. Важное уточнение: суммы внутри массива bank_card_check не валидируются с суммами основного запроса receipt не валидируется на стороне Терминального режима, валидация сумм находится на стороне клиентского ( управляющего) приложения
Если параметр is_print_second_bank_check запроса /settings/bankSetting установлен false, при вызове оплаты на терминале и получении успешного ответа от ПКС, банковский чек(чек для банка) будет печататься в одном экземпляре, а не в двух как при стандартном поведении программы.
Если параметр is_combined_bank_check запроса /settings/bankSetting установлен true, при получении ответа от ПКС, при этом is_call_bank_soft = true (Банковская операция вызывалась на терминале во время запроса), Терминальный режим, в случае наличия не пустого массива bank_card_check будет печатать банковские чеки(чек для клиента) совмещенные с кассовым чеком. Если при этом is_print_second_bank_check установлен false - то банковский чек отдельно от кассового печататься не будет.
Вне зависимости от параметров запроса /settings/bankSetting массив bank_card_check будет передаваться в ответах от Терминального режима (при наличии массива в ответе от ПКС) начиная с версии 1.3.0

Пример запроса

[POST] http://{ip адрес}:(порт)/receipt

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
  send_email: "String",
  request_uid: "String",
  currency: "String",
  deposit_amount: "String",
  card_amount: "String",
  cash_amount: "String",
  another_amount: "String",
  positions: [
    {
      name: "String",
      tag: 0,
      amount_unit: "String",
      amount: "String",
      count: "String(F)",
      change_percent: "String(F)",
      change_amount: "String",
      tax: {
        tax_code: "String",
        tax_percent: "String(F)",
        tax_amount_unit: "String",
      },
      article: "String",
      gtin: "String",
      section_number: 0,
      section_name: "String",
      si_code: "String",
      ukz_code: "String",
      scan1_code: "String",
      scan2_code: "String",
    },
  ],
  another_amount_types: [
    {
      type: "String",
      code: "String",
      amount: "String",
    },
  ],
  third_part_unp: "String",
  change_amount: "String",
  change_percent: "String(F)",
  bank_card_check: [
    {
      bic: "String",
      unp: "String",
      terminal_id: "String",
      mercant_id: "String",
      transaction_uuid_acquirer_bank: "String",
      transaction_uuid_arm_cashier: "String",
      transaction_rrn: "String",
      card_check_number: "String",
      transaction_type: "String",
      transaction_status: "String",
      transaction_status_message: "String",
      processing_response_code: "String",
      masked_card_number: "String",
      payment_system: "String",
      type_card_reader: "String",
      card_application_ID: "String",
      auth_code: "String",
      transaction_datetime: "String",
      transaction_currency: "String",
      transaction_amount: "String",
      transaction_confirmation_method: "String",
      bank_name: "String",
      transaction_crn: "String",
    },
  ],
  epos_uuid_arm: "String",
  with_cash_advance: true,
  header: [
    "String"
  ],
  footer: [
    "String"
  ],
  operating_mode: [
    "String"
  ],
}

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

Название поля Обязательность, Тип данных Описание
is_print O, boolean Вывод чека на принтер: true -печатать, false – не печатать
send_email O, String Email, на который будет направлен платежный документ
request_uid R, String Уникальный идентификатор кассовой операции
maxLength: 36
minLength: 1
currency R, String Наименование (код) валюты.
Допустимые значения: [BYN,EUR,USD,RUB]
deposit_amount R, String(C) Внесено наличными
card_amount R, String(C) Итого безналичными
cash_amount R, String(C) Итого наличными
another_amount R, String(C) Итого иными способами оплаты
positions R, object[] Список позиций
| > name R, String Наименование позиции
| > tag R, integer Метка
Возможные значения: 0-без gtin, 1-gtin, 3-услуга, 4 – авансовый способ платежа
| > gtin R, String 0 - если GTIN товара отсутствует; в обратном случае значение
maxLength: 14
minLength: 1
| > amount_unit R, String(C) Цена за единицу товара
| > amount R, String(C) Сумма позиции без учета скидки/надбавки
| > count R, F3,3 Количество
| > change_percent O, F3,2 Скидка/надбавка на позицию в процентном выражении[1]
| > change_amount R, String(C) Сумма скидки/надбавки на позицию в денежном выражении
| > tax O, object[] Список налогов для позиции
| | > tax_code O, String Код ставки налога для позиции платежного
| | > tax_percent R, F3,2 Процент налога[2]
| | > tax_amount_unit R, String(C) Сумма налога за единицу товара[3]
| > article O, String Артикул
| > section_number O, integer Номер секции товара
maxLength: 255
minLength: 1
| > section_name O, String Наименование секции товара
| > si_code O, String Код маркировки СИ
maxLength: 256
minLength: 1
| > ukz_code O, String Код УКЗ
maxLength: 64
minLength: 1
| > scan1_code O, String Код маркировки 1
maxLength: 256
minLength: 1
| > scan2_code O, String Код маркировки 2
maxLength: 64
minLength: 1
another_amount_types O, object[] Список иных способов оплаты
❗Небходимо указывать в случае, если another_amount ≠ 0.00. Допускается отправка пустого массива []
| > type R, String Вид оплаты
| > code R, String Код оплаты
| > amount R, String(C) Сумма
third_part_unp O, String УНП третьего лица
change_amount R, String(C) Сумма скидки/наценки по платежному документу
change_percent O, F3,2 Процент скидки/наценки по платежному документу[1]
epos_uuid_arm O, String Уникальный идентификатор транзакции EPOS АРМ кассира. В формате UUIDv4
bank_card_check O, object[] Список банковских чеков
| > bic O, String БИК банка
| > unp O, String УНП
| > terminal_id O, String Идентификатор терминала
| > mercant_id O, String Идентификатор мерчанта
| > transaction_uuid_acquirer_bank O, String UUID транзакции в банке-эквайере
| > transaction_uuid_arm_cashier O, String UUID транзакции в АРМ кассира
| > transaction_rrn R, String Retrieval Reference Number (RRN)
| > card_check_number O, String Контрольный номер карты
| > transaction_type O, String Тип транзакции
| > transaction_status R, String Статус транзакции
| > transaction_status_message O, String Детализация статуса/ошибки
| > processing_response_code O, String Код ответа процессинга
| > masked_card_number O, String Маскированный номер карты
| > payment_system O, String Платёжная система
| > type_card_reader O, String Тип кард-ридера
| > card_application_ID O, String Идентификатор приложения карты (AID)
| > auth_code O, String Код авторизации
| > transaction_datetime O, String Дата и время транзакции
| > transaction_currency O, String Валюта транзакции
| > transaction_amount R, String(C) Сумма транзакции
| > transaction_confirmation_method O, String Метод подтверждения
| > bank_name O, String Название банка-эквайера
| > transaction_crn O, String Customer Reference Number (CRN)
with_cash_advance O, boolean
header O, String[] Информация, которая будет напечатана над кассовым документом. Каждая элемент - новая строка на печати.
Максимальная длина: 64
footer O, String[] Информация, которая будет напечатана под кассовым документом. Каждая элемент - новая строка на печати.
Максимальная длина: 64
operating_mode O, String[] Режим работы торгового объекта, контактные данные (телефон) и другое
Передается набор строк
maxLength: 64
minLength: 1

Примечания

[1] Указывается в случае наличия скидки или надбавки на позицию. В случае отправки change_percent, необходимо так же отправлять change_amount вычисленный локально в управляющем приложении, для исключения расхождений сумм..
[2] Процент налога обязателен, если указан tax.
[3] tax_amount_unit вычисляется на стороне управляющего приложения;.

Ответ

HTTP/1.1 201 Created

{
  positions_count: 0,
  request_uid: "String",
  currency: "String",
  deposit_amount: "String",
  card_amount: "String",
  cash_amount: "String",
  another_amount: "String",
  positions: [
    {
      name: "String",
      tag: 0,
      amount_unit: "String",
      amount: "String",
      fee: "String",
      count: "String(F)",
      change_percent: "String(F)",
      change_amount: "String",
      tax: {
        tax_code: "String",
        tax_percent: "String(F)",
        tax_amount_unit: "String",
      },
      article: "String",
      gtin: "String",
      section_number: 0,
      section_name: "String",
      marking_status: 0,
      si_code: "String",
      ukz_code: "String",
      scan1_code: "String",
      scan2_code: "String",
    },
  ],
  another_amount_types: [
    {
      type: "String",
      code: "String",
      amount: "String",
    },
  ],
  third_part_unp: "String",
  cashier_identificator: "String",
  cashier_login: "String",
  amount: "String",
  total_amount: "String",
  change_amount: "String",
  change_percent: "String(F)",
  change: "String",
  discount_amount: "String",
  increase_amount: "String",
  total_change_amount: "String",
  document_number: 0,
  issued_at: "String",
  unique_code: "String",
  account_number: 0,
  cancel_operation: {
    document_number: 0,
    issued_at: "String",
  },
  transaction_rrn: "String",
  bank_card_check: [
    {
      bic: "String",
      unp: "String",
      terminal_id: "String",
      mercant_id: "String",
      transaction_uuid_acquirer_bank: "String",
      transaction_uuid_arm_cashier: "String",
      transaction_rrn: "String",
      card_check_number: "String",
      transaction_type: "String",
      transaction_status: "String",
      transaction_status_message: "String",
      processing_response_code: "String",
      masked_card_number: "String",
      payment_system: "String",
      type_card_reader: "String",
      card_application_ID: "String",
      auth_code: "String",
      transaction_datetime: "String",
      transaction_currency: "String",
      transaction_amount: "String",
      transaction_confirmation_method: "String",
      bank_name: "String",
      transaction_crn: "String",
    },
  ],
  epos_uuid_arm: "String",
  with_cash_advance: true,
  header: [
    "String"
  ],
  footer: [
    "String"
  ],
  operating_mode: [
    "String"
  ],
  tax_list: [
    "String"
  ],
  printer_fiscal_error: {
    code: "String",
    message: "String",
  },
  error_send_to_email: {
    code: "String",
    message: "String",
  },
  printer_bank_error: {
    code: "String",
    message: "String",
  },
}

Параметры ответа:

Название поля Обязательность, тип данных Описание
positions_count R, integer Количество позиций реализуемых товаров(маркированных и немаркированных) в платежном документе
request_uid R, String Уникальный идентификатор кассовой операции

maxLength: 36

minLength: 1
currency R, String Наименование (код) валюты
deposit_amount R, String(C) Внесено наличными
card_amount R, String(C) Итого безналичными
cash_amount R, String(C) Итого наличными
another_amount R, String(C) Итого иными способами оплаты
positions (Список позиций) R, object[] Список позиций (каждая позиция описана ниже)
| > name R, String Наименование позиции
| > tag R, integer Метка

Возможные значения: 0-без gtin, 1-gtin, 3-услуга, 4 – авансовый способ платежа.
| > amount_unit R, String(C) Цена за единицу товара
| > amount R, String(C) Сумма позиции без учета скидки/надбавки
| > fee R, String(C) Сумма позиции с учетом скидки/надбавки
| > count R, F3,3 Количество
| > change_percent R, F3,2 Скидка/надбавка на позицию в процентном выражении
| > change_amount R, String(C) Сумма скидки/надбавки на позицию в денежном выражении
| > tax O, object[] Список налогов для позиции (каждый налог описан ниже)
| | > tax_code O, String Код ставки налога для позиции платежного
| | > tax_percent R, F3,2 Процент налога
| | > tax_amount_unit R, String(C) Сумма налога
| > article O, String Артикул
| > gtin R, String 0 - если GTIN товара отсутствует; в обратном случае значение, которое может содержать от 1 до 14 символов
| > section_number O, integer Номер секции товара

maxLength: 255

minLength: 1
| > section_name O, String Наименование секции товара
| > marking_status[4] R, integer Marking status
| > si_code O, String Код маркировки СИ

maxLength: 256

minLength: 1
| > ukz_code O, String Код УКЗ

maxLength: 64

minLength: 1
| > scan1_code O, String Код маркировки 1

maxLength: 256

minLength: 1
| > scan2_code O, String Код маркировки 2

maxLength: 64

minLength: 1
another_amount_types O, object[] Список иных способов оплаты (каждый способ оплаты описан ниже).
| > type O, String Вид оплаты
| > code O, String Код оплаты
| > amount O, String(C) Сумма
third_part_unp R, String УНП третьего лица
cashier_identificator R, String Идентификатор кассира

maxLength: 16

minLength: 1
cashier_login R, String Логин кассира
amount R, String(C) Сумма позиций с учетом скидки/надбавки по позициям
total_amount R, String(C) Итого к оплате (Сумма к оплате с учётом всех скидок/надбавок: по чеку и по позициям)
change_amount R, String(C) Сумма скидки/надбавки по платежному документу
change_percent R, F3,2 Процент скидки/наценки по платежному документу
change R, String(C) Сдача
discount_amount R, String(C) Сумма скидки
increase_amount R, String(C) Сумма надбавки
total_change_amount R, String(C) Сумма скидки/надбавки по позициям и скидки на чек (итоговая скидка)
document_number R, integer Номер операции
issued_at R, YYYY-MM-DDTHH:MM:SS Дата и время формирования документа
unique_code R, String Уникальный идентификатор платежной операции в разрезе кассы

maxLength: 24

minLength: 1
account_number R, integer Учетный номер кассы
cancel_operation R, object[] Список отмененных операций (каждая операция отмены описана ниже)
| > document_number O, integer Номер операции
| > issued_at O, YYYY-MM-DDTHH:MM:SS Дата и время формирования документа
transaction_rrn R, String Уникальный номер транзакции в банке
epos_uuid_arm R, String Уникальный идентификатор транзакции EPOS АРМ кассира.
with_cash_advance O, boolean
header O, String[] Передается набор строк

maxLength: 64

minLength: 1
footer O, String[] Передается набор строк

maxLength: 64

minLength: 1
operating_mode O, String[] Режим работы торгового объекта, контактные данные (телефон) и другое

Передается набор строк

maxLength: 64

minLength: 1
tax_list R, String[] Итоговая информация об НДС
bank_card_check O, object[] Список банковских чеков
| > bic O, String БИК банка
| > unp O, String УНП
| > terminal_id O, String Идентификатор терминала
| > mercant_id O, String Идентификатор мерчанта
| > transaction_uuid_acquirer_bank O, String UUID транзакции в банке-эквайере
| > transaction_uuid_arm_cashier O, String UUID транзакции в АРМ кассира
| > transaction_rrn R, String Retrieval Reference Number (RRN)
| > card_check_number O, String Контрольный номер карты
| > transaction_type O, String Тип транзакции
| > transaction_status R, String Статус транзакции
| > transaction_status_message O, String Детализация статуса/ошибки
| > processing_response_code O, String Код ответа процессинга
| > masked_card_number O, String Маскированный номер карты
| > payment_system O, String Платёжная система
| > type_card_reader O, String Тип кард-ридера
| > card_application_ID O, String Идентификатор приложения карты (AID)
| > auth_code O, String Код авторизации
| > transaction_datetime O, String Дата и время транзакции
| > transaction_currency O, String Валюта транзакции
| > transaction_amount R, String(C) Сумма транзакции
| > transaction_confirmation_method O, String Метод подтверждения
| > bank_name O, String Название банка-эквайера
| > transaction_crn O, String Customer Reference Number (CRN)
printer_fiscal_error (Ошибки печати фискальных документов) O, object[] Список ошибок печати фискальных документов (каждая ошибка описана ниже)
| > code R, String Код ошибки
v message R, String Сообщение об ошибке
error_send_to_email (Ошибки отправки документов на почту) O, object[] Список ошибок отправки документов на почту (каждая ошибка описана ниже)
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке
printer_bank_error (Ошибки печати банковского чека) O, object[] Список ошибок печати банковских чеков
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке
Примечания:

[4] Статус маркировки товара. Возможные значения:. 0- Нет: si_code, ukz_code, scan1_code, scan2_code (поле Tag - 0, 3, 4); 16- Нет: si_code, ukz_code, scan1_code, scan2_code (поле Tag – 1); 17- Содержит: si_code (поле Tag – 1); 18- Содержит: ukz_code (поле Tag – 1); 19- Содержит: si_code, ukz_code (поле Tag – 1); 20- Содержит: scan1_code (поле Tag – 1); 28- Содержит: scan1_code, scan2_code (поле Tag – 1)

refund

Методические указания к запросу
Если параметр is_call_bank_soft запроса /settings/bankSetting установлен false, вызов банковского ПО осуществлен не будет, массив bank_card_check при оплате картой может заполняться интегратором, для формирования чека в ПКС с возвратом по нескольким банковским картам. Для получения данных для заполнения массива, необходимо осуществить возврат через запрос /bank/refund и сохранить в клиентском приложении тело ответа, для последующего заполнения массива bank_card_check запроса refund. Важное уточнение: суммы внутри массива bank_card_check не валидируются с суммами основного запроса refund не валидируется на стороне Терминального режима, валидация сумм находится на стороне клиентского (управляющего) приложения
Если параметр is_print_second_bank_check запроса /settings/bankSetting установлен false, при вызове возврата на терминале и получении успешного ответа от ПКС, банковский чек(чек для банка) будет печататься в одном экземпляре, а не в двух как при стандартном поведении программы.
Если параметр is_combined_bank_check запроса /settings/bankSetting установлен true, при получении ответа от ПКС, при этом is_call_bank_soft = true (Банковская операция вызывалась на терминале во время запроса), Терминальный режим, в случае наличия не пустого массива bank_card_check будет печатать банковские чеки(чек для клиента) совмещенные с кассовым чеком. Если при этом is_print_second_bank_check установлен false - то банковский чек отдельно от кассового печататься не будет.
Вне зависимости от параметров запроса /settings/bankSetting массив bank_card_check будет передаваться в ответах от Терминального режима (при наличии массива в ответе от ПКС) начиная с версии 1.3.0

Пример запроса

[POST] http://{ip адрес}:(порт)/refund

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
  send_email: "String",
  transaction_rrn: "String",
  request_uid: "String",
  positions: [
    {
      name: "String",
      tag: 0,
      amount_unit: "String",
      amount: "String",
      count: "String(F)",
      article: "String",
      gtin: "String",
      section_number: 0,
      section_name: "String",
      si_code: "String",
      ukz_code: "String",
      scan1_code: "String",
      scan2_code: "String",
    },
  ],
  currency: "String",
  amount: "String",
  card_amount: "String",
  cash_amount: "String",
  another_amount: "String",
  another_amount_types: [
    {
      type: "String",
      code: "String",
      amount: "String",
    },
  ],
  bank_card_check: [
    {
      bic: "String",
      unp: "String",
      terminal_id: "String",
      mercant_id: "String",
      transaction_uuid_acquirer_bank: "String",
      transaction_uuid_arm_cashier: "String",
      transaction_rrn: "String",
      card_check_number: "String",
      transaction_type: "String",
      transaction_status: "String",
      transaction_status_message: "String",
      processing_response_code: "String",
      masked_card_number: "String",
      payment_system: "String",
      type_card_reader: "String",
      card_application_ID: "String",
      auth_code: "String",
      transaction_datetime: "String",
      transaction_currency: "String",
      transaction_amount: "String",
      transaction_confirmation_method: "String",
      bank_name: "String",
      transaction_crn: "String",
    },
  ],
  header: [
    "String"
  ],
  footer: [
    "String"
  ],
}

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

Название поля Обязательность, тип данных Описание
is_print O, boolean Вывод чека на принтер: true -печатать, false – не печатать
send_email O, String Email, на который будет направлен платежный документ
transaction_rrn[5] O, String RRN банковской операции
request_uid R, String Уникальный идентификатор кассовой операции

maxLength: 36

minLength: 1
positions R, object[]
| > name R, String Наименование позиции
| > tag R, integer Метка

Возможные значения: 0 - без GTIN, 1 - GTIN, 3 - услуга, 4 - авансовый способ платежа.
| > amount_unit R, String(C) Цена за единицу товара
| > amount R, String(C) Сумма позиции без учета скидки/надбавки
| > count R, F3,3 Количество
| > article O, String Артикул
| > gtin R, String 0 - если GTIN товара отсутствует; в противном случае значение, которое может содержать от 1 до 14 символов
| > section_number O, integer Номер секции товара

maxLength: 255

minLength: 1
| > section_name O, String Наименование секции товара
| > si_code O, String Код маркировки СИ

maxLength: 256

minLength: 1
| > ukz_code O, String Код УКЗ

maxLength: 64

minLength: 1
| > scan1_code O, String Код маркировки 1

maxLength: 256

minLength: 1
| > scan2_code O, String Код маркировки 2

maxLength: 64

minLength: 1
currency R, String Наименование (код) валюты.
Допустимые значения: [BYN,EUR,USD,RUB]
amount R, String(C) Сумма возврата
card_amount R, String(C) Сумма возврата по безналичному расчету
cash_amount R, String(C) Сумма возврата наличными
another_amount R, String(C) Сумма возврата по безналичному расчету - другими способами расчета
another_amount_types O, object[] Список иных способов оплаты
❗Небходимо указывать в случае, если another_amount ≠ 0.00. Допускается отправка пустого массива []
| > type O, String Вид оплаты
| > code O, String Код оплаты
| > amount O, String(C) Сумма
bank_card_check O, object[] Список банковских чеков
| > bic O, String БИК банка
| > unp O, String УНП
| > terminal_id O, String Идентификатор терминала
| > mercant_id O, String Идентификатор мерчанта
| > transaction_uuid_acquirer_bank O, String UUID транзакции в банке-эквайере
| > transaction_uuid_arm_cashier O, String UUID транзакции в АРМ кассира
| > transaction_rrn R, String Retrieval Reference Number (RRN)
| > card_check_number O, String Контрольный номер карты
| > transaction_type O, String Тип транзакции
| > transaction_status R, String Статус транзакции
| > transaction_status_message O, String Детализация статуса/ошибки
| > processing_response_code O, String Код ответа процессинга
| > masked_card_number O, String Маскированный номер карты
| > payment_system O, String Платёжная система
| > type_card_reader O, String Тип кард-ридера
| > card_application_ID O, String Идентификатор приложения карты (AID)
| > auth_code O, String Код авторизации
| > transaction_datetime O, String Дата и время транзакции
| > transaction_currency O, String Валюта транзакции
| > transaction_amount R, String(C) Сумма транзакции
| > transaction_confirmation_method O, String Метод подтверждения
| > bank_name O, String Название банка-эквайера
| > transaction_crn O, String Customer Reference Number (CRN)
header O, String[] Информация, которая будет напечатана над кассовым документом. Каждая элемент - новая строка на печати.
Максимальная длина: 64
footer O, String[] Информация, которая будет напечатана под кассовым документом.
Максимальная длина: 64
Примечания:

[5] Значение в это поле обязательно передавать, если возврат осуществляется на карту (card_amount ≠ 0).

Ответ

HTTP/1.1 201 Created

{
  request_uid: "String",
  positions: [
    {
      name: "String",
      tag: "integer",
      gtin: "String",
      amount_unit: "float",
      amount: "float",
      count: "float",
      article: "String",
      section_number: "integer",
      section_name: "String",
      marking_status: "integer",
      si_code: "String",
      ukz_code: "String",
      scan1_code: "String",
      scan2_code: "String",
    },
  ],
  currency: "String",
  amount: "float",
  card_amount: "float",
  cash_amount: "float",
  another_amount: "float",
  another_amount_types: [
    {
      type: "String",
      code: "String",
      amount: "float",
    },
  ],
  transaction_rrn: "String",
  header: [
    "String"
  ],
  footer: [
    "String"
  ],
  document_number: "integer",
  issued_at: "String",
  unique_code: "String",
  cashier_identificator: "String",
  cashier_login: "String",
  account_number: "integer",
  bank_card_check: [
    {
      bic: "String",
      unp: "String",
      terminal_id: "String",
      mercant_id: "String",
      transaction_uuid_acquirer_bank: "String",
      transaction_uuid_arm_cashier: "String",
      transaction_rrn: "String",
      card_check_number: "String",
      transaction_type: "String",
      transaction_status: "String",
      transaction_status_message: "String",
      processing_response_code: "String",
      masked_card_number: "String",
      payment_system: "String",
      type_card_reader: "String",
      card_application_ID: "String",
      auth_code: "String",
      transaction_datetime: "String",
      transaction_currency: "String",
      transaction_amount: "String",
      transaction_confirmation_method: "String",
      bank_name: "String",
      transaction_crn: "String",
    },
  ],
  printer_fiscal_error: {
    code: "String",
    message: "String",
  },
  error_send_to_email: {
    code: "String",
    message: "String",
  },
  printer_bank_error: {
    code: "String",
    message: "String",
  },
}

Параметры ответа:

Название поля Обязательность, тип данных Описание
request_uid R, String Уникальный идентификатор кассовой операции

maxLength: 36

minLength: 1
**positions: ** R, object[]
| > name R, String Наименование позиции
| > tag R, integer Метка

Возможные значения: 0-без GTIN, 1-GTIN, 3-услуга, 4 – авансовый способ платежа.
| > amount_unit R, String(C) Цена за единицу товара
| > amount R, String(C) Сумма позиции без учета скидки/надбавки
| > count R, F3,3 Количество
| > article O, String Артикул
| > gtin R, String 0 - если GTIN товара отсутствует; в обратном случае значение,

которое может содержать от 1 до 14 символов
| > section_number O, integer Номер секции товара

maxLength: 255

minLength: 1
| > section_name O, String Наименование секции товара
| > marking_status R, integer Marking status
| > si_code O, String Код маркировки СИ

maxLength: 256

minLength: 1
| > ukz_code O, String Код УКЗ

maxLength: 64

minLength: 1
| > scan1_code O, String Код маркировки 1

maxLength: 256

minLength: 1
| > scan2_code O, String Код маркировки 2

maxLength: 64

minLength: 1
currency R, String Наименование (код) валюты
amount R, String(C) Сумма возврата
card_amount R, String(C) Сумма возврата по безналичному расчету
cash_amount R, String(C) Сумма возврата наличными
another_amount R, String(C) Сумма возврата по безналичному расчету - другими способами расчета
another_amount_types O, object[]
| > type O, String Вид оплаты
| > code O, String Код оплаты
| > amount O, String(C) Сумма
transaction_rrn R, String Уникальный номер транзакции в банке
header O, String[]
footer O, String[]
document_number R, integer Номер операции
issued_at R, String (YYYY-MM-DDTHH:MM:SS) Дата и время формирования документа
unique_code R, String Уникальный идентификатор платежной операции в разрезе кассы

maxLength: 24

minLength: 1
cashier_identificator R, String Идентификатор кассира

maxLength: 16

minLength: 1
account_number R, integer Учетный номер кассы
bank_card_check O, object[] Список банковских чеков
| > bic O, String БИК банка
| > unp O, String УНП
| > terminal_id O, String Идентификатор терминала
| > mercant_id O, String Идентификатор мерчанта
| > transaction_uuid_acquirer_bank O, String UUID транзакции в банке-эквайере
| > transaction_uuid_arm_cashier O, String UUID транзакции в АРМ кассира
| > transaction_rrn R, String Retrieval Reference Number (RRN)
| > card_check_number O, String Контрольный номер карты
| > transaction_type O, String Тип транзакции
| > transaction_status R, String Статус транзакции
| > transaction_status_message O, String Детализация статуса/ошибки
| > processing_response_code O, String Код ответа процессинга
| > masked_card_number O, String Маскированный номер карты
| > payment_system O, String Платёжная система
| > type_card_reader O, String Тип кард-ридера
| > card_application_ID O, String Идентификатор приложения карты (AID)
| > auth_code O, String Код авторизации
| > transaction_datetime O, String Дата и время транзакции
| > transaction_currency O, String Валюта транзакции
| > transaction_amount R, String(C) Сумма транзакции
| > transaction_confirmation_method O, String Метод подтверждения
| > bank_name O, String Название банка-эквайера
| > transaction_crn O, String Customer Reference Number (CRN)
printer_fiscal_error O, object[] Ошибки печати фискальных документов
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке
error_send_to_email O, object[] Ошибки отправки документов на почту
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке
printer_bank_error O, object[] Список ошибок печати банковских чеков
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке

cancelLastDocument

Методические указания к запросу
Если параметр is_call_bank_soft запроса /settings/bankSetting установлен false, вызов банковского ПО осуществлен не будет.
Если параметр is_combined_bank_check запроса /settings/bankSetting установлен true, при получении ответа от ПКС, при этом is_call_bank_soft = true (Банковская операция вызывалась на терминале во время запроса), Терминальный режим, в случае наличия не пустого массива bank_card_check будет печатать банковские чеки(чек для клиента) совмещенные с кассовым чеком. Если при этом is_print_second_bank_check установлен false - то банковский чек отдельно от кассового печататься не будет.
Вне зависимости от параметров запроса /settings/bankSetting массив bank_card_check будет передаваться в ответах от Терминального режима (при наличии массива в ответе от ПКС) начиная с версии 1.3.0

Пример запроса

[POST] http://{ip адрес}:(порт)/cancelLastDocument/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
  request_uid: "String",
}

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

Название поля Обязательность, тип данных Описание
is_print O, boolean Вывод чека на принтер: true -печатать, false – не печатать
request_uid R, String Уникальный идентификатор кассовой операции

maxLength: 36

minLength: 1

Ответ

HTTP/1.1 201 Created

{
  request_uid: "String",
  document_number: 0,
  issued_at: "String",
  unique_code: "String",
  cashier_identificator: "String",
  cashier_login: "String",
  account_number: 0,
  currency: "String",
  amount: "String",
  card_amount: "String",
  cash_amount: "String",
  another_amount_types: [
    {
      type: "String",
      code: "String",
      amount: "String",
    },
  ],
  another_amount: "String",
  positions: [
    {
      name: "String",
      tag: 0,
      amount_unit: "String",
      amount: "String",
      fee: "String",
      count: "String(F)",
      change_percent: "String(F)",
      change_amount: "String",
      tax: {
        tax_code: "String",
        tax_percent: "String(F)",
        tax_amount_unit: "String",
      },
      article: "String",
      gtin: "String",
      section_number: 0,
      section_name: "String",
      marking_status: 0,
      si_code: "String",
      ukz_code: "String",
      scan1_code: "String",
      scan2_code: "String",
    },
  ],
  cancel_doc_number: 0,
  transaction_rrn: "String",
  bank_card_check: [
    {
      bic: "String",
      unp: "String",
      terminal_id: "String",
      mercant_id: "String",
      transaction_uuid_acquirer_bank: "String",
      transaction_uuid_arm_cashier: "String",
      transaction_rrn: "String",
      card_check_number: "String",
      transaction_type: "String",
      transaction_status: "String",
      transaction_status_message: "String",
      processing_response_code: "String",
      masked_card_number: "String",
      payment_system: "String",
      type_card_reader: "String",
      card_application_ID: "String",
      auth_code: "String",
      transaction_datetime: "String",
      transaction_currency: "String",
      transaction_amount: "String",
      transaction_confirmation_method: "String",
      bank_name: "String",
      transaction_crn: "String",
    },
  ],
  printer_fiscal_error: {
    code: "String",
    message: "String",
  },
  error_send_to_email: {
    code: "String",
    message: "String",
  },
  printer_bank_error: {
    code: "String",
    message: "String",
  },
}

Параметры ответа:

Название поля Обязательность, тип данных Описание
request_uid R, String Уникальный идентификатор кассовой операции

maxLength: 36

minLength: 1
document_number R, integer Номер операции
issued_at R, YYYY-MM-DDTHH:MM:SS Дата и время формирования документа
unique_code R, String Уникальный идентификатор платежной операции в разрезе кассы

maxLength: 24

minLength: 1
cashier_identificator R, String Идентификатор кассира

maxLength: 16

minLength: 1
cashier_login R, String Идентификатор кассира
account_number R, integer Учетный номер кассы
currency R, String Наименование (код) валюты
amount R, String(C) Сумма аннулированного документа
card_amount R, String(C) Итого безналичными
cash_amount R, String(C) Итого наличными
another_amount_types O, object[]
| > type O, String Вид оплаты
| > code O, String Код оплаты
| > amount O, String(C) Сумма
another_amount R, String(C) Итого другими способами оплаты
positions R, object[]
| > name R, String Наименование позиции
| > tag R, integer Метка

Возможные значения: 0 - без GTIN, 1 - GTIN, 3 - услуга, 4 - авансовый способ платежа.
| > amount_unit R, String(C) Цена за единицу
| > amount R, String(C) Сумма позиции без учета скидки/надбавки
| > fee R, String(C) Сумма позиции с учетом скидки/надбавки
| > count R, F3,3 Количество
| > change_percent R, F3,2 Сумма скидки/надбавки на позицию в процентном выражении
| > change_amount R, String(C) Сумма скидки/надбавки на позицию в денежном выражении
| > tax O, object[]
| | > tax_code R, String Код ставки налога для позиции платежного документа. (НДС)
| | > tax_percent R, F3,2 Процент налога для позиции платежного документа. (НДС)
| | > tax_amount_unit R, String(C) Сумма налога для позиции платежного документа.
| > article R, String Артикул
| > gtin R, String 0 - если GTIN товара отсутствует; в противном случае значение, которое может содержать от 1 до 14 символов
| > section_number O, integer Номер секции товара

maxLength: 255

minLength: 1
| > section_name O, String Наименование секции товара
| > si_code R, String Код маркировки СИ

maxLength: 256

minLength: 1
| > ukz_code R, String Код УКЗ

maxLength: 64

minLength: 1
| > scan1_code R, String Код маркировки 1

maxLength: 256

minLength: 1
| > scan2_code R, String Код маркировки 2

maxLength: 64

minLength: 1
| > marking_status R, integer Marking_status
cancel_doc_number R, integer Номер аннулированного платежного документа
transaction_rrn R, String RRN банковской операции
bank_card_check O, object[] Список банковских чеков
| > bic O, String БИК банка
| > unp O, String УНП
| > terminal_id O, String Идентификатор терминала
| > mercant_id O, String Идентификатор мерчанта
| > transaction_uuid_acquirer_bank O, String UUID транзакции в банке-эквайере
| > transaction_uuid_arm_cashier O, String UUID транзакции в АРМ кассира
| > transaction_rrn R, String Retrieval Reference Number (RRN)
| > card_check_number O, String Контрольный номер карты
| > transaction_type O, String Тип транзакции
| > transaction_status R, String Статус транзакции
| > transaction_status_message O, String Детализация статуса/ошибки
| > processing_response_code O, String Код ответа процессинга
| > masked_card_number O, String Маскированный номер карты
| > payment_system O, String Платёжная система
| > type_card_reader O, String Тип кард-ридера
| > card_application_ID O, String Идентификатор приложения карты (AID)
| > auth_code O, String Код авторизации
| > transaction_datetime O, String Дата и время транзакции
| > transaction_currency O, String Валюта транзакции
| > transaction_amount R, String(C) Сумма транзакции
| > transaction_confirmation_method O, String Метод подтверждения
| > bank_name O, String Название банка-эквайера
| > transaction_crn O, String Customer Reference Number (CRN)
printer_fiscal_error O, object[] Ошибки печати фискальных документов
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке
error_send_to_email O, object[] Ошибки отправки документов на почту
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке
printer_bank_error O, object[] Список ошибок печати банковских чеков
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке

copyDocument

Пример запроса

[POST] http://{ip адрес}:(порт)/copyDocument/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
  send_email: "String",
  document_number: 0,
  document_type: "String",
}

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

Название поля Обязательность, тип данных Описание
is_print O, boolean Вывод чека на принтер:
true - печатать
false – не печатать
send_email O, String Email для отправки копии документа (разрешено только для типов: receipt и refund)
document_number R, integer Номер документа
document_type R, String Тип документа.
Возможные значения:
receipt - платежный документ
refund - документ возврата
cancel - документ аннулирования
withdraw - документ изъятия
deposit - документ внесения
zreport - Z-отчет

Ответ

HTTP/1.1 201 Created

В зависимости от типа документа

Параметры ответа:

В зависимости от типа документа.

x-report

Пример запроса

[POST] http://{ip адрес}:(порт)/xreport/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
}

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

Название поля Обязательность, тип данных Описание
is_print O, boolean Вывод чека на принтер: true -печатать, false – не печатать

Ответ

HTTP/1.1 200 OK

{
  unp: "String",
  shift_open_datetime: "String",
  issued_at: "String",
  document_number: 0,
  document_count: 0,
  first_receipt_number: 0,
  last_receipt_number: 0,
  first_document_number: 0,
  last_document_number: 0,
  currency_count: 0,
  unique_code: "String",
  parts: [
    {
      currency: "String",
      documents_count: 0,
      amount: "String",
      card_amount: "String",
      cash_amount: "String",
      another_amount: "String",
      another_amount_types: "String",
      refunds_count: 0,
      refunds_amount: "String",
      deposit_count: 0,
      deposit_amount: "String",
      withdraw_count: 0,
      withdraw_amount: "String",
      cash_advance_count: 0,
      cash_advance_amount: "String",
      cancels_count: 0,
      cancels_amount: "String",
      corrections_count: 0,
      corrections_amount: "String",
      unregistred_cancels_count: 0,
      unregistred_cancels_amount: "String",
      marking_codes: {
        si_count: 0,
        si_amount: "String",
        ukz_count: 0,
        ukz_amount: "String",
        refund_si_count: 0,
        refund_ukz_count: 0,
        cancel_si_count: 0,
        cancel_ukz_count: 0,
      },
      additional_info: 0,
      additional_info_data: {
        third_part_data: {
          receipts_count: 0,
          receipts_amount: "String",
          cancels_count: 0,
          cancels_amount: "String",
        },
      },
      section_report: [
        {
          checks: {
            count: 0,
            amount: "String",
            cash_amount: "String",
            card_amount: "String",
            another_amount: "String",
          },
          refunds: {
            count: 0,
            amount: "String",
            cash_amount: "String",
            card_amount: "String",
            another_amount: "String",
          },
          cancels: {
            count: 0,
            amount: "String",
            cash_amount: "String",
            card_amount: "String",
            another_amount: "String",
          },
          section_name: "String",
          section_number: 0,
        },
      ],
    },
  ],
  cashier_identificator: "String",
  cashier_login: "String",
  account_number: 0,
  current_amount: "String",
  cumulative_total: "String",
  printer_fiscal_error: {
    code: "String",
    message: "String",
  },
}

Параметры ответа:

Название поля Обязательность, тип данных Описание
unp R, String УНП
shift_open_datetime R, YYYY-MM-DDTHH:MM:SS Дата и время открытия смены
issued_at R, YYYY-MM-DDTHH:MM:SS Дата и время формирования отчёта
document_number R, integer Порядковый номер X-отчета
document_count R, integer Кол-во платежных документов в отчете
first_receipt_number R, integer Номер первого платежного документа (чека продажи)
last_receipt_number R, integer Номер последнего платежного документа (чека продажи)
first_document_number R, integer Номер первого кассового документа за смену
last_document_number R, integer Номер последнего кассового документа за смену
currency_count R, integer Кол-во валют
unique_code R, String Уникальный идентификатор платежной операции в разрезе кассы
maxLength: 24
minLength: 1
parts (Количество элементов в списке соответствует количеству валют): R, object[]
| > currency R, String Наименование (код) валюты
| > documents_count R, integer Количество платежных документов по валюте
| > amount R, String(C12) Сумма
| > card_amount R, String(C12) Сумма безналичными
| > cash_amount R, String(C12) Сумма наличными
| > another_amount R, String(C12) Итого иными способами оплаты
| > another_amount_types O, object[] Отсутствует в ответе, если нет оплат иными способами
| | > type O, String Вид оплаты
| | > code O, String Код оплаты
| | > amount O, String Сумма
| > refunds_count R, integer Количество возвратов
| > refunds_amount R, String Сумма по возвратам
| > deposit_count R, String(C) Количество внесений
| > deposit_amount R, integer Сумма внесений
| > withdraw_count R, String(C12) Количество изъятий
| > withdraw_amount R, integer Сумма изъятий
| > cash_advance_count R, String(C12) Количество изъятий для выдачи денег держателям платёжных карточек
| > cash_advance_amount R, integer Сумма изъятий для выдачи денег держателям платёжных карточек
| > cancels_count R, String(C12) Количество аннулирований
| > cancels_amount R, integer Сумма аннулирований
| > corrections_count R, String(C12) Количество коррекций
| > corrections_amount R, integer Сумма коррекций
| > unregistred_cancels_count R, String(C12) Количество отмен
| > unregistred_cancels_amount R, integer Сумма отмен
| > ** marking_codes:**
| | > si_count R, integer Количество единиц товаров, маркированных СИ, реализованных за смену
| | > si_amount R, String(C12) Общая сумма продаж товаров, маркированных СИ, реализованных за смену
| | > ukz_count R, integer Количество единиц товаров, маркированных УКЗ, реализованных за смену
| | > ukz_amount R, String(C12) Общая сумма продаж маркированных УКЗ товаров, реализованных за смену
| | > refund_si_count R, integer Количество единиц товаров, маркированных СИ, возвращенных за смену
| | > refund_ukz_count R, integer Количество единиц товаров, маркированных УКЗ, возвращенных за смену
| | > cancel_si_count R, integer Количество единиц товаров, маркированных СИ, аннулированных за смену
| | > cancel_ukz_count R, integer Количество единиц товаров, маркированных УКЗ, аннулированных за смену
| > additional_info R, integer
| > additional_info_data (third_part_data) O (блок отсутствует в ответе, если нет платежей в адрес третьих лиц): O, object[]
| | > receipts_count R, integer Количество платежей в адрес третьих лиц
| | > receipts_amount R, String(C12) Сумма платежей в адрес третьих лиц
| | > cancels_count R, integer Количество аннулирований приемов платежей в адрес третьих лиц
| | > cancels_amount R, String(C12) Сумма аннулирований приемов платежей в адрес третьих лиц
| > section_report R, object[] Отчет по секциям [6]
| | > checks O, object Чеки продажи в заданной секции
| | | > count O, integer Количество чеков продажи
| | | > amount O, String(C10) Сумма чеков продажи
| | | > cash_amount O, String(C10) Сумма оплат наличными по секции
| | | > card_amount O, String(C10) Сумма оплат по карте по секции
| | | > another_amount O, String(C10) Сумма другими способами оплат по секции
| | > refunds O, object Чеки возвратов в заданной секции
| | | > count O, integer Количество чеков возврата
| | | > amount O, String(C10) Сумма чеков возврата
| | | > cash_amount O, String(C10) Сумма возвратов наличными по секции
| | | > card_amount O, String(C10) Сумма возвратов по карте по секции
| | | > another_amount O, String(C10) Сумма другими способами возвратов по секции
| | > cancels O, object Чеки аннулирований в заданной секции
| | | > count O, integer Количество чеков ааннулирований
| | | > amount O, String(C10) Сумма чеков аннулирований
| | | > cash_amount O, String(C10) Сумма аннулирований наличными по секции
| | | > card_amount O, String(C10) Сумма аннулирований по карте по секции
| | | > another_amount O, String(C10) Сумма другими способами аннулирований по секции
| | > section_name O, String Имя секции в ПКС
| | > section_number O, integer Номер секции в пКС
cashier_identificator R, String Идентификатор кассира

maxLength: 16

minLength: 1
cashier_login R, String Логин кассира
account_number R, integer Учетный номер кассы
current_amount R, String(C9) Текущая сумма денежных средств в кассе
cumulative_total R, String(C9) Сумма всех чеков в кассе
printer_fiscal_error O, object[] Ошибки печати фискальных документов
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке

z-report

Пример запроса

[POST] http://{ip адрес}:(порт)/zreport

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
}

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

Название поля Обязательность, тип данных Описание
is_print O, boolean Вывод чека на принтер: true -печатать, false – не печатать

Ответ

HTTP/1.1 201 Created

{
  unp: "String",
  shift_open_datetime: "String",
  issued_at: "String",
  document_number: 0,
  document_count: 0,
  first_receipt_number: 0,
  last_receipt_number: 0,
  first_document_number: 0,
  last_document_number: 0,
  currency_count: 0,
  unique_code: "String",
  parts: [
    {
      currency: "String",
      documents_count: 0,
      amount: "String",
      card_amount: "String",
      cash_amount: "String",
      another_amount: "String",
      another_amount_types: [
        {
          type: "String",
          code: "String",
          amount: "String",
        },
      ],
      refunds_count: 0,
      refunds_amount: "String",
      deposit_count: "String(F)",
      deposit_amount: 0,
      withdraw_count: "String(F)",
      withdraw_amount: 0,
      cash_advance_count: "String(F)",
      cash_advance_amount: 0,
      cancels_count: "String(F)",
      cancels_amount: "String",
      corrections_count: "String(F)",
      corrections_amount: "String",
      unregistred_cancels_count: "String(F)",
      unregistred_cancels_amount: "String",
      marking_codes: {
        si_count: 0,
        si_amount: "String",
        ukz_count: 0,
        ukz_amount: "String",
        refund_si_count: 0,
        refund_ukz_count: 0,
        cancel_si_count: 0,
        cancel_ukz_count: 0,
      },
      additional_info: 0,
      additional_info_data: {
        third_part_data: {
          receipts_count: 0,
          receipts_amount: "String",
          cancels_count: 0,
          cancels_amount: "String",
        },
      },
      section_report: [
        {
          checks: {
            count: 0,
            amount: "String",
            cash_amount: "String",
            card_amount: "String",
            another_amount: "String",
          },
          refunds: {
            count: 0,
            amount: "String",
            cash_amount: "String",
            card_amount: "String",
            another_amount: "String",
          },
          cancels: {
            count: 0,
            amount: "String",
            cash_amount: "String",
            card_amount: "String",
            another_amount: "String",
          },
          section_name: "String",
          section_number: 0,
        },
      ],
    },
  ],
  cashier_identificator: "String",
  cashier_login: "String",
  account_number: 0,
  current_amount: "String",
  cumulative_total: "String",
  printer_fiscal_error: {
    code: "String",
    message: "String",
  },
  printer_bank_error: {
    code: "String",
    message: "String",
  },
}

Параметры ответа:

Название поля Обязательность, тип данных Описание
unp R, String УНП
shift_open_datetime R, YYYY-MM-DDTHH:MM:SS Дата и время открытия смены
issued_at R, YYYY-MM-DDTHH:MM:SS Дата и время формирования отчёта
document_number R, integer Порядковый номер X-отчета
document_count R, integer Кол-во платежных документов в отчете
first_receipt_number R, integer Номер первого платежного документа (чека продажи)
last_receipt_number R, integer Номер последнего платежного документа (чека продажи)
first_document_number R, integer Номер первого кассового документа за смену
last_document_number R, integer Номер последнего кассового документа за смену
currency_count R, integer Кол-во валют
unique_code R, String Уникальный идентификатор платежной операции в разрезе кассы
maxLength: 24
minLength: 1
parts (Количество элемент в списке соответствует количеству валют):
| > currency R, String Наименование (код) валюты
| > documents_count R, integer Количество платежных документов по валюте
| > amount R, String(C12) Сумма
| > card_amount R, String(C12) Сумма безналичными
| > cash_amount R, String(C12) Сумма наличными
| > another_amount R, String(C12) Итого иными способами оплаты
| > another_amount_types O, object[] Отсутствует в ответе, если нет оплат иными способами
| | > type O, String Вид оплаты
| | > code O, String Код оплаты
| | > amount O, String Сумма
| > refunds_count R, integer Количество возвратов
| > refunds_amount R, String Сумма по возвратам
| > deposit_count R, String(C) Количество внесений
| > deposit_amount R, integer Сумма внесений
| > withdraw_count R, String(C12) Количество изъятий
| > withdraw_amount R, integer Сумма изъятий
| > cash_advance_count R, String(C12) Количество изъятий для выдачи денег держателям платёжных карточек
| > cash_advance_amount R, integer Сумма изъятий для выдачи денег держателям платёжных карточек
| > cancels_count R, String(C12) Количество аннулирований
| > cancels_amount R, integer Сумма аннулирований
| > corrections_count R, String(C12) Количество коррекций
| > corrections_amount R, integer Сумма коррекций
| > unregistred_cancels_count R, String(C12) Количество отмен
| > unregistred_cancels_amount R, integer Сумма отмен
| > marking_codes:
| | > si_count R, integer Количество единиц товаров, маркированных СИ, реализованных за смену
| | > si_amount R, String(C12) Общая сумма продаж товаров, маркированных СИ, реализованных за смену
| | > ukz_count R, integer Количество единиц товаров, маркированных УКЗ, реализованных за смену
| | > ukz_amount R, String(C12) Общая сумма продаж маркированных УКЗ товаров, реализованных за смену
| | > refund_si_count R, integer Количество единиц товаров, маркированных СИ, возвращенных за смену
| | > refund_ukz_count R, integer Количество единиц товаров, маркированных УКЗ, возвращенных за смену
| | > cancel_si_count R, integer Количество единиц товаров, маркированных СИ, аннулированных за смену
| | > cancel_ukz_count R, integer Количество единиц товаров, маркированных УКЗ, аннулированных за смену
| > additional_info R, integer
| > additional_info_data (отсутствует в ответе, если нет платежей в адрес третьих лиц): O, object
| | > receipts_count additional_info R, integer Количество платежей в адрес третьих лиц
| | > receipts_amount R, String(C12) Сумма платежей в адрес третьих лиц
| | > cancels_count R, integer Количество аннулирований приемов платежей в адрес третьих лиц
| | > cancels_amount R, String(C12) Сумма аннулирований приемов платежей в адрес третьих лиц
| > section_report R, object[] Отчет по секциям [6]
| | > checks O, object Чеки продажи в заданной секции
| | | > count O, integer Количество чеков продажи
| | | > amount O, String(C10) Сумма чеков продажи
| | | > cash_amount O, String(C10) Сумма оплат наличными по секции
| | | > card_amount O, String(C10) Сумма оплат по карте по секции
| | | > another_amount O, String(C10) Сумма другими способами оплат по секции
| | > refunds O, object Чеки возвратов в заданной секции
| | | > count O, integer Количество чеков возврата
| | | > amount O, String(C10) Сумма чеков возврата
| | | > cash_amount O, String(C10) Сумма возвратов наличными по секции
| | | > card_amount O, String(C10) Сумма возвратов по карте по секции
| | | > another_amount O, String(C10) Сумма другими способами возвратов по секции
| | > cancels O, object Чеки аннулирований в заданной секции
| | | > count O, integer Количество чеков ааннулирований
| | | > amount O, String(C10) Сумма чеков аннулирований
| | | > cash_amount O, String(C10) Сумма аннулирований наличными по секции
| | | > card_amount O, String(C10) Сумма аннулирований по карте по секции
| | | > another_amount O, String(C10) Сумма другими способами аннулирований по секции
| | > section_name O, String Имя секции в ПКС
| | > section_number O, integer Номер секции в пКС
cashier_identificator R, String Идентификатор кассира

maxLength: 16

minLength: 1
cashier_login R, String Логин кассира
account_number R, integer Учетный номер кассы
current_amount R, String(C9) Текущая сумма денежных средств в кассе
cumulative_total R, String(C9) Сумма всех чеков в кассе
printer_fiscal_error O, object[] Ошибки печати фискальных документов
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке
printer_bank_error (Ошибки печати банковского чека) O, object[] Список ошибок печати банковских чеков
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке
Примечание

[6] Отчет по секциям заполняется при отправке section_number в запросах /receipt и /refund, для формирования отчета, в личном кабинете пользователя необходимо создать секции, которые в последсвтиеи и будут отправляться из управляющего приложения. Если номер секции отсутствует в ПКС - то отчет по этой секции сформирован не будет, section_name для отправки не обязателен, т.к. имяя секции будет выбрано из ПКС.

Control Tape

[POST] http://{ip адрес}:(порт)//zreport/controlTape

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  is_print: true,
  document_number: 1
}

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

Название поля Обязательность, тип данных Описание
is_print O, boolean Вывод чека на принтер: true -печатать, false – не печатать
document_number R, int Номер документа z-отчет для получения контрольной ленты по смене

Ответ

{
  zreport_number: 1,
  shift_open_datetime: "String",
  issued_at: "String",
  documents: [
    {
      type_document: "String",
      document_number: 1,
      issued_at: "String",
      total_amount: "String",
      cash_amount: "String",
      card_amount: "String",
      another_amount: "String",
      another_amount_types: [
        {
          type: "String",
          code: "String",
          amount: "String",
        },
      ],
      cashier_identificator: "String",
      unique_code: "String",
    },
  ],
}

Параметры ответа

Название поля Обязательность, тип данных Описание
zreport_number R, integer Номер Z-отчета
shift_open_datetime R, String (YYYY-MM-DDTHH:MM:SS) Дата и время открытия смены
issued_at R, String (YYYY-MM-DDTHH:MM:SS) Дата и время формирования документа
documents R, object[] Список документов, зарегистрированных в смене
| > type_document R, String Тип документа
| > document_number R, integer Номер документа
| > issued_at R, String (YYYY-MM-DDTHH:MM:SS) Дата и время формирования документа
| > total_amount R, String(C9) Общая сумма по документу
| > cash_amount R, String(C9) Сумма наличными
| > card_amount R, String(C9) Сумма оплаты картой
| > another_amount R, String(C9) Сумма иными способами оплаты
| > another_amount_types O, object[] Детализация иных способов оплаты
| | > type R, String Тип оплаты
| | > code R, String Код типа оплаты
| | > amount R, String(C9) Сумма данного типа оплаты
| > cashier_identificator R, String Идентификатор кассира
| > unique_code R, String Уникальный идентификатор документа
printer_fiscal_error O, object[] Ошибки печати фискальных документов
| > code R, String Код ошибки
| > message R, String Сообщение об ошибке

Tariff id (local)

При авторизации программная касса получает идентификатор своего тарифа, этим запросом можно узнать является ли тариф для кассы расширенным. Идентификатор расширенного тарифа для тестовой зоны - 11. Идентификатор расширенного тарифа для прод зоны - 8

Пример запроса

[GET] http://{ip адрес}:(порт)/tariffId/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}

Параметры запроса: отсутствуют

Ответ

{
  id: 0,
}

Параметры ответа

Название поля Тип данных Описание
id integer Идентификатор тарифа для кассы

markChecker markTypes (extended)

Для данного запроса отсутствует параметр is_print

Пример запроса

[POST] http://{ip адрес}:(порт)/markChecker/markTypes/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  codes: [
    'String'
  ],
}

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

Название поля Обязательность, тип данных Описание
codes R, String[] Массив строк, список кодов маркировки для проверки

Ответ

HTTP/1.1 200 OK

{
  codes: [
    {
      code: "String",
      resultTime: 0,
      valid: true,
      found: true,
      markedGoodsStatus: 1,
      status: {
        code: 0,
        operationDate: "String",
        note: "String",
      },
      type: {
        code: 0,
        value: "String",
      },
      group: "String",
      gtin: "String",
      tnved: "String",
      name: "String",
      snomer: "String",
      lotNumber: "String",
      productWeight: "String",
      makeDate: "String",
      expirationDate: "String",
      import: true,
      markMethod: {
        code: "String",
        value: "String",
      },
    },
  ],
}

Параметры ответа:

Название поля Обязательность, тип данных Описание
codes R, object[] Массив, содержащий результаты проверки по каждому КМ
| > code R, String КМ, подлежащий проверке
| > resultTime R, integer Момент времени формирования результата проверки в системе маркировки
| > valid R, boolean Признак подтверждения проверки (форматно-логического контроля) структуры и криптографической защиты КМ:
true – подтверждено;
false – не подтверждено
| > found R, boolean Признак легальности КМ, т.е. подтверждения оператором Республики Беларусь подлинности КМ и наличия сведений в системе маркировки о нанесении или вводе оборот:
true – подтверждено;
false – не подтверждено
| > markedGoodsStatus O, integer Актуальный статус маркированного товара на территории Республики Беларусь:
1 - в обороте
2 - не в обороте
| > status O, object Текущий статус КМ в системе маркировки Республики Беларусь [9]
| | > code O, integer Код статуса
| | > operationDate O, String Дата и время выполнения операции в системе маркировки (установки статуса).
| | > note O, String Наименование статуса
| > type O, object Тип кода [8]
| | > code O, integer Код типа кода
| | > value O, String Наименование типа кода
| > group O, String Код товарной группы [7]
| > gtin O, String GTIN товара
| > tnved O, String Код ТН ВЭД ЕАЭС
| > name O, String Наименование товара.
| > snomer O, String Серия и номер БСО.
| > lotNumber O, String Номер партии
| > productWeight O, String Переменный вес
| > makeDate O, String Дата изготовления (производства).
| > expirationDate O, String Дата истечения срока годности
| > import O, boolean Признак идентификации КМ, эмитированных в странах-членах ЕАЭС (проверка подлинности КМ осуществлялась в информационной системе страны-члена ЕАЭС):
true - подтверждено
| > markMethod O, object Способ маркировки
| | > code O, String Код способа маркировки
| | > value O, String Наименование способа маркировки

[7] shoes - Обувь
milk - Молочная продукция
tires - Шины и покрышки
perfum - Парфюмерия
clothes - Легкая промышленность
photo - Фотоаппараты и лампы-вспышки
ukz - Товары, подлежащие маркировке УКЗ
water - Вода упакованная
leftovers_shoes - Остатки. Обувь
leftovers_tires - Остатки. Шины
leftovers_clothes - Остатки. Товары легкой промышленности
juice - Безалкогольные напитки и соки
animal_feed - Корм для животных
preserves - Консервированная продукция
veterinary_medicines - Лекарственные препараты для ветеринарного применения
dietary_supplements - Биологически активные добавки к пище
oil_fat - Растительные масла и масложировая продукция
grocery - Пищевая продукция (бакалея)
cosmetics - Косметика бытовая химия
caviar - Икра осетровых и икра лососевых
antiseptics - Антисептики и дезинфицирующие средства
bike - Велосипеды и велосипедные рамы

[8] 1 - Знак защиты (17 х 18)
2 - Код агрегации (Datamatrix)
3 - Защищенный материальный носитель (34 х 17)
4 - Защищенный материальный носитель (147 х 99)
5 - Серийный номер
6 - Код агрегации (SSCC)
7 - Код стран ЕАЭС идентификации товара
8 - Знак защиты, содержащий код идентификации (17 х 18)
9 - Защищенный товарный ярлык (64 х 53)
10 - Код РБ идентификации ювелирных изделий
11 - Стикер, содержащий код идентификации (1718)
12 - Код РБ идентификации молочной продукции
13 - Код агрегации (импорт)
14 - Серийный номер для молочной продукции
15 - Серийный номер (Фототовары)
16 - Код стран ЕАЭС идентификации товара (Фототовары)
17 - Унифицированный контрольный знак (18
18)
18 - Стикер, содержащий средство идентификации (18*18)
19 - Знак защиты (18 х 10)
20 - Код РБ идентификации товара (обувь, шины, легкая промышленность)
21 - Защищённый материальный носитель с нанесенным средством идентификации, 28x30 мм
22 - Код РБ идентификации лекарственных препаратов
23 - Средство идентификации лекарственных препаратов на материальном носителе
24 - Код РБ идентификации телефонов и машин вычислительных
25 - Защищенный материальный носитель с нанесенным средством идентификации (25 х 47)
26 - Защищенный материальный носитель с нанесенным средством идентификации (18 х 18)

[9] 0 - Сгенерирован
10 - Заказ кодов
15 - Выдан код
20 - Изготовлен
30 - Валидирован
40 - Подписан РФ
45 - Импортирован
50 - Промаркирован товар
52 - Транзитный товар
55 - Введен в оборот в РБ
60 - Прибыл из-за границы
80 - Реализован в розничной торговле
88 - Реализован. Интернет-торговля
90 - Выбыл за границу
200 - Недействительно. Списан

markChecker gtins (extended)

Для данного запроса отсутствует параметр is_print

Пример запроса

[POST] http://{ip адрес}:(порт)/markChecker/gtins/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  "gtins": [
    "String"
  ]
}

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

Название поля Тип / Обязательность Описание
gtins String[]
(обязательный)
Массив строк, содержащий список GTIN для проверки

Ответ

HTTP/1.1 200 OK

{
  gtins: [
    {
      gtin: "String",
      error_message: "String",
      found: true,
      info: [
        {
          group: "String",
          name: "String",
          is_markable: 0,
        },
      ],
    },
  ],
}

Параметры ответа:

Название поля Тип / Обязательность Описание
gtins object[], (опционально) Массив с результатами проверки по каждому переданному значению GTIN товара
├─ gtin String (обязательно) GTIN товара
├─ error_message String (опционально) Сообщение об ошибке (при наличии)
├─ found boolean (опционально) Статус наличия в системе:
true - найден
false - отсутствует
└─ info object[], (опционально) Результат проверки GTIN. Содержит перечень экземпляров с кратким описанием товаров.

Поля внутри info:

Поле Тип / Обязательность Описание
group String (опционально) Товарная группа [10]
Если не определена — false
name String (опционально) Наименование товара
is_markable integer (опционально) Признак маркировки в РБ:
1 — подлежит маркировке
2 — не подлежит
3 — группа не определена

[10] shoes - Обувь
milk - Молочная продукция
tires - Шины и покрышки
perfum - Парфюмерия
clothes - Легкая промышленность
photo - Фотоаппараты и лампы-вспышки
ukz - Товары, подлежащие маркировке УКЗ
water - Вода упакованная
leftovers_shoes - Остатки. Обувь
leftovers_tires - Остатки. Шины
leftovers_clothes - Остатки. Товары легкой промышленности
juice - Безалкогольные напитки и соки
animal_feed - Корм для животных
preserves - Консервированная продукция
veterinary_medicines - Лекарственные препараты для ветеринарного применения
dietary_supplements - Биологически активные добавки к пище
oil_fat - Растительные масла и масложировая продукция
grocery - Пищевая продукция (бакалея)
cosmetics - Косметика бытовая химия
caviar - Икра осетровых и икра лососевых
antiseptics - Антисептики и дезинфицирующие средства
bike - Велосипеды и велосипедные рамы

EPOS

E-POS от ЕРИП в ПКС «Электронный чек» — это альтернативный способ безналичной оплаты товаров и услуг посредством сканирования клиентом-покупателем сформированного должным образом QR-кода. Он работает с банковскими картами или мобильными приложениями.
Оплата по qr коду может выполнена разными способами:

  • Отдельное приложение;
  • Приложения, встроенные в камеру или мессенджер;
  • Мобильное приложение банка.

Алгоритм проведение кассового платежного документа со способом оплаты E-POS:

  1. Инициировать оплату в сервисе E-POS, создать платежную ссылку. Подробнее.
  2. Предоставить полученную в ответе на запрос ссылку payment_link пользователю в виде QR-кода. Либо предоставить лицевой счет оплаты в системе E-POS personal_account.
  3. Дождаться проведение оплаты покупателем.
  4. Сформировать кассовый платежный документ. Подробнее.
    ❗ Обязательно передать в поле epos_uuid_arm значение request_uid с которым была инициирована оплата в сервисе E-POS (пункт 1).
    Для проверки статуса платежа можно использовать запрос EPOS status by uid.
  5. Получить информацию о платеже в системе E-POS Подробнее.

Services

Получение списка услуг и торговых точек по id производителя услуг. Для данного запроса отсутствует параметр is_print

Метод: GET
URL: http://{ip адрес}:{порт}/epos/services/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}

Ответ

HTTP/1.1 200 OK

{
  "services": [
    {
      "id": 0,
      "name": "String"
    }
  ],
  "retail_outlets": [
    {
      "id": 0,
      "address": "String",
      "name": "String"
    }
  ]
}
Параметр Тип Обязательный Описание
services object[] нет Услуги
retail_outlets object[] нет РТТ

Объект услуги (services)

Параметр Тип Обязательный Описание
id integer нет идентификатор услуги в системе EPOS
name String да наименование услуги

Объект розничной точки (retail_outlets)

Параметр Тип Обязательный Описание
id integer нет ID РТТ в системе EPOS
address String нет адрес РТТ
name String нет имя РТТ

Create payment link

Создание платежной ссылки предназначено для инициализации оплаты в сервисе E-POS. Для данного запроса отсутствует параметр is_print

Метод: POST
URL: http://{ip адрес}:{порт}/epos/createPaymentLink/

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{
  "request_uid": "String",
  "amount": "String",
  // "25.00"
  "service_id": 0,
  "retail_outlet_id": 0
}
Параметр Тип Обязательный Описание
request_uid String да ID запроса АРМ кассира в разрезе кассы.
⚠️Строка строго в формате UUIDv4
amount String да Сумма к оплате
service_id String нет Идентификатор услуги в системе E-POS
retail_outlet_id String нет Идентификатор РТТ в системе E-POS

Ответ

HTTP/1.1 201 Created

{
  "request_uid": "String",
  "payment_link": "String",
  "personal_account": "String",
  "status": 0
}

Параметры ответа

Параметр Тип Обязательный Описание
request_uid String да ID запроса АРМ кассира в разрезе кассы
payment_link String да Платежная ссылка
personal_account String да Лицевой счет оплаты в системе E-POS
status integer нет Статус:
0 — Оплата не начата
1 — Оплата в процессе
2 — Оплата прошла
3 — Отмена оплаты

Epos status by uid

Запрос предназначен для повторного получения платежной ссылки по request_uid запроса на создание платежной ссылки. Для данного запроса отсутствует параметр is_print

Метод: GET
URL: http://{ip адрес}:{порт}/epos/infoStatusByUid?request_uid={request_uid}

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}
Параметр Тип Обязательный Описание
request_uid
query
String да ID запроса АРМ кассира в разрезе кассы.
⚠️Примечание: значение из запроса Create payment link

Ответ

HTTP/1.1 200 Ok

{
  "request_uid": "String",
  "payment_link": "String",
  "personal_account": "String",
  "status": 0
}

Параметры ответа

Параметр Тип Обязательный Описание
request_uid String да ID запроса АРМ кассира в разрезе кассы
payment_link String да Платежная ссылка
personal_account String да Лицевой счет оплаты в системе E-POS
status integer нет Статус:
0 — Оплата не начата
1 — Оплата в процессе
2 — Оплата прошла
3 — Отмена оплаты

Epos payment info by uid

Запрос возвращает информацию о платеже E-POS.
❗Важно. Запрос успешно пройдет только после создания платежного документа (чека) с указанным request_uid в поле epos_uuid_arm. Для данного запроса отсутствует параметр is_print

Метод: GET
URL: http://{ip адрес}:{порт}/epos/infoPaymentByUid?request_uid={request_uid}

Headers
{
  "Connection": "keep-alive",
  "Content-Type": "application/json; charset=utf-8"
}
{}
Параметр Тип Обязательный Описание
request_uid
query
String да ID запроса АРМ кассира в разрезе кассы.
⚠️ Значение из запроса Create payment link

Ответ

HTTP/1.1 200 Ok

{
  "id": 0,
  "epos_uuid_arm": "String",
  "unique_code": "String",
  "service_name": "String",
  "personal_account": "String",
  "date": "2025-09-22",
  "erip_transaction_id": 0,
  "epos_transaction_id": 0,
  "amount": "String",
  "state": 0
}

Параметры ответа

Параметр Тип Обязательный Описание
id integer да идентификатор платежа в системе E-POS
epos_uuid_arm String да Уникальный идентификатор транзакции EPOS АРМ кассира
unique_code String да UUID запроса платежной ссылки
service_name String да Наименование услуги
personal_account String да № счёта
date String нет Дата и время
erip_transaction_id integer да Номер операции в ЕРИП
epos_transaction_id integer да Номер операции в EPOS
amount String да Сумма оплаты
state integer нет Статус:
0 — Оплата не начата
1 — Оплата в процессе
2 — Оплата прошла
3 — Отмена оплаты

Меню администратора

Пароль для входа в меню администратора: 845230

Поддерживаемые устройства

Название Устройства Банковское ПО
1 . Nexgo N3 GTPOS
2. Nexgo N5 GTPOS
3. Nexgo N86 GTPOS
4. PAX 930 CAPS
5. PAX 930 RTX (10/12 Android) CAPS
6. PAX 930 RTX (10 Android) GTPOS
7. Sunmi P1 ZPos Card
8. Sunmi P2 (7/11 Android) ZPos Card
9. Sunmi P2 Pro ZPos Card
10. Feitian F20 PsAPOS
11. Feitian F20 GTPOS
12. PAX A8500 CAPS
13. Nexgo ST-20 GTPOS
14. Aisino A90 (10 Android) LAN 4 TAP
15. Appolo Night (10 Android) GTPOS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment