Интеграции

API Complex

Cloud API

Сценарий работы с устройством, арендованном в «облачном» сервисе.

Аннотация. Документ описывает сценарий использования протокола при работе с устройствами, арендованными в «облачном» сервисе

1. Сценарий

Для выполнения запросов на устройстве, подключённом к «облачному» сервису, необходимо скопировать из личного кабинета TOKEN предприятия, после чего выполнять запрос, описанный в данном документе.
Запрос необходимо выполнить методом POST по адресу:
https://kkt.interkassa.online/fr/api/v2/Complex
При выполнении запроса необходимо предоставить идентификатор (TOKEN) предприятия.
Управление сменами осуществляется автоматически. Смена автоматически откроется, при поступлении первого документа, и в дальнейшем будет автоматически пере открываться по мере необходимости.

2. Типы значений

В описании запросов используются следующие типы значений:
uint8 — беззнаковое целое длиной 8 бит;
uint16 — беззнаковое целое длиной 16 бит;
uint32 — беззнаковое целое длиной 32 бита;
uint64 — беззнаковое целое длиной 64 бита;
string — строка;
Money — беззнаковое целое длиной 64 бита, значение указывается в копейках;
Quantity — беззнаковое целое длиной 64 бита, значение указывается в тысячных долях;
date — дата (см. п. 2.1);
time — время (см. п. 2.1);
datetime — дата и время (см. п. 2.1);
array of uint8 — массив из значений указанного типа, строка в кодировке Base64;
<N> тип — массив из N значений указанного типа.

2.1. Дата и время

Даты передаются и возвращаются в виде:
{
    "Day": 28,
    "Month": 2,
    "Year": 17
}
Где:
Day (uint8): день,
• Month (uint8): месяц, • Year (uint8): год.
Время передаётся и возвращается в виде:
{
    "Hour": 13,
    "Minute": 49,
    "Second": 32
}
Где:
• Hour (uint8): количество часов
• Minute (uint8): количество минут
• Second (uint8): количество секунду
Значение комбинированного поля дата и время формируется следующим образом:
{
    "Date": {
        "Day": 28,
        "Month": 2,
        "Year": 17
    },
    "Time": {
        "Hour": 13,
        "Minute": 49,
        "Second": 32
    }
}

3. Полный список полей команды Complex

Поля запроса:
• Group (string): Идентификатор предприятия. Можно получить в личном кабинете.
• Device (string, обязательное): Должно иметь значение auto.
• RequestId (string, обязательное): Уникальный идентификатор запроса.
• ClientId (string): Идентификатор клиента. Идентификатор клиента удобно использовать, если у вас несколько сайтов и значение поля RequestId может иметь одинаковое значение.
• DocumentType (uint8, обязательное): Тип чека (см. табл. 1).
• Cash (Money): Сумма оплаты наличными. Если сумма равна нулю, то это поле можно опустить.
• NonCash (3 Money, обязательное): Массив из 3-х элементов с суммами оплат 3-х различных типов. Разделение по типам (например: Visa, MasterCard, Мир) используется исключительно для внутреннего учёта пользователя устройства. Если разбиение не требуется, то можно передавать в виде [1000, 0, 0].
• AdvancePayment (Money): Сумма оплаты предоплатой (зачётом аванса). Если сумма равна нулю, то это поле можно опустить.
• Credit (Money): Сумма оплаты постоплатой (в кредит). Если сумма равна нулю, то это поле можно опустить.
• Consideration (Money): Сумма оплаты встречным предоставлением. Если сумма равна нулю, то это поле можно опустить.
• TaxMode (uint8): Применяемая в чеке система налогообложения (см. табл. 3). Если при регистрации устройства в ФНС было выбрано более одного режима налогообложения, то в поле TaxMode необходимо указать, к какой системе относится данный чек (см. табл. 3). Если была выбрана одна система, то это поле можно опустить.
• PhoneOrEmail (string): Телефон или электронный адрес покупателя. Телефон передаётся в формате «7XXXXXXXXXX» или «7-XXX-XXX-XX-XX».
• Place (string): Место расчётов. Если при регистрации кассы данный параметр не задан, его нужно передавать в каждом чеке.
• MaxDocumentsInTurn (uint16): Максимальное количество документов в одной смене.
• FullResponse (bool): Признак получения полного ответа. (true — получение полного ответа по всем командам, из которого строится запрос, аналогичный ответу команды Batch; false — получение сокращённого ответа)
• PaymentAgentModes (uint8, 1057): Режим агента для документа (см. табл. 5). Обратите внимание, что данное поле является битовой маской. В этом поле можно указать режим агента, который будет распространён на все записи в документе.
• UserRequisite (Структура с дополнительным реквизитом пользователя, тег 1084): Может включаться в состав чека с учётом особенностей сферы деятельности, в которой осуществляются расчёты.
– Title (string, тег 1085): Заголовок дополнительного реквизита пользователя
– Value (string, тег 1086): Значение дополнительного реквизита пользователя
• Person (string, тег 1021): Кассир
• PersonINN (string, тег 1203): ИНН кассира
• TransferOperatorData (Данные оператора перевода):
– Phones (array of string, тег 1075): Телефоны оператора перевода. Телефон передаётся в формате «7XXXXXXXXXX» или «7-XXX-XXX-XX-XX». – Name (string, тег 1026): Наименование оператора перевода.
– Address (string, тег 1005): Адрес оператора перевода. – INN (string, тег 1016): ИНН оператора перевода.
• GetPaymentOperatorData (Данные оператора по приёму платежей):
– Phones (array of string, тег 1074): Телефоны оператора по приёму платежей.
Телефон передаётся в формате «7XXXXXXXXXX» или «7-XXX-XXX-XX-XX».
• AgentData (Данные платёжного агент):
– Operation (string, тег 1044): Операция платёжного агента.
– Phones (array of string, тег 1073): Телефоны платёжного агента. Телефон передаётся в формате «7XXXXXXXXXX» или «7-XXX-XXX-XX-XX».
• ProviderData (Данные поставщика, тег 1224): – Phones (array of string, тег 1171): Телефоны поставщика. Телефон передаётся в формате «7XXXXXXXXXX» или «7-XXX-XXX-XX-XX».
• CustomerName (string, тег 1227): Покупатель (клиент)
• CustomerINN (string, тег 1228): ИНН покупателя (клиента)
• Lines (Массив товарных позиций, обязательное):
– Qty (Quantity, обязательное): Количество. Количество указывается в тысячных долях, т.о если необходимо передать количество, например, 2,5 килограмма то в параметре следует указать 2500 (2,5 · 1000=2500).
– Price (Money, обязательное): Цена. Цена указывается в копейках. – PayAttribute (uint8): Признак способа расчёта (см. табл. 4).
– TaxId (uint8, обязательное): Код налога (1 – 6) (см. табл. 2). В примере ниже «НДС 20%».
– Description (string, обязательное): Наименование товарной позиции. Не может быть пустым.
– PayAttribute (uint8, тег 1214): Признак способа расчета (см таб. 4)
– LineAttribute (uint8, тег 1212): Признак предмета расчета (см таб. 6)
– AgentModes (uint8, тег 1222 ): Признак агента по предмету расчета (см таб. 5)
– TransferOperatorData (Данные агента, тег 1223):
▪ Phone (string, тег 1075 ): Телефон оператора перевода.
▪ Name (string, тег 1026 ): Наименование оператора перевода
▪ Address (string, тег 1005 ): Адрес оператора перевода
▪ INN (string, тег 1016 ): ИНН оператора перевода
– GetPaymentOperatorData (Данные агента, раздел «Оператор по приёму платежей», тег 1223):
▪ Phone (string, тег 1074): Телефон оператора по приёму платежей. Телефон передаётся в формате «7XXXXXXXXXX» или «7-XXX-XXX-XX-XX».
– AgentData (Данные агента, раздел «Платёжный агент», тег 1223):
▪ Operation (string, тег 1044): Операция платёжного агента.
▪ Phone (string, тег 1073): Телефон платёжного агента. Телефон передаётся в формате «7XXXXXXXXXX» или «7-XXX-XXX-XX-XX».
– ProviderData (Данные поставщика, тег 1224):
▪ Phone (string, тег 1171): Телефон поставщика. Телефон передаётся в формате «7XXXXXXXXXX» или «7-XXX-XXX-XX-XX».
▪ Name (string, тег 1225): Наименование поставщика.
▪ INN (string, тег 1226): ИНН поставщика. ИНН поставщика формируется в значение тега 1226, которых входит в состав тега 1059 напрямую. В команде он указан в составе структуры «Данные поставщика» исключительно для группировки всех данных по поставщику в единой структуре.
– Excise (Money, тег 1229): Акциз
– CountryOfOrigin (string, тег 1230): Код страны происхождения товара
– NumberOfCustomsDeclaration (string, тег 1231): Номер таможенной декларации
– CGNRaw (string, тег 1162): Код товарной номенклатуры. HEX-строка
– AdditionalRequisite (string, тег 1191): Дополнительный реквизит предмета расчёта. Формат данных определяется ФНС России.
Сумма всех безналичных оплат (NonCash+AdvancePayment+Credit+Consideration) должна быть равна итогу чека, в противном случае устройство ответит ошибкой 69 или 77.
Следует обратить внимание на то, что в строках, передаваемых как значения полей Description, PhoneOrEmail и Place не должно быть символов, которые нельзя представить в кодировке CP866, т.к. эти данных сохраняются в памяти фискального накопителя, который работает в кодировке CP866.
Поля ответа:
• Device (Идентификация устройства, обработавшего запрос):
– Name (string): Заводской номер устройства
Response (Результат выполнения команды Complex):
– Error (uint8): Код ошибки (см. п. 8)
– ErrorMessages (array of string): Список сообщений, сформированных устройством при обработке запроса.
• Change (Money): Сдача.
• Date (datetime): Дата и время формирований документа.
• DeviceRegistrationNumber (string): Регистрационный номер устройства.
• DeviceSerialNumber (string): Заводской номер устройства.
• FNSerialNumber (string): Номер фискального накопителя, в котором сформирован документ.
• FiscalDocNumber (uint32): Номер фискального документа.
• FiscalSign (uint32): Фискальный признак документа.
• GrandTotal (Money): Итог чека.
• QR (string): QR-код чека.
Параметр Тип документа
0 Приход
1 Расход
2 Возврат прихода
3 Возврат расхода

Таблица 1. Типы документов

Код Значение по умолчанию
1 НДС 20%
2 НДС 10%
3 НДС 0%
4 Без налога
5 Ставка 20/120
6 Ставка 10/110

Таблица 2. Налоги

Значение Тип системы налогообложения
1 Общая
2 Упрощённая доход
4 Упрощённая доход минус расход
16 Единый сельскохозяйственный налог
32 Патентная система налогообложения

Таблица 3. Режим налогообложения

Признак Перечень оснований для присвоения реквизиту «признак способа расчёта» соответствующего значения реквизита
Не задан Для индивидуальных предпринимателей, являющихся налогоплательщиками, применяющими патентную систему налогообложения и упрощённую систему налогообложения, а также индивидуальных предпринимателей, применяющих систему налогообложения для сельскохозяйственных товаропроизводителей, систему налогообложения в виде единого налога на вменённый доход для отдельных видов деятельности при осуществлении видов предпринимательской деятельности, установленных пунктом 2 статьи 346.26 Налогового кодекса Российской Федерации, за исключением индивидуальных предпринимателей, осуществляющих торговлю подакцизными товарами, требование об обязательном включении в состав кассового чека и БСО реквизита применяется с 1 февраля 2021 года. Поле PayAttribute можно опустить.
1 Полная предварительная оплата до момента передачи предмета расчёта
2 Частичная предварительная оплата до момента передачи предмета расчёта
3 Аванс
4 Полная оплата, в том числе с учётом аванса (предварительной оплаты) в момент передачи предмета расчёта
5 Частичная оплата предмета расчёта в момент его передачи с последующей оплатой в кредит
6 Передача предмета расчёта без его оплаты в момент его передачи с последующей оплатой в кредит
7 Оплата предмета расчёта после его передачи с оплатой в кредит (оплата кредита). Этот признак должен быть единственным в документе и документ с этим признаком может содержать только одну строку.

Таблица 4. Признак способа расчёта

Значение Основание для присвоения кода реквизиту
1 Оказание услуг покупателю (клиенту) пользователем, являющимся банковским платёжным агентом
2 Оказание услуг покупателю (клиенту) пользователем, являющимся банковским платёжным субагентом
4 Оказание услуг покупателю (клиенту) пользователем, являющимся платёжным агентом
8 Оказание услуг покупателю (клиенту) пользователем, являющимся платёжным субагентом
16 Осуществление расчёта с покупателем (клиентом) пользователем, являющимся поверенным
32 Осуществление расчёта с покупателем (клиентом) пользователем, являющимся комиссионером
64 Осуществление расчёта с покупателем (клиентом) пользователем, являющимся агентом и не являющимся банковским платёжным агентом (субагентом), платёжным агентом (субагентом), поверенным, комиссионером

Таблица 5: Признак агента

Признак Поле Description содержит сведения:
Не задан Значение признака не важно
1 товар, за исключением подакцизного товара (наименование и иные сведения, описывающие товар)
2 подакцизный товар (наименование и иные сведения, описывающие товар)
3 работа (наименование и иные сведения, описывающие работу)
4 услуга (наименование и иные сведения, описывающие услугу)
5 приём ставок при осуществлении деятельности по проведению азартных игр
6 выплата денежных средств в виде выигрыша при осуществлении деятельности по проведению азартных игр
7 приём денежных средств при реализации лотерейных билетов, электронных лотерейных билетов, приёме лотерейных ставок при осуществлении деятельности по проведению лотерей
8 выплата денежных средств в виде выигрыша при осуществлении деятельности по проведению лотерей
9 предоставление прав на использование результатов интеллектуальной деятельности или средств индивидуализации
10 аванс, задаток, предоплата, кредит, взнос в счёт оплаты, пеня, штраф, вознаграждение, бонус
11 вознаграждение пользователя, являющегося платёжным агентом (субагентом), банковским платёжным агентом (субагентом), комиссионером, поверенным или иным агентом
12 предмет расчёта, состоящем из предметов, каждому из которых может быть присвоено значение от «1» до «11»
13 предмет расчёта, не относящийся к предметам расчёта, которым может быть присвоено значение от «1» до «12» и от «14» до «18»
14 передача имущественных прав
15 внереализационный доход
16 сумма расходов, уменьшающих сумму налога (авансовых платежей) в соответствии с пунктом 3.1 статьи 346.21 Налогового кодекса Российской Федерации
17 сумма уплаченного торгового сбора
18 курортный сбор
19 залог

Таблица 6: Признак предмета расчёта

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

{
    "Device": "auto",
    "ClientId": "<идентификатор клиента>",
    "Password": 1,
    "RequestId": "<уникальный идентификатор запроса>", 
    "Lines": 
        [ 
            {
                "Qty": 2500,
                "Price": 10000,
                "PayAttribute": 4,
                "TaxId": 1,
                "Description": "Булочка с маком"
            },
            {
                "Qty": 500,
                "Price": 200000,
                "PayAttribute": 4,
                "TaxId": 2,
                "Description": "Икра чёрная, баклажанная" 
            }
        ],
    "NonCash": [ 125000, 0, 0 ],
    "TaxMode": 1,
    "PhoneOrEmail": "user@example.com",
    "Place": "www.example.com",
    "FullResponse": false
}

5. Пример ответа

Такой ответ будет выдан, если поле FullResponse имеет значение false.
{
    "RequestId": "D35",
    "ClientId": "",
    "Path": "/fr/api/v2/Complex", 
    "Response": 
        {
            "Error": 0
        },
    "FiscalDocNumber": 31,
    "DocNumber": 5,
    "Date": 
        {
            "Date": 
                {
                    "Day": 15,
                    "Month": 7,
                    "Year": 23
                },
            "Time": 
                {
                    "Hour": 14,
                    "Minute": 38,
                    "Second": 27
                }
        },
    "GrandTotal": 125000,
    "FiscalSign": 1879546968, 
    "DocumentType": 0,
    "QR": "t=20170715T1438&s=1250.00&fn=9999078900006825&i=31&fp=1879546968&n=1",
    "FNSerialNumber": "9999078900006825",
    "DeviceSerialNumber": "00000000381001017439",
    "DeviceRegistrationNumber": "3949620073015105"
}
Поле Error (см. п. 8) со значением 0, показывает, что команда была успешно выполнена и в фискальном накопителе был сформирован новый документ.
Если необходимо получить информацию об этом документе, то необходимо в поле FullResponse передать значение true: в таком случае будет сформирован ответ, который будет включать полную информацию о сформированном в устройстве фискальном документе, включая его содержимое, хранящееся в фискальном накопителе, а так же текст чека, который бы распечатало устройство, если бы к нему был подключён принтер. Структура ответа показана в описании команды CloseDocument в документе «Протокол взаимодействия...».

6. Пример кода на PHP

<?php
    $url = "https://kkt.interkassa.online/fr/api/v2/Complex";
    // Базовая структура запроса
    $datas = array(
        // Всегда должно быть "auto"
        "Device" => "auto",
        "Group" => "d4b15d86-5feb-11e7-82ef-00155d00c805", // указан тестовый Token
        'RequestId' => uniqid(),
        "Lines" => array(),
        // Всегда должен быть массив из 3-х элементов. 
        // 1-й содежрит сумму оплаты элетронными (безналичными) 
        // оставшиеся 2 должны быть заполнены нулями.
        // Сумма всех элементов массива должна быть
        // в точности равна итогу чека
        "NonCash" => array(30000, 0, 0),
        // Указываем код СНО,
        "TaxMode" => 1,
        "PhoneOrEmail" => "info@interkassa.online",
    );
    // Товар 1: 1 * 100.00 = 100.00
    $datas['Lines'][]=array(
        // Количество передается в тысячных долях 
        // например:
        // 2.5 кг -> 2.5 * 1000 = 2500
        // 42 шт. -> 42 * 1000 = 42000
        // 500 табл. -> 500 * 1000 = 500000
        // 0.5 упак. -> 0.5 * 1000 = 500 // 1 шт. -> 1 * 1000 = 1000
        "Qty" => 1000, 
        // Цена в копейках
        "Price" => 10000,
        "PayAttribute" => 4,
        "TaxId" => 1,
        "Description"=> 'Тестовый товар 1',
    );
    // Товар 2: 2 * 100.00 = 200.00
    $datas['Lines'][]=array(
        "Qty" => 2000,
        "Price" => 10000,
        "PayAttribute" => 4,
        "TaxId" => 1,
        "Description"=> 'Тестовый товар 2',
    );
    $mydatas = json_encode($datas);
    var_Export($mydatas);
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_HEADER, false); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $mydatas);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_URL,$url);
    $json_response = curl_exec($curl); 
    print "json_response: $json_response\n";
    $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); var_dump($status);
    $lastError = curl_error($curl); 
    print "lastError :$lastError\n"; 
    print "Status :$status\n"; 
    curl_close($curl);
    $response = json_decode($json_response); 
    var_dump($response);
?>

7. Ошибки «облачного» сервиса

При ошибках, возникающих при работе «облачного» сервиса возвращается ошибка HTTP с номеров 500 и структура, содержащая поля: FCEError, ErrorDescription и Device, Fatal.
Поле FCEError содержит код ошибка из таблицы 5.
Поле ErrorDescription содержит описание ошибки или дополнительную информацию.
Поле Device содержит информацию об устройстве с которым связана ошибка.
Поле Fatal со значением true показывает, что повторное выполнение запроса приведёт к ошибке.
Код Описание
1 Ошибка чтения запроса
2 Ошибка распознавания JSON
3 Отсутствует поле Device
4 Отсутствует поле Duration или QueueLen
5 Нет подходящих устройств (согласной выбранной стратегии)
6 Ошибка отправки запроса устройству
7 Значение поля Device"auto" допустимо только в пакетных командах
8 Неправильно имя (заводской номер) или адрес устройства
9 Неправильный адрес устройства
10 Неправильное имя (заводской номер) устройства
12 Ошибка активации устройства
13 Устройство уже существует
14 Устройство не активировано
15 Неправильно сформированный пароль устройства
16 Ошибка распознавания JSON ответа
17 Отсутствует поле RequestId
18 Устройство занято
19 Ошибка кэша сервера
20 Ошибка очереди асинхронных запросов
21 Поле Callback допустимо только в командах Batch и Complex
24 Запрос в процессе обработки

Таблица 5: Ошибки «облачного» сервиса

7.1. Ошибка чтения запроса

Сервер не смог прочитать тело запроса, пришедшего от клиента. Необходимо проверить, правильно ли указана длина запроса в заголовке.

7.2. Ошибка распознавания JSON

Сервер не смог правильно преобразовать JSON в свои внутренние структуры данных. Необходимо проверить правильность переданного JSON, а так же соответствие типов полей сервера указанным в документации.

7.3. Нет подходящих устройств (согласной выбранной стратегии)

Сервер попытался найти подходящее устройство за TryCount попыток. Необходимо изменить условия стратегии либо увеличить значение поля TryCount.

7.4. Ошибка распознавания JSON ответа

От устройства был получен ответ, который не содержит корректный JSON. При получении этой ошибки сервер переведёт устройство в неактивное состояние.

7.5. Устройство занято

Было выбрано устройство, которое получило другой запрос раньше, чем данный. После ожидания WaitForFree секунд, сервер вернёт ошибку «Устройство занято».

8. Ошибки устройства

Код Описание
1 Неизвестная команда ФН
2 Состояние ФН не соответствует присланной команде
3 Ошибка ФН
4 Ошибка контрольной суммы команды ФН
5 Закончен срок эксплуатации ФН
6 Архив ФН переполнен
7 Дата и время не соответствую логике работы ФН
8 Запрошенные данные отсутствуют в архиве ФН
9 Некорректные параметры команды ФН
16 Размер передаваемых данных превысил допустимый
17 Нет транспортного соединения с ОФД
18 Исчерпан ресурс криптографического сопроцессора ФН. Требуется закрыть фискальный режим
20 Ресурс для хранения документов для ОФД исчерпан
21 Исчерпан ресурс ожидания хранения данных в ФН
22 Продолжительность смены долее 24 часов
23 Неверная разница во времени между 2 операциями (более 5 минут)
32 Сообщение от ОФД не может быть принято
40 Ничего важного не изменилось, перерегистрация не нужна
41 ИНН и регистрационный номер не должны меняться
51 Параметр команды содержит неверные данные
52 Отсутствуют данные для команды
55 Команда не реализована
57 Внутренняя ошибка устройство
60 Смена открыта
61 Смена не открыта
69 Сумма всех оплат меньше итога чека
70 Не хватает наличности в кассе
73 Неверный тип документа для данной команды
74 Чек открыт
77 Сумма безналичных видов оплаты больше итога чека
79 Неверный пароль для данной команды
80 Данные печатаются
85 Чек закрыт
90 Скидка больше итога по строке
94 Неверная команда
95 Сторно больше итога чека
109 Не хватает оборота по налогу
114 Команда не допустима в этом подрежиме
115 Команда не допустима в этом состоянии устройства
124 Ошибочная дата
125 Неверно сформированная дата
142 Нулевой итог чека
192 Ожидание подтверждения даты
196 Номер смены в ФН не соответствует номеру смены в устройстве
200 Тайм-аут принтера
207 Неправильная дата/время
208 Документ не содержит товарных позиций
238 Номер группы, пришедший от сервера FCE не соответствует группе устройства
239 Истёк срок аренды устройства
240 Ошибка при выполнении комплексной команды (см. п. 3)
241 Неизвестная команда в пакете
242 Пустой запрос
243 Отсутствует идентификатор запроса RequestId
244 Ошибка при конвертации в JSON
245 Отсутствует идентификатор пакетного запроса RequestId
246 Ошибка при конвертации из JSON
247 Несуществующая смена
248 Изменены регистрационные параметры
249 Ошибка транспортного уровня при получении данных из архива ФН
250 Основная плата устройства не отвечает
252 Неверная контрольная сумма файла
253 Прочие ошибки принтера
254 Принтер в оффлайне
255 Фатальная ошибка устройства

Таблица 6: Коды ошибок устройства

Ниже будут описаны некоторые из ошибок более подробно.

8.1. Параметр команды содержит неверные данные (51)

1. Ошибка при преобразовании строковых данных из кодировки UTF-8 в кодировку Windows-1251.
2. Значение реквизита «признак способа расчёта» отличается от перечисленных в табл. 4 или не соответствует условиям изложенным там же.
3. Код налога выходит за пределы диапазона 1 ... 6.
4. В команде SetTableField тип поля Value не соответствует значения поля ValueType.
5. Параметр «Применяемая в документе (чеке) система налогообложения» имеет более одного установленного бита, причём этот бит должен один из тех, которые были указаны при регистрации.
6. Строка содержит символы, недопустимые в кодировке CP866.
7. Пустое наименование товарной позиции.

8.2. Внутренняя ошибка устройства (57)

API