Pangaea version v2.X.X
https://api.kassavoblake.com/v2
Abstract
Сервис позволяет фискализировать чеки, беря на себя обязанность коммуникации с кассами, балансировки нагрузки, обработки очереди чеков, взаимодействия с ОФД, кодирования ФФД, а также имеет множество проверок корректности отправляемых данных
Cashbox Groups
Группа касс (c_group
)
объединяет одну или несколько касс, которые имеют одинаковые
регистрационные данные, то есть фискализация чеков на любой из них будет
равнозначной.
Доступ к кассам напрямую невозможен
What are tags?
Фискальные документы (чеки) имеют свой особенный формат представления. Все реквизиты этих документов имеют свое числовое обозначение, которое называется тегом
String Tags Encoding
Теги, хранящие строки, используют кодировку CP866
, которая поддерживает меньший набор символов, чем UTF-8
, например, в ней отсутствуют символы «»
.
Поэтому сервис пытается заменить все символы, которые невозможно представить в CP866
, их аналогами. Если остается кто-то, кого заменить не удалось, то запрос отклоняется.
Перечень заменяемых символов
«
➔"
»
➔"
“
➔"
”
➔"
‘
➔'
’
➔'
‒
(U+2012) ➔-
–
(U+2013) ➔-
—
(U+2014) ➔-
Money Encoding
Если поле, содержащее денежную сумму, имеет более двух цифр после запятой, то запрос отклоняется. При преобразовании этих полей в соответствующие теги, рубли переводятся в копейки
Actors
Актор – сущность, взаимодействующая с этим API. Он имеет доступ к ограниченному списку групп касс, на которых он может фискализировать чеки. Каждый запрос должен содержать данные с айди и токеном актора
Working Process
Перед началом работы с API нужно узнать, какого типа группу касс вы собираетесь обслуживать, а также получить все необходимые данные для работы.
Все это можно сделать с помощью запроса GET /c_groups/{c_group_id}
Далее необходимо создать чек такого типа, который доступен вашей группе касс с помощью одного из запросовPOST /c_groups/{c_group_id}/receipts/{c_group_type}/{receipt_id}
При этом, receipt_id
вы генерируете самостоятельно. Этот идентификатор уникален для каждого чека и имеет неограниченное время действия
Если результат чека недоступен сразу, то придется его получить позже с помощью запросаGET /c_groups/{c_group_id}/receipts/{receipt_id}
/c_groups/{c_group_id}
Получение информации о группе касс
get /c_groups/{c_group_id}
Каждый запрос должен содержать заголовок Authorization
URI Parameters
- c_group_id: required(integer)
Id группы касс
Headers
- Authorization: required(string)
Формат – BasicAuth с кодировкой текста utf-8
Именем пользователя должен быть
actor_id
, а паролемactor_token
.Для формирования заголовка нужно соединить имя пользователя и пароль с помощью символа
:
, закодировать получившуюся строку в base64 и добавить префиксBasic
с пробеломExample:
actor_id=
1234567
actor_token=gmFjyQg5zG88gBt3oy41qQPwk
Basic MTIzNDU2NzpnbUZqeVFnNXpHODhnQnQzb3k0MXFRUHdr
HTTP status code 200
Body
Media type: application/json
Possible types:
Интернет-магазин
- type: required(online_store)
Значение равно
online_store
- taxation: required(integer - maximum: 63)
Система налогообложения
Битовая маска:
0x01
– ОРН0x02
– УСН доход0x04
– УСН доход - расход0x10
– ЕСН0x20
– ПСН
- billing_place_list: required(array of string)
Список мест расчетов, которые доступны группе касс
- type: required(online_store)
Вендинговый аппарат
- type: required(vending)
Значение равно
vending
- taxation: required(integer - maximum: 63)
Система налогообложения
Битовая маска:
0x01
– ОРН0x02
– УСН доход0x04
– УСН доход - расход0x10
– ЕСН0x20
– ПСН
- machine_list: required(array of Machine)
Список номеров автоматов, которые доступны группе касс
Items: Machine
- num: required(string - maxLength: 20)
Номер автомата
- billing_address: required(string - minLength: 1 - maxLength: 256)
Адрес установки автомата
- billing_place: required(string - minLength: 1 - maxLength: 256)
Место установки автомата (является уточнением в рамках адреса)
- num: required(string - maxLength: 20)
- type: required(vending)
Интернет-магазин, выступающий в качестве агента
- type: required(online_store_agent)
Значение равно
online_store_agent
- taxation: required(integer - maximum: 63)
Система налогообложения
Битовая маска:
0x01
– ОРН0x02
– УСН доход0x04
– УСН доход - расход0x10
– ЕСН0x20
– ПСН
- billing_place_list: required(array of string)
Список мест расчетов, которые доступны группе касс
- agent_type: required(integer - maximum: 127)
Признак агента
Одновременное использование кассы для банк. платежного агента (субагента) и платежного агента (субагента) запрещено действующим законодательством
Битовая маска:
0x01
– Банк. платежный агент0x02
– Банк. платежный субагент0x04
– Платежный агент0x08
– Платежный субагент0x10
– Поверенный0x20
– Коммисионер0x40
– Иной агент
- type: required(online_store_agent)
HTTP status code 401
Неверный actor_id
или actor_token
, либо заголовок авторизации отсутствует или имеет неверный формат
HTTP status code 402
Группа касс или компания неактивна, необходима оплата для совершения запроса
HTTP status code 403
Актор, от лица которого совершается запрос, деактивирован
HTTP status code 404
Указанная группа касс не существует или недоступна для актора
HTTP status code 500
Внутренняя ошибка сервера
HTTP status code 503
Сервер не может обработать запрос в данный момент
Headers
- Retry-After: required(integer)
Время (секунды), через которое нужно сделать еще одну попытку
/c_groups/{c_group_id}/receipts
Создание чеков
Создание чека для онлайн магазинов
post /c_groups/{c_group_id}/receipts/online_store/{receipt_id}
Создание чека для онлайн магазинов
Каждый запрос должен содержать заголовок Authorization
URI Parameters
- c_group_id: required(integer)
Id группы касс
- receipt_id: required(string)
Идентификатор чека.
Должен быть в формате UUIDv4 без
-
, буквы в нижнем регистре.Каждый запрос создания чека должен содержать уникальный id
Headers
- Authorization: required(string)
Формат – BasicAuth с кодировкой текста utf-8
Именем пользователя должен быть
actor_id
, а паролемactor_token
.Для формирования заголовка нужно соединить имя пользователя и пароль с помощью символа
:
, закодировать получившуюся строку в base64 и добавить префиксBasic
с пробеломExample:
actor_id=
1234567
actor_token=gmFjyQg5zG88gBt3oy41qQPwk
Basic MTIzNDU2NzpnbUZqeVFnNXpHODhnQnQzb3k0MXFRUHdr
- Content-type: required(string)
Example:
application/json; charset=utf-8
Body
Media type: application/json
Type: object
Properties- type: required(integer - minimum: 1 - maximum: 4)
[Тег 1054] Признак расчета
Возможные значения:
1
– Приход (продажа товаров/услуг)2
– Возврат прихода3
– Расход4
– Возврат расхода
- items: required(array of object - minItems: 1)
Items: items
- type: required(integer - minimum: 1 - maximum: 19)
[Тег 1212] Признак предмета расчета
Перечень возможных значений
1
– ТОВАР
о реализуемом товаре, за исключением подакцизного товара2
– ПОДАКЦИЗНЫЙ ТОВАР
о реализуемом подакцизном товаре3
– РАБОТА
о выполняемой работе4
– УСЛУГА
об оказываемой услуге5
– СТАВКА АЗАРТНОЙ ИГРЫ
о приеме ставок при осуществлении деятельности по проведению азартных игр6
– ВЫИГРЫШ АЗАРТНОЙ ИГРЫ
о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению азартных игр7
– ЛОТЕРЕЙНЫЙ БИЛЕТ
о приеме денежных средств при реализации лотерейных билетов, электронных лотерейных билетов, приеме лотерейных ставок при осуществлении деятельности по проведению лотерей8
– ВЫИГРЫШ ЛОТЕРЕИ
о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению лотереи9
– ПРЕДОСТАВЛЕНИЕ РИД
о предоставлении прав на использование результатов интеллектуальной деятельности или средств индивидуализации10
– ПЛАТЕЖ
об авансе, задатке, предоплате, кредите, взносе в счет оплаты, пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчета11
– АГЕНТСКОЕ ВОЗНАГРАЖДЕНИЕ
о вознаграждении пользователя, являющегося платежным агентом (субагентом), банковским платежным агентом (субагентом), комиссионером, поверенным или иным агентом12
– СОСТАВНОЙ ПРЕДМЕТ РАСЧЕТА
о предмете расчета, состоящем из предметов, каждому из которых может быть присвоено значение от1
до11
13
– ИНОЙ ПРЕДМЕТ РАСЧЕТА
о предмете расчета, не относящемуся к предметам расчета, которым может быть присвоено значение от1
до12
и от14
до18
14
– ИМУЩЕСТВЕННОЕ ПРАВО
о передаче имущественных прав15
– ВНЕРЕАЛИЗАЦИОННЫЙ ДОХОД
о внереализационном доходе
Для этого значения полеname
должно содержать одно из особых значений16
– СТРАХОВЫЕ ВЗНОСЫ
о суммах расходов, уменьшающих сумму налога (авансовых платежей) в соответствии с пунктом 3.1 статьи 346.21 Налогового кодекса Российской Федерации
Для этого значения полеname
должно содержать одно из особых значений17
– ТОРГОВЫЙ СБОР
о суммах уплаченного торгового сбора18
– КУРОРТНЫЙ СБОР
о курортном сборе19
– ЗАЛОГ
о залоге
- name: required(string - minLength: 1 - maxLength: 128)
[Тег 1030] Наименование предмета расчета
- price: required(number - minimum: 0)
[Тег 1079] Цена за единицу предмета расчета с учетом скидок, наценок и НДС (в рублях)
- quantity: required(number - minimum: 0)
[Тег 1023] Количество предмета расчета
- amount: required(number - minimum: 0)
[Тег 1043] Стоимость предмета расчета с учетом скидок и наценок
Значение этого поля должно отличаться от
price * quantity
не более, чем на 1 копейку, иначе запрос будет отклонен - payment_method: required(integer - minimum: 1 - maximum: 7)
[Тег 1214] Признак способа расчета
1
– ПРЕДОПЛАТА 100%
Полная предварительная оплата до момента передачи предмета расчета2
– ПРЕДОПЛАТА
Частичная предварительная оплата до момента передачи предмета расчета3
– АВАНС4
– ПОЛНЫЙ РАСЧЕТ
Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета5
– ЧАСТИЧНЫЙ РАСЧЕТ И КРЕДИТ
Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит6
– ПЕРЕДАЧА В КРЕДИТ
Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит7
– ОПЛАТА КРЕДИТА
Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
- vat: required(integer - minimum: 1 - maximum: 6)
[Тег 1199] Ставка НДС
1
– Ставка НДС 20%2
– Ставка НДС 10%3
– Ставка НДС расч. 20/1204
– Ставка НДС расч. 10/1105
– Ставка НДС 0%6
– НДС не облагается
- marking: (object)
Данные маркировки.
Поле можно отправить только в случае, когда
type
равно1
(о реализуемом товаре, за исключением подакцизного товара),2
(о реализуемом подакцизном товаре),12
(составной предмет расчета)При отправке этого поля, значение поля
Propertiesquantity
должно быть равно1
, иначе запрос отклоняется- code: required(string)
Код маркировки
Отправляется текстовое представление кода маркировки, считанное сканером. Сервис самостоятельно распознает и преобразует эти данные в значение тега 1162
Принимаются символы, которых нет среди разрешенных в приказе ФНС (
/_
), но есть в спецификации Data Matrix, поскольку они тоже используются Честным ЗнакомВ данный момент реализована поддержка, как минимум, таких форматов маркировки:
- Код товара средства идентификации мехового изделия
- DataMatrix (длина – 29 символов)
- DataMatrix (разделитель –
\u001D
aka GS) - DataMatrix (разделитель – пробел)
- DataMatrix (без разделителей, где длина элементной строки ИП 21 равна 13)
- code: required(string)
- customs_info: (object)
Таможенная информация.
Объект либо включается целиком со всеми полями, либо не включается вовсе.
Если страной происхождения товаров не является Российская Федерация, то
customs_info
должно быть указано.Если страной происхождения товаров группа стран (например, Евросоюз), то
customs_info
не включается.Если товар был изготовлен в Российской Федерации с использованием частей, страной происхождения которых не является Российская Федерация, то
customs_info
не включается.В случаях осуществления расчетов между организациями и (или) индивидуальными предпринимателями,
customs_info
включается, если пользователь имеет обязанность, предусмотренную пунктом 3 статьи 169 Налогового кодекса Российской Федерации.Если товар был упакован в Российской Федерации, а изготовлен извне, то страной происхождения такого товара является страна изготовления.
Properties- decl_num: required(string - minLength: 1 - maxLength: 32)
[Тег 1231] Номер таможенной декларации
- origin_country_code: required(string - minLength: 3 - maxLength: 3)
[Тег 1230] Цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира
- decl_num: required(string - minLength: 1 - maxLength: 32)
- type: required(integer - minimum: 1 - maximum: 19)
- taxation: required(one of 1, 2, 4, 16, 32)
[Тег 1055] Система налогообложения.
Каждый чек может использовать только одну систему налогообложения, в то время как касса может применять несколько
Доступные системы налогообложения можно получить запросом
GET /c_groups/{c_group_id}
Возможные значения:
1
– ОРН2
– УСН доход4
– УСН доход - расход16
– ЕСН32
– ПСН
- amount: required(object)
Сумма этих полей должна совпадать с суммой полей amount каждого предмета расчета, с точностью до количества рублей, иначе запрос будет отклонен
Тег 1020 формируется как точная сумма полей внутри
Теги 1102, 1103, 1104, 1105, 1106, 1107 рассчитываются автоматически
Properties- cashless: (number - minimum: 0)
[Тег 1081] Сумма электронными (в рублях)
- prepayment: (number - minimum: 0)
[Тег 1215] Сумма предоплатой (зачетом аванса) (в рублях)
- cashless: (number - minimum: 0)
- notify: required(array of NotifyAddress - minItems: 1 - maxItems: 1)
Адреса клиентов, куда будут отосланы уведомления о чеке
Items: NotifyAddress
- type: required(one of email, phone)
Возможные значения:
email
phone
- value: required(string - maxLength: 100)
Номер телефона должен быть в формате
E.164
(номер начинается с плюса и содержит только цифры), иначе запрос отклоняется
- type: required(one of email, phone)
- customer: (object)
Поля
Propertiestin
иinfo
обязательны к отправке, если покупатель является юр. лицом- tin: (string - minLength: 10 - maxLength: 12)
[Тег 1228] ИНН организации или покупателя (клиента)
Если покупателю (клиенту) не присвоен ИНН на территории РФ, то должно отправляться значение
000000000000
- name: (string - minLength: 1 - maxLength: 256)
[Тег 1227] Наименование организации или фамилия, имя, отчество (при наличии), серия и номер паспорта покупателя (клиента)
- tin: (string - minLength: 10 - maxLength: 12)
- cashier: (object)
Данные кассира (человека, сформировавшего чек)
Если чек создается в автоматическом режиме, то данное поле не отправляется.
В каждой смене может быть только один кассир, поэтому если кассир в текущей смене отличается от отправленного в чеке, то смена закроется и откроется заново, что займет дополнительное время.
Если смена открыта без кассира, а чек отправлен с кассиром (или наоборот), то это вызовет переоткрытие смены.
Если два кассира имеют одинаковое поле
Propertiesname
, но только один из них имеет полеtin
, то это вызовет переоткрытие смены.- name: required(string - minLength: 1 - maxLength: 64)
[Тег 1021] Должность и фамилия лица, осуществившего расчет с покупателем (клиентом), оформившего кассовый чек (БСО) и выдавшего (передавшего) его покупателю (клиенту)
- tin: (string - minLength: 10 - maxLength: 12)
[Тег 1203] ИНН лица, осуществившего расчет с покупателем (клиентом), оформившего кассовый чек (БСО) и выдавшего (передавшего) его покупателю (клиенту)
- name: required(string - minLength: 1 - maxLength: 64)
- loc: required(object)
- billing_place: required(string)
[Тег 1187] Значение одного из места расчетов, которое доступно группе касс
Касса регистрируется на определенное место расчетов (сайт).
Если она регистрируется на несколько сайтов, то при регистрации их адреса разделяются
;
. В этом случае чек может содержать один из этих сайтовСписок доступных мест расчетов (сайтов) можно получить с помощью
GET /c_groups/{c_group_id}
- billing_place: required(string)
Example:
POST /c_groups/123456789/receipts/online_store/ccb59f0862974fee899748e1d9cfeff2
{
"type": 1,
"items": [
{
"type": 1,
"name": "Безделушка",
"price": 14,
"quantity": 2,
"amount": 28,
"vat": 6,
"payment_method": 4
}
],
"amount": {
"cashless": 28
},
"taxation": 4,
"notify": [
{
"type": "email",
"value": "mail@example.com"
}
],
"loc": {
"billing_place": "https://example.com"
}
}
HTTP status code 201
Возвращен пейлоад чека
Body
Media type: application/json
Type: object
Properties- fiscal_payload: required(object)
- reg_time: required(datetime)
Время регистрации фискального документа в ФН.
Формат –
rfc3339
- shift_num: required(integer)
Номер смены
- index: required(integer)
Номер чека в смене
- fiscal_sign: required(integer)
Фискальный признак документа
Представляет собой 4 байтовое беззнаковое целое
- fiscal_num: required(integer)
Фискальный номер документа
Представляет собой 4 байтовое беззнаковое целое
- reg_time: required(datetime)
- cashbox: required(object)
- rn: required(string - maxLength: 20)
Регистрационный номер устройства пробившего чек
- factory_num: required(string - maxLength: 20)
Заводской номер ККТ
- ffd: required(string)
Версия ФФД ККТ
- fn_num: required(string - minLength: 16 - maxLength: 16)
Номер фискального накопителя
- rn: required(string - maxLength: 20)
- company: required(object)
- tin: required(string - minLength: 10 - maxLength: 12)
ИНН компании
- name: required(string)
Название компании
- tin: required(string - minLength: 10 - maxLength: 12)
- rec_info: required(object)
- total_amount: required(number)
Итоговая сумма чека (в рублях) [Тег 1020]
- type: required(integer)
Признак расчета [Тег 1054]
- total_amount: required(number)
HTTP status code 202
Обработка чека не завершена
Body
Media type: application/json
Type: object
Properties- delay: required(number)
Кол-во секунд, через которое стоит проверить состояние чека.
Настоятельно рекомендуем не делать запрос проверки раньше указанного срока
HTTP status code 400
Ошибка синтаксиса или структуры чека
Body
Media type: application/json
Type: object
Properties- path: required(string)
Путь до места ошибки в форме JSON Path
То, куда указывает путь, определяется типом ошибки
Путь всегда указывает на единственный узел
- desc: required(string)
Человекочитаемое описание ошибки в произвольном формате
- type: required(array of string)
Тип ошибки.
Массив представляет собой путь в иерархии типов, такой формат позволяет добавлять новые ошибки и уточнять старые, не ломая обратную совместимость.
К примеру, если вы ожидаете
["UNAVAILABLE_VALUE", "UA_TAXATION"]
, то должны проверять, что массив начинается с этих значений. Проверка на равенство недопустима.Сервис может отвечать массивом значений, характеризующим ошибку точнее, чем указано в документации, но вы не должны полагаться на такое поведение. Только задокументированное поведение имеет обратную совместимость.
Если обозначено на какой узел указывает
path
, тоpath
всех подтипов этой ошибки будет указывать на тот же узелИерархия ошибок
BAD_STRUCTURE
Ошибка структуры запроса, из-за которой нельзя его проанализировать.Примеры: ошибка синтаксиса JSON, отсутствуют необходимые хедеры
path
равен$
BAD_VALUE
Поле имеет значение, не соответствующее собственному форматуpath
указывает на поле с ошибочными даннымиТакже существует проверки: формата ИНН, кода страны происхождения товара, номера таможенной декларации, кодировки строк, кодировки чисел, формата номера телефона, а также параметров, которые описаны с помощью JSON Schema (длина строки, размер массива и т.д.)
- UNKNOWN_MARKING
Неизвестный (неверный) формат кода маркировки
- UNKNOWN_MARKING
UNAVAILABLE_VALUE
Значение поля удовлетворяет требуемому формату, но оно не может быть применено вамиpath
указывает на поле с ошибочными даннымиUA_TAXATION
Отправлена система налогообложения, недоступная группе кассUA_BILLING_PLACE
Отправлено место расчетов, недоступное группе кассUA_AGENT_TYPE
Отправлен признак агента, недоступный группе кассUA_MACHINE_NUM
Отправлен номер автомата, недоступный группе касс
UNEXPECTED_FIELD
Отправлено лишнее полеpath
указывает на лишнее поле
MISSED_REQUIRED_FIELD
Пропущено обязательное полеpath
указывает на пропущенное поле
AMOUNT_DIVERGENCE
Сумма полей внутриamount
расходится с суммой полейamount
каждого чека в рублях (количество копеек может не совпадать)path
равен$
INCONSISTENT_ITEM_DATA
Предоставленные данные содержат противоречивые сведенияpath
указывает на предмет расчетаПроверяется: сходимость amount и
price * quantity
, кол-во предметов расчета при маркировке, корректность акциза и т.д.
Examples:
Некорректная маркировка:
{
"type": [
"BAD_VALUE",
"UNKNOWN_MARKING"
],
"desc": "Формат маркировки неизвестен",
"path": "$.items[1].marking"
}
Строка с некодируемым символом:
{
"type": [
"BAD_VALUE"
],
"desc": "Символ `Ø` не может быть представлен в CP866",
"path": "$.items[6].name"
}
Опечатка в имени поля:
{
"type": [
"UNEXPECTED_FIELD"
],
"desc": "Поле `customs_info` не ожидается",
"path": "$.items[0].customs_info"
}
HTTP status code 401
Неверный actor_id
или actor_token
, либо заголовок авторизации отсутствует или имеет неверный формат
HTTP status code 402
Группа касс или компания неактивна, необходима оплата для совершения запроса
HTTP status code 403
Актор, от лица которого совершается запрос, деактивирован
HTTP status code 404
Указанная группа касс не существует или недоступна для актора
HTTP status code 406
Этот запрос невозможен для группы касс с данным типом
HTTP status code 409
Чек с таким же receipt_id
уже существует
HTTP status code 422
Исключительная ситуация, когда ошибка данных чека не была поймана перед его созданием, но была обнаружена самой кассой
С каждый таким случаем мы разбираемся отдельно
HTTP status code 500
Внутренняя ошибка сервера
HTTP status code 503
Сервер не может обработать запрос в данный момент
Headers
- Retry-After: required(integer)
Время (секунды), через которое нужно сделать еще одну попытку
Создание чека для вендингов.
В отличии от других случаев, вендинговые аппараты могут вместо выдачи чека могут формировать на дисплее QR-код (Двумерный штриховой код QR-код Model 2 размером не менее 20 x 20 мм, с уровнем исправления ошибок L или выше).
Данные QR-кода должны представлять собой текстовую строку из латинских букв, цифр и символов-разделителей =
и &
. Текст должен быть представлен в кодировке CP866
.
Все данные, необходимые для формирования QR-кода представляются в
пейлоаде фискализированного чека. В скобках записан путь до
соответствующего поля.
Структура данных, помещаемых в строку QR-кода, состоит из шести полей:
- t=<date/time - дата и время осуществления расчета в формате ГГГГММДДТЧЧММ (
$fiscal_payload.reg_time
)> - s=<сумма расчета в рублях и копейках, разделенных точкой (
$rec_info.total_amount
)> - fn=<заводской номер фискального накопителя (
$cashbox.fn_num
)> - i=<порядковый номер фискального документа, нулями не дополняется (
$fiscal_payload.fiscal_num
)> - fp=<фискальный признак документа, нулями не дополняется (
$fiscal_payload.fiscal_sign
)> - n=<признак расчета (
$rec_info.type
)>
Пример строки QR-кода: t=20150720T1638&s=9999999.00&fn=000110000105&i=12345678&fp=123456&n=2
post /c_groups/{c_group_id}/receipts/vending/{receipt_id}
Создание чека для вендингов.
В отличии от других случаев, вендинговые аппараты могут вместо выдачи чека могут формировать на дисплее QR-код (Двумерный штриховой код QR-код Model 2 размером не менее 20 x 20 мм, с уровнем исправления ошибок L или выше).
Данные QR-кода должны представлять собой текстовую строку из латинских букв, цифр и символов-разделителей =
и &
. Текст должен быть представлен в кодировке CP866
.
Все данные, необходимые для формирования QR-кода представляются в
пейлоаде фискализированного чека. В скобках записан путь до
соответствующего поля.
Структура данных, помещаемых в строку QR-кода, состоит из шести полей:
- t=<date/time - дата и время осуществления расчета в формате ГГГГММДДТЧЧММ (
$fiscal_payload.reg_time
)> - s=<сумма расчета в рублях и копейках, разделенных точкой (
$rec_info.total_amount
)> - fn=<заводской номер фискального накопителя (
$cashbox.fn_num
)> - i=<порядковый номер фискального документа, нулями не дополняется (
$fiscal_payload.fiscal_num
)> - fp=<фискальный признак документа, нулями не дополняется (
$fiscal_payload.fiscal_sign
)> - n=<признак расчета (
$rec_info.type
)>
Пример строки QR-кода: t=20150720T1638&s=9999999.00&fn=000110000105&i=12345678&fp=123456&n=2
Каждый запрос должен содержать заголовок Authorization
URI Parameters
- c_group_id: required(integer)
Id группы касс
- receipt_id: required(string)
Идентификатор чека.
Должен быть в формате UUIDv4 без
-
, буквы в нижнем регистре.Каждый запрос создания чека должен содержать уникальный id
Headers
- Authorization: required(string)
Формат – BasicAuth с кодировкой текста utf-8
Именем пользователя должен быть
actor_id
, а паролемactor_token
.Для формирования заголовка нужно соединить имя пользователя и пароль с помощью символа
:
, закодировать получившуюся строку в base64 и добавить префиксBasic
с пробеломExample:
actor_id=
1234567
actor_token=gmFjyQg5zG88gBt3oy41qQPwk
Basic MTIzNDU2NzpnbUZqeVFnNXpHODhnQnQzb3k0MXFRUHdr
- Content-type: required(string)
Example:
application/json; charset=utf-8
Body
Media type: application/json
Type: object
Properties- type: required(integer - minimum: 1 - maximum: 4)
[Тег 1054] Признак расчета
Возможные значения:
1
– Приход (продажа товаров/услуг)2
– Возврат прихода3
– Расход4
– Возврат расхода
- items: required(array of object - minItems: 1)
Items: items
- type: required(integer - minimum: 1 - maximum: 19)
[Тег 1212] Признак предмета расчета
Перечень возможных значений
1
– ТОВАР
о реализуемом товаре, за исключением подакцизного товара2
– ПОДАКЦИЗНЫЙ ТОВАР
о реализуемом подакцизном товаре3
– РАБОТА
о выполняемой работе4
– УСЛУГА
об оказываемой услуге5
– СТАВКА АЗАРТНОЙ ИГРЫ
о приеме ставок при осуществлении деятельности по проведению азартных игр6
– ВЫИГРЫШ АЗАРТНОЙ ИГРЫ
о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению азартных игр7
– ЛОТЕРЕЙНЫЙ БИЛЕТ
о приеме денежных средств при реализации лотерейных билетов, электронных лотерейных билетов, приеме лотерейных ставок при осуществлении деятельности по проведению лотерей8
– ВЫИГРЫШ ЛОТЕРЕИ
о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению лотере9
– ПРЕДОСТАВЛЕНИЕ РИД
о предоставлении прав на использование результатов интеллектуальной деятельности или средств индивидуализации10
– ПЛАТЕЖ
об авансе, задатке, предоплате, кредите, взносе в счет оплаты, пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчета11
– АГЕНТСКОЕ ВОЗНАГРАЖДЕНИЕ
о вознаграждении пользователя, являющегося платежным агентом (субагентом), банковским платежным агентом (субагентом), комиссионером, поверенным или иным агентом12
– СОСТАВНОЙ ПРЕДМЕТ РАСЧЕТА
о предмете расчета, состоящем из предметов, каждому из которых может быть присвоено значение от1
до11
13
– ИНОЙ ПРЕДМЕТ РАСЧЕТА
о предмете расчета, не относящемуся к предметам расчета, которым может быть присвоено значение от1
до12
и от14
до18
14
– ИМУЩЕСТВЕННОЕ ПРАВО
о передаче имущественных прав15
– ВНЕРЕАЛИЗАЦИОННЫЙ ДОХОД
о внереализационном доходе
Для этого значения полеname
должно содержать одно из особых значений16
– СТРАХОВЫЕ ВЗНОСЫ
о суммах расходов, уменьшающих сумму налога (авансовых платежей) в соответствии с пунктом 3.1 статьи 346.21 Налогового кодекса Российской Федерации
Для этого значения полеname
должно содержать одно из особых значений17
– ТОРГОВЫЙ СБОР
о суммах уплаченного торгового сбора18
– КУРОРТНЫЙ СБОР
о курортном сборе19
– ЗАЛОГ
о залоге
- name: required(string - minLength: 1 - maxLength: 128)
[Тег 1030] Наименование предмета расчета
- price: required(number - minimum: 0)
[Тег 1079] Цена за единицу предмета расчета с учетом скидок, наценок и НДС (в рублях)
- quantity: required(number - minimum: 0)
[Тег 1023] Количество предмета расчета
- amount: required(number - minimum: 0)
[Тег 1043] Стоимость предмета расчета с учетом скидок и наценок
Значение этого поля должно отличаться от
price * quantity
не более, чем на 1 копейку, иначе запрос будет отклонен - payment_method: required(integer - minimum: 1 - maximum: 7)
[Тег 1214] Признак способа расчета
1
– ПРЕДОПЛАТА 100%
Полная предварительная оплата до момента передачи предмета расчета2
– ПРЕДОПЛАТА
Частичная предварительная оплата до момента передачи предмета расчета3
– АВАНС4
– ПОЛНЫЙ РАСЧЕТ
Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета5
– ЧАСТИЧНЫЙ РАСЧЕТ И КРЕДИТ
Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит6
– ПЕРЕДАЧА В КРЕДИТ
Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит7
– ОПЛАТА КРЕДИТА
Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
- vat: required(integer - minimum: 1 - maximum: 6)
[Тег 1199] Ставка НДС
1
– Ставка НДС 20%2
– Ставка НДС 10%3
– Ставка НДС расч. 20/1204
– Ставка НДС расч. 10/1105
– Ставка НДС 0%6
– НДС не облагается
- type: required(integer - minimum: 1 - maximum: 19)
- taxation: required(one of 1, 2, 4, 16, 32)
[Тег 1055] Система налогообложения.
Каждый чек может использовать только одну систему налогообложения, в то время как касса может применять несколько
Доступные системы налогообложения можно получить запросом
GET /c_groups/{c_group_id}
Возможные значения:
1
– ОРН2
– УСН доход4
– УСН доход - расход16
– ЕСН32
– ПСН
- amount: required(object)
Сумма этих полей должна совпадать с суммой полей amount каждого предмета расчета, с точностью до количества рублей, иначе запрос будет отклонен
Тег 1020 формируется как точная сумма полей внутри
Теги 1102, 1103, 1104, 1105, 1106, 1107 рассчитываются автоматически
Properties- cashless: (number - minimum: 0)
[Тег 1081] Сумма электронными (в рублях)
- cash: (number - minimum: 0)
[Тег 1031] Сумма наличиными (в рублях)
- cashless: (number - minimum: 0)
- cashier: (object)
Данные кассира (человека, сформировавшего чек)
Если чек создается в автоматическом режиме, то данное поле не отправляется.
В каждой смене может быть только один кассир, поэтому если кассир в текущей смене отличается от отправленного в чеке, то смена закроется и откроется заново, что займет дополнительное время.
Если смена открыта без кассира, а чек отправлен с кассиром (или наоборот), то это вызовет переоткрытие смены.
Если два кассира имеют одинаковое поле
Propertiesname
, но только один из них имеет полеtin
, то это вызовет переоткрытие смены.- name: required(string - minLength: 1 - maxLength: 64)
[Тег 1021] Должность и фамилия лица, осуществившего расчет с покупателем (клиентом), оформившего кассовый чек (БСО) и выдавшего (передавшего) его покупателю (клиенту)
- tin: (string - minLength: 10 - maxLength: 12)
[Тег 1203] ИНН лица, осуществившего расчет с покупателем (клиентом), оформившего кассовый чек (БСО) и выдавшего (передавшего) его покупателю (клиенту)
- name: required(string - minLength: 1 - maxLength: 64)
- loc: required(object)
- machine_num: required(string - maxLength: 20)
[Тег 1036] Номер одного из автоматов, который доступен группе касс
При регистрации кассы в налоговой касса привязывается к определенным автоматам, которые она может обслуживать. Для каждого автомата указывается его номер, адрес и место установки (место установки уточняет, где находится автомат, в рамках указанного адреса).
Фискализация чеков из других источников запрещена. Если автомат меняет адрес или место установки, то кассу необходимо перерегистрировать.
Список доступных номеров автоматов можно получить с помощью
GET /c_groups/{c_group_id}
- machine_num: required(string - maxLength: 20)
Example:
POST /c_groups/123456789/receipts/vending/4c369edc100941dca2cad3c9fa82768e
{
"type": 1,
"items": [
{
"type": 1,
"name": "Безделушка",
"price": 15,
"quantity": 3,
"amount": 30,
"vat": 6,
"payment_method": 4
}
],
"amount": {
"cash": 30
},
"taxation": 4,
"loc": {
"machine_num": "1234124123"
}
}
HTTP status code 201
Возвращен пейлоад чека
Body
Media type: application/json
Type: object
Properties- fiscal_payload: required(object)
- reg_time: required(datetime)
Время регистрации фискального документа в ФН.
Формат –
rfc3339
- shift_num: required(integer)
Номер смены
- index: required(integer)
Номер чека в смене
- fiscal_sign: required(integer)
Фискальный признак документа
Представляет собой 4 байтовое беззнаковое целое
- fiscal_num: required(integer)
Фискальный номер документа
Представляет собой 4 байтовое беззнаковое целое
- reg_time: required(datetime)
- cashbox: required(object)
- rn: required(string - maxLength: 20)
Регистрационный номер устройства пробившего чек
- factory_num: required(string - maxLength: 20)
Заводской номер ККТ
- ffd: required(string)
Версия ФФД ККТ
- fn_num: required(string - minLength: 16 - maxLength: 16)
Номер фискального накопителя
- rn: required(string - maxLength: 20)
- company: required(object)
- tin: required(string - minLength: 10 - maxLength: 12)
ИНН компании
- name: required(string)
Название компании
- tin: required(string - minLength: 10 - maxLength: 12)
- rec_info: required(object)
- total_amount: required(number)
Итоговая сумма чека (в рублях) [Тег 1020]
- type: required(integer)
Признак расчета [Тег 1054]
- total_amount: required(number)
HTTP status code 202
Обработка чека не завершена
Body
Media type: application/json
Type: object
Properties- delay: required(number)
Кол-во секунд, через которое стоит проверить состояние чека.
Настоятельно рекомендуем не делать запрос проверки раньше указанного срока
HTTP status code 400
Ошибка синтаксиса или структуры чека
Body
Media type: application/json
Type: object
Properties- path: required(string)
Путь до места ошибки в форме JSON Path
То, куда указывает путь, определяется типом ошибки
Путь всегда указывает на единственный узел
- desc: required(string)
Человекочитаемое описание ошибки в произвольном формате
- type: required(array of string)
Тип ошибки.
Массив представляет собой путь в иерархии типов, такой формат позволяет добавлять новые ошибки и уточнять старые, не ломая обратную совместимость.
К примеру, если вы ожидаете
["UNAVAILABLE_VALUE", "UA_TAXATION"]
, то должны проверять, что массив начинается с этих значений. Проверка на равенство недопустима.Сервис может отвечать массивом значений, характеризующим ошибку точнее, чем указано в документации, но вы не должны полагаться на такое поведение. Только задокументированное поведение имеет обратную совместимость.
Если обозначено на какой узел указывает
path
, тоpath
всех подтипов этой ошибки будет указывать на тот же узелИерархия ошибок
BAD_STRUCTURE
Ошибка структуры запроса, из-за которой нельзя его проанализировать.Примеры: ошибка синтаксиса JSON, отсутствуют необходимые хедеры
path
равен$
BAD_VALUE
Поле имеет значение, не соответствующее собственному форматуpath
указывает на поле с ошибочными даннымиТакже существует проверки: формата ИНН, кода страны происхождения товара, номера таможенной декларации, кодировки строк, кодировки чисел, формата номера телефона, а также параметров, которые описаны с помощью JSON Schema (длина строки, размер массива и т.д.)
- UNKNOWN_MARKING
Неизвестный (неверный) формат кода маркировки
- UNKNOWN_MARKING
UNAVAILABLE_VALUE
Значение поля удовлетворяет требуемому формату, но оно не может быть применено вамиpath
указывает на поле с ошибочными даннымиUA_TAXATION
Отправлена система налогообложения, недоступная группе кассUA_BILLING_PLACE
Отправлено место расчетов, недоступное группе кассUA_AGENT_TYPE
Отправлен признак агента, недоступный группе кассUA_MACHINE_NUM
Отправлен номер автомата, недоступный группе касс
UNEXPECTED_FIELD
Отправлено лишнее полеpath
указывает на лишнее поле
MISSED_REQUIRED_FIELD
Пропущено обязательное полеpath
указывает на пропущенное поле
AMOUNT_DIVERGENCE
Сумма полей внутриamount
расходится с суммой полейamount
каждого чека в рублях (количество копеек может не совпадать)path
равен$
INCONSISTENT_ITEM_DATA
Предоставленные данные содержат противоречивые сведенияpath
указывает на предмет расчетаПроверяется: сходимость amount и
price * quantity
, кол-во предметов расчета при маркировке, корректность акциза и т.д.
Examples:
Некорректная маркировка:
{
"type": [
"BAD_VALUE",
"UNKNOWN_MARKING"
],
"desc": "Формат маркировки неизвестен",
"path": "$.items[1].marking"
}
Строка с некодируемым символом:
{
"type": [
"BAD_VALUE"
],
"desc": "Символ `Ø` не может быть представлен в CP866",
"path": "$.items[6].name"
}
Опечатка в имени поля:
{
"type": [
"UNEXPECTED_FIELD"
],
"desc": "Поле `customs_info` не ожидается",
"path": "$.items[0].customs_info"
}
HTTP status code 401
Неверный actor_id
или actor_token
, либо заголовок авторизации отсутствует или имеет неверный формат
HTTP status code 402
Группа касс или компания неактивна, необходима оплата для совершения запроса
HTTP status code 403
Актор, от лица которого совершается запрос, деактивирован
HTTP status code 404
Указанная группа касс не существует или недоступна для актора
HTTP status code 406
Этот запрос невозможен для группы касс с данным типом
HTTP status code 409
Чек с таким же receipt_id
уже существует
HTTP status code 422
Исключительная ситуация, когда ошибка данных чека не была поймана перед его созданием, но была обнаружена самой кассой
С каждый таким случаем мы разбираемся отдельно
HTTP status code 500
Внутренняя ошибка сервера
HTTP status code 503
Сервер не может обработать запрос в данный момент
Headers
- Retry-After: required(integer)
Время (секунды), через которое нужно сделать еще одну попытку
Создание чека для онлайн магазинов с данными агента
post /c_groups/{c_group_id}/receipts/online_store_agent/{receipt_id}
Создание чека для онлайн магазинов с данными агента
Каждый запрос должен содержать заголовок Authorization
URI Parameters
- c_group_id: required(integer)
Id группы касс
- receipt_id: required(string)
Идентификатор чека.
Должен быть в формате UUIDv4 без
-
, буквы в нижнем регистре.Каждый запрос создания чека должен содержать уникальный id
Headers
- Authorization: required(string)
Формат – BasicAuth с кодировкой текста utf-8
Именем пользователя должен быть
actor_id
, а паролемactor_token
.Для формирования заголовка нужно соединить имя пользователя и пароль с помощью символа
:
, закодировать получившуюся строку в base64 и добавить префиксBasic
с пробеломExample:
actor_id=
1234567
actor_token=gmFjyQg5zG88gBt3oy41qQPwk
Basic MTIzNDU2NzpnbUZqeVFnNXpHODhnQnQzb3k0MXFRUHdr
- Content-type: required(string)
Example:
application/json; charset=utf-8
Body
Media type: application/json
Type: object
Properties- type: required(integer - minimum: 1 - maximum: 4)
[Тег 1054] Признак расчета
Возможные значения:
1
– Приход (продажа товаров/услуг)2
– Возврат прихода3
– Расход4
– Возврат расхода
- items: required(array of object - minItems: 1)
Items: items
- type: required(integer - minimum: 1 - maximum: 19)
[Тег 1212] Признак предмета расчета
Перечень возможных значений
1
– ТОВАР
о реализуемом товаре, за исключением подакцизного товара2
– ПОДАКЦИЗНЫЙ ТОВАР
о реализуемом подакцизном товаре3
– РАБОТА
о выполняемой работе4
– УСЛУГА
об оказываемой услуге5
– СТАВКА АЗАРТНОЙ ИГРЫ
о приеме ставок при осуществлении деятельности по проведению азартных игр6
– ВЫИГРЫШ АЗАРТНОЙ ИГРЫ
о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению азартных игр7
– ЛОТЕРЕЙНЫЙ БИЛЕТ
о приеме денежных средств при реализации лотерейных билетов, электронных лотерейных билетов, приеме лотерейных ставок при осуществлении деятельности по проведению лотерей8
– ВЫИГРЫШ ЛОТЕРЕИ
о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению лотере9
– ПРЕДОСТАВЛЕНИЕ РИД
о предоставлении прав на использование результатов интеллектуальной деятельности или средств индивидуализации10
– ПЛАТЕЖ
об авансе, задатке, предоплате, кредите, взносе в счет оплаты, пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчета11
– АГЕНТСКОЕ ВОЗНАГРАЖДЕНИЕ
о вознаграждении пользователя, являющегося платежным агентом (субагентом), банковским платежным агентом (субагентом), комиссионером, поверенным или иным агентом12
– СОСТАВНОЙ ПРЕДМЕТ РАСЧЕТА
о предмете расчета, состоящем из предметов, каждому из которых может быть присвоено значение от1
до11
13
– ИНОЙ ПРЕДМЕТ РАСЧЕТА
о предмете расчета, не относящемуся к предметам расчета, которым может быть присвоено значение от1
до12
и от14
до18
14
– ИМУЩЕСТВЕННОЕ ПРАВО
о передаче имущественных прав15
– ВНЕРЕАЛИЗАЦИОННЫЙ ДОХОД
о внереализационном доходе
Для этого значения полеname
должно содержать одно из особых значений16
– СТРАХОВЫЕ ВЗНОСЫ
о суммах расходов, уменьшающих сумму налога (авансовых платежей) в соответствии с пунктом 3.1 статьи 346.21 Налогового кодекса Российской Федерации
Для этого значения полеname
должно содержать одно из особых значений17
– ТОРГОВЫЙ СБОР
о суммах уплаченного торгового сбора18
– КУРОРТНЫЙ СБОР
о курортном сборе19
– ЗАЛОГ
о залоге
- name: required(string - minLength: 1 - maxLength: 128)
[Тег 1030] Наименование предмета расчета
- price: required(number - minimum: 0)
[Тег 1079] Цена за единицу предмета расчета с учетом скидок, наценок и НДС (в рублях)
- quantity: required(number - minimum: 0)
[Тег 1023] Количество предмета расчета
- amount: required(number - minimum: 0)
[Тег 1043] Стоимость предмета расчета с учетом скидок и наценок
Значение этого поля должно отличаться от
price * quantity
не более, чем на 1 копейку, иначе запрос будет отклонен - payment_method: required(integer - minimum: 1 - maximum: 7)
[Тег 1214] Признак способа расчета
1
– ПРЕДОПЛАТА 100%
Полная предварительная оплата до момента передачи предмета расчета2
– ПРЕДОПЛАТА
Частичная предварительная оплата до момента передачи предмета расчета3
– АВАНС4
– ПОЛНЫЙ РАСЧЕТ
Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета5
– ЧАСТИЧНЫЙ РАСЧЕТ И КРЕДИТ
Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит6
– ПЕРЕДАЧА В КРЕДИТ
Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит7
– ОПЛАТА КРЕДИТА
Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
- vat: required(integer - minimum: 1 - maximum: 6)
[Тег 1199] Ставка НДС
1
– Ставка НДС 20%2
– Ставка НДС 10%3
– Ставка НДС расч. 20/1204
– Ставка НДС расч. 10/1105
– Ставка НДС 0%6
– НДС не облагается
- customs_info: (object)
Таможенная информация.
Объект либо включается целиком со всеми полями, либо не включается вовсе.
Если страной происхождения товаров не является Российская Федерация, то
customs_info
должно быть указано.Если страной происхождения товаров группа стран (например, Евросоюз), то
customs_info
не включается.Если товар был изготовлен в Российской Федерации с использованием частей, страной происхождения которых не является Российская Федерация, то
customs_info
не включается.В случаях осуществления расчетов между организациями и (или) индивидуальными предпринимателями,
customs_info
включается, если пользователь имеет обязанность, предусмотренную пунктом 3 статьи 169 Налогового кодекса Российской Федерации.Если товар был упакован в Российской Федерации, а изготовлен извне, то страной происхождения такого товара является страна изготовления.
Properties- decl_num: required(string - minLength: 1 - maxLength: 32)
[Тег 1231] Номер таможенной декларации
- origin_country_code: required(string - minLength: 3 - maxLength: 3)
[Тег 1230] Цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира
- decl_num: required(string - minLength: 1 - maxLength: 32)
- agent: (union of SimpleAgent or PayingAgent or BankPayingAgent)
Данные агента.
Отправляется только в случае, если организация выступает агентом по данному предмету расчета
Простые агенты
- type: required(one of 16, 32, 64)
[Тег 1222] Признак агента
В каждом предмете расчета организация может выступать как один из агентов, однако касса может быть зарегистрирована под несколько видов агентов.
Возможные значения:
16
– Поверенный32
– Коммисионер64
– Иной агент
- supplier: required(object)
Данные поставщика
Properties- phones: required(array of Phone)
[Тег 1171] Номера контактных телефонов поставщика
Номер телефона должен быть в формате
E.164
(номер начинается с плюса и содержит только цифры), иначе запрос отклоняется - name: required(string - minLength: 1 - maxLength: 256)
[Тег 1225] Наименование поставщика
- tin: required(string - minLength: 10 - maxLength: 12)
[Тег 1226] ИНН поставщика
Если поставщику не присвоен ИНН на территории РФ, то должно отправляться значение
000000000000
- phones: required(array of Phone)
Платежный агент (субагент)
- type: required(one of 4, 8)
[Тег 1222] Признак агента
В каждом предмете расчета организация может выступать как один из агентов, однако касса может быть зарегистрирована под несколько видов агентов.
Возможные значения:
4
– Платежный агент8
– Платежный субагент
- supplier: required(object)
Данные поставщика
Properties- phones: required(array of Phone)
[Тег 1171] Номера контактных телефонов поставщика
Номер телефона должен быть в формате
E.164
(номер начинается с плюса и содержит только цифры), иначе запрос отклоняется - name: required(string - minLength: 1 - maxLength: 256)
[Тег 1225] Наименование поставщика
- tin: required(string - minLength: 10 - maxLength: 12)
[Тег 1226] ИНН поставщика
Если поставщику не присвоен ИНН на территории РФ, то должно отправляться значение
000000000000
- phones: required(array of Phone)
- paying_agent: required(object)
Данные платежного агента
Properties- phones: required(array of Phone)
[Тег 1073] Номера телефонов платежного агента, платежного субагента, банковского платежного агента, банковского платежного субагента
Номер телефона должен быть в формате
E.164
(номер начинается с плюса и содержит только цифры), иначе запрос отклоняется
- phones: required(array of Phone)
- payment_operator: required(object)
Данные оператора по приему платежей
Properties- phones: required(array of Phone)
[Тег 1074] Номера контактных телефонов оператора по приему платежей
Номер телефона должен быть в формате
E.164
(номер начинается с плюса и содержит только цифры), иначе запрос отклоняется
- phones: required(array of Phone)
Банк. платежный агент (субагент)
- type: required(one of 1, 2)
[Тег 1222] Признак агента
В каждом предмете расчета организация может выступать как один из агентов, однако касса может быть зарегистрирована под несколько видов агентов.
Возможные значения:
1
– Банк. платежный агент2
– Банк. платежный субагент
- supplier: required(object)
Данные получателя средств
Properties- phones: required(array of Phone)
[Тег 1171] Номера контактных телефонов поставщика
Номер телефона должен быть в формате
E.164
(номер начинается с плюса и содержит только цифры), иначе запрос отклоняется - name: required(string - minLength: 1 - maxLength: 256)
[Тег 1225] Наименование поставщика
- tin: required(string - minLength: 10 - maxLength: 12)
[Тег 1226] ИНН поставщика
Если поставщику не присвоен ИНН на территории РФ, то должно отправляться значение
000000000000
- phones: required(array of Phone)
- paying_agent: required(object)
Данные платежного агента
Properties- phones: required(array of Phone)
[Тег 1073] Номера телефонов платежного агента, платежного субагента, банковского платежного агента, банковского платежного субагента
Номер телефона должен быть в формате
E.164
(номер начинается с плюса и содержит только цифры), иначе запрос отклоняется - operation: required(string - maxLength: 24)
[Тег 1044] Наименование операции агента
- phones: required(array of Phone)
- money_transfer_operator: required(object)
Данные оператора по переводу денежных средств
Properties- phones: required(array of Phone)
[Тег 1075] Номера телефонов оператора по переводу денежных средств
Номер телефона должен быть в формате
E.164
(номер начинается с плюса и содержит только цифры), иначе запрос отклоняется - name: required(string - minLength: 1 - maxLength: 64)
[Тег 1026] Наименование оператора по переводу денежных средств
- tin: required(string - minLength: 10 - maxLength: 12)
[Тег 1016] ИНН оператора перевода
- address: required(string - minLength: 1 - maxLength: 256)
[Тег 1005] Место нахождения (адрес) оператора по переводу денежных средств
- phones: required(array of Phone)
- type: required(one of 16, 32, 64)
- type: required(integer - minimum: 1 - maximum: 19)
- taxation: required(one of 1, 2, 4, 16, 32)
[Тег 1055] Система налогообложения.
Каждый чек может использовать только одну систему налогообложения, в то время как касса может применять несколько
Доступные системы налогообложения можно получить запросом
GET /c_groups/{c_group_id}
Возможные значения:
1
– ОРН2
– УСН доход4
– УСН доход - расход16
– ЕСН32
– ПСН
- amount: required(object)
Сумма этих полей должна совпадать с суммой полей amount каждого предмета расчета, с точностью до количества рублей, иначе запрос будет отклонен
Тег 1020 формируется как точная сумма полей внутри
Теги 1102, 1103, 1104, 1105, 1106, 1107 рассчитываются автоматически
Properties- cashless: (number - minimum: 0)
[Тег 1081] Сумма электронными (в рублях)
- prepayment: (number - minimum: 0)
[Тег 1215] Сумма предоплатой (зачетом аванса) (в рублях)
- cashless: (number - minimum: 0)
- notify: required(array of NotifyAddress - minItems: 1 - maxItems: 1)
Адреса клиентов, куда будут отосланы уведомления о чеке
Items: NotifyAddress
- type: required(one of email, phone)
Возможные значения:
email
phone
- value: required(string - maxLength: 100)
Номер телефона должен быть в формате
E.164
(номер начинается с плюса и содержит только цифры), иначе запрос отклоняется
- type: required(one of email, phone)
- customer: (object)
Поля
Propertiestin
иinfo
обязательны к отправке, если покупатель является юр. лицом- tin: (string - minLength: 10 - maxLength: 12)
[Тег 1228] ИНН организации или покупателя (клиента)
Если покупателю (клиенту) не присвоен ИНН на территории РФ, то должно отправляться значение
000000000000
- name: (string - minLength: 1 - maxLength: 256)
[Тег 1227] Наименование организации или фамилия, имя, отчество (при наличии), серия и номер паспорта покупателя (клиента)
- tin: (string - minLength: 10 - maxLength: 12)
- cashier: (object)
Данные кассира (человека, сформировавшего чек)
Если чек создается в автоматическом режиме, то данное поле не отправляется.
В каждой смене может быть только один кассир, поэтому если кассир в текущей смене отличается от отправленного в чеке, то смена закроется и откроется заново, что займет дополнительное время.
Если смена открыта без кассира, а чек отправлен с кассиром (или наоборот), то это вызовет переоткрытие смены.
Если два кассира имеют одинаковое поле
Propertiesname
, но только один из них имеет полеtin
, то это вызовет переоткрытие смены.- name: required(string - minLength: 1 - maxLength: 64)
[Тег 1021] Должность и фамилия лица, осуществившего расчет с покупателем (клиентом), оформившего кассовый чек (БСО) и выдавшего (передавшего) его покупателю (клиенту)
- tin: (string - minLength: 10 - maxLength: 12)
[Тег 1203] ИНН лица, осуществившего расчет с покупателем (клиентом), оформившего кассовый чек (БСО) и выдавшего (передавшего) его покупателю (клиенту)
- name: required(string - minLength: 1 - maxLength: 64)
- loc: required(object)
- billing_place: required(string)
[Тег 1187] Значение одного из места расчетов, которое доступно группе касс
Касса регистрируется на определенное место расчетов (сайт).
Если она регистрируется на несколько сайтов, то при регистрации их адреса разделяются
;
. В этом случае чек может содержать один из этих сайтовСписок доступных мест расчетов (сайтов) можно получить с помощью
GET /c_groups/{c_group_id}
- billing_place: required(string)
Examples:
Запрос без тегов агента:
POST /c_groups/123456789/receipts/online_store_agent/9bc687598b554320ae25745794d53a4e
{
"type": 1,
"items": [
{
"type": 1,
"name": "Безделушка",
"price": 14,
"quantity": 2,
"amount": 28,
"vat": 6,
"payment_method": 4
}
],
"amount": {
"cashless": 28
},
"taxation": 4,
"notify": [
{
"type": "email",
"value": "mail@example.com"
}
],
"loc": {
"billing_place": "https://example.com"
}
}
Запрос для комиссионера:
POST /c_groups/123456789/receipts/online_store_agent/4790c44ba2bd4e6b8ab65e98a31a4d02
Поверенный и иной агент отличаются только полем type
{
"type": 1,
"items": [
{
"type": 1,
"name": "Безделушка",
"price": 14,
"quantity": 2,
"amount": 28,
"vat": 6,
"payment_method": 4,
"agent": {
"type": 32,
"supplier": {
"phones": [
"+70495356290",
"+78658542230"
],
"name": "ООО \"Центнер\"",
"tin": "430913167793"
}
}
}
],
"amount": {
"cashless": 28
},
"taxation": 4,
"notify": [
{
"type": "email",
"value": "mail@example.com"
}
],
"loc": {
"billing_place": "https://example.com"
}
}
Запрос для платежного агента:
POST /c_groups/123456789/receipts/online_store_agent/33d4bb79a12d4be6a372764485e1a396
Платежный субагент отличается только полем type
{
"type": 1,
"items": [
{
"type": 1,
"name": "Безделушка",
"price": 14,
"quantity": 2,
"amount": 28,
"vat": 6,
"payment_method": 4,
"agent": {
"type": 4,
"supplier": {
"phones": [
"+79061119858"
],
"name": "ООО \"Центнер\"",
"tin": "430913167793"
},
"paying_agent": {
"phones": [
"+76070631408"
]
},
"payment_operator": {
"phones": [
"+70495356290",
"+78658542230"
]
}
}
}
],
"amount": {
"cashless": 28
},
"taxation": 4,
"notify": [
{
"type": "email",
"value": "mail@example.com"
}
],
"loc": {
"billing_place": "https://example.com"
}
}
Запрос для банк. платежного агента:
POST /c_groups/123456789/receipts/online_store_agent/dfd126ca851a40f4a4ce5567add557de
Банк. платежный субагент отличается только полем type
{
"type": 1,
"items": [
{
"type": 1,
"name": "Безделушка",
"price": 14,
"quantity": 2,
"amount": 28,
"vat": 6,
"payment_method": 4,
"agent": {
"type": 1,
"supplier": {
"phones": [
"+70495356290",
"+78658542230"
],
"name": "ООО \"Центнер\"",
"tin": "430913167793"
},
"money_transfer_operator": {
"phones": [
"+74368176579"
],
"name": "ООО \"Лексиканум\"",
"tin": "366021190670",
"address": "к. Одинцово, ш. Космодемьянской, д. 307 к. 694, 382236"
},
"paying_agent": {
"phones": [
"+76070631408"
],
"operation": "Выдача наличных"
}
}
}
],
"amount": {
"cashless": 28
},
"taxation": 4,
"notify": [
{
"type": "email",
"value": "mail@example.com"
}
],
"loc": {
"billing_place": "https://example.com"
}
}
HTTP status code 201
Возвращен пейлоад чека
Body
Media type: application/json
Type: object
Properties- fiscal_payload: required(object)
- reg_time: required(datetime)
Время регистрации фискального документа в ФН.
Формат –
rfc3339
- shift_num: required(integer)
Номер смены
- index: required(integer)
Номер чека в смене
- fiscal_sign: required(integer)
Фискальный признак документа
Представляет собой 4 байтовое беззнаковое целое
- fiscal_num: required(integer)
Фискальный номер документа
Представляет собой 4 байтовое беззнаковое целое
- reg_time: required(datetime)
- cashbox: required(object)
- rn: required(string - maxLength: 20)
Регистрационный номер устройства пробившего чек
- factory_num: required(string - maxLength: 20)
Заводской номер ККТ
- ffd: required(string)
Версия ФФД ККТ
- fn_num: required(string - minLength: 16 - maxLength: 16)
Номер фискального накопителя
- rn: required(string - maxLength: 20)
- company: required(object)
- tin: required(string - minLength: 10 - maxLength: 12)
ИНН компании
- name: required(string)
Название компании
- tin: required(string - minLength: 10 - maxLength: 12)
- rec_info: required(object)
- total_amount: required(number)
Итоговая сумма чека (в рублях) [Тег 1020]
- type: required(integer)
Признак расчета [Тег 1054]
- total_amount: required(number)
HTTP status code 202
Обработка чека не завершена
Body
Media type: application/json
Type: object
Properties- delay: required(number)
Кол-во секунд, через которое стоит проверить состояние чека.
Настоятельно рекомендуем не делать запрос проверки раньше указанного срока
HTTP status code 400
Ошибка синтаксиса или структуры чека
Body
Media type: application/json
Type: object
Properties- path: required(string)
Путь до места ошибки в форме JSON Path
То, куда указывает путь, определяется типом ошибки
Путь всегда указывает на единственный узел
- desc: required(string)
Человекочитаемое описание ошибки в произвольном формате
- type: required(array of string)
Тип ошибки.
Массив представляет собой путь в иерархии типов, такой формат позволяет добавлять новые ошибки и уточнять старые, не ломая обратную совместимость.
К примеру, если вы ожидаете
["UNAVAILABLE_VALUE", "UA_TAXATION"]
, то должны проверять, что массив начинается с этих значений. Проверка на равенство недопустима.Сервис может отвечать массивом значений, характеризующим ошибку точнее, чем указано в документации, но вы не должны полагаться на такое поведение. Только задокументированное поведение имеет обратную совместимость.
Если обозначено на какой узел указывает
path
, тоpath
всех подтипов этой ошибки будет указывать на тот же узелИерархия ошибок
BAD_STRUCTURE
Ошибка структуры запроса, из-за которой нельзя его проанализировать.Примеры: ошибка синтаксиса JSON, отсутствуют необходимые хедеры
path
равен$
BAD_VALUE
Поле имеет значение, не соответствующее собственному форматуpath
указывает на поле с ошибочными даннымиТакже существует проверки: формата ИНН, кода страны происхождения товара, номера таможенной декларации, кодировки строк, кодировки чисел, формата номера телефона, а также параметров, которые описаны с помощью JSON Schema (длина строки, размер массива и т.д.)
- UNKNOWN_MARKING
Неизвестный (неверный) формат кода маркировки
- UNKNOWN_MARKING
UNAVAILABLE_VALUE
Значение поля удовлетворяет требуемому формату, но оно не может быть применено вамиpath
указывает на поле с ошибочными даннымиUA_TAXATION
Отправлена система налогообложения, недоступная группе кассUA_BILLING_PLACE
Отправлено место расчетов, недоступное группе кассUA_AGENT_TYPE
Отправлен признак агента, недоступный группе кассUA_MACHINE_NUM
Отправлен номер автомата, недоступный группе касс
UNEXPECTED_FIELD
Отправлено лишнее полеpath
указывает на лишнее поле
MISSED_REQUIRED_FIELD
Пропущено обязательное полеpath
указывает на пропущенное поле
AMOUNT_DIVERGENCE
Сумма полей внутриamount
расходится с суммой полейamount
каждого чека в рублях (количество копеек может не совпадать)path
равен$
INCONSISTENT_ITEM_DATA
Предоставленные данные содержат противоречивые сведенияpath
указывает на предмет расчетаПроверяется: сходимость amount и
price * quantity
, кол-во предметов расчета при маркировке, корректность акциза и т.д.
Examples:
Некорректная маркировка:
{
"type": [
"BAD_VALUE",
"UNKNOWN_MARKING"
],
"desc": "Формат маркировки неизвестен",
"path": "$.items[1].marking"
}
Строка с некодируемым символом:
{
"type": [
"BAD_VALUE"
],
"desc": "Символ `Ø` не может быть представлен в CP866",
"path": "$.items[6].name"
}
Опечатка в имени поля:
{
"type": [
"UNEXPECTED_FIELD"
],
"desc": "Поле `customs_info` не ожидается",
"path": "$.items[0].customs_info"
}
HTTP status code 401
Неверный actor_id
или actor_token
, либо заголовок авторизации отсутствует или имеет неверный формат
HTTP status code 402
Группа касс или компания неактивна, необходима оплата для совершения запроса
HTTP status code 403
Актор, от лица которого совершается запрос, деактивирован
HTTP status code 404
Указанная группа касс не существует или недоступна для актора
HTTP status code 406
Этот запрос невозможен для группы касс с данным типом
HTTP status code 409
Чек с таким же receipt_id
уже существует
HTTP status code 422
Исключительная ситуация, когда ошибка данных чека не была поймана перед его созданием, но была обнаружена самой кассой
С каждый таким случаем мы разбираемся отдельно
HTTP status code 500
Внутренняя ошибка сервера
HTTP status code 503
Сервер не может обработать запрос в данный момент
Headers
- Retry-After: required(integer)
Время (секунды), через которое нужно сделать еще одну попытку
/c_groups/{c_group_id}/receipts/{receipt_id}
Получение статуса чека
get /c_groups/{c_group_id}/receipts/{receipt_id}
Каждый запрос должен содержать заголовок Authorization
URI Parameters
- c_group_id: required(integer)
Id группы касс
- receipt_id: required(string)
Уникальный идентификатор чека
Headers
- Authorization: required(string)
Формат – BasicAuth с кодировкой текста utf-8
Именем пользователя должен быть
actor_id
, а паролемactor_token
.Для формирования заголовка нужно соединить имя пользователя и пароль с помощью символа
:
, закодировать получившуюся строку в base64 и добавить префиксBasic
с пробеломExample:
actor_id=
1234567
actor_token=gmFjyQg5zG88gBt3oy41qQPwk
Basic MTIzNDU2NzpnbUZqeVFnNXpHODhnQnQzb3k0MXFRUHdr
HTTP status code 200
Возвращен пейлоад чека
Body
Media type: application/json
Type: object
Properties- fiscal_payload: required(object)
- reg_time: required(datetime)
Время регистрации фискального документа в ФН.
Формат –
rfc3339
- shift_num: required(integer)
Номер смены
- index: required(integer)
Номер чека в смене
- fiscal_sign: required(integer)
Фискальный признак документа
Представляет собой 4 байтовое беззнаковое целое
- fiscal_num: required(integer)
Фискальный номер документа
Представляет собой 4 байтовое беззнаковое целое
- reg_time: required(datetime)
- cashbox: required(object)
- rn: required(string - maxLength: 20)
Регистрационный номер устройства пробившего чек
- factory_num: required(string - maxLength: 20)
Заводской номер ККТ
- ffd: required(string)
Версия ФФД ККТ
- fn_num: required(string - minLength: 16 - maxLength: 16)
Номер фискального накопителя
- rn: required(string - maxLength: 20)
- company: required(object)
- tin: required(string - minLength: 10 - maxLength: 12)
ИНН компании
- name: required(string)
Название компании
- tin: required(string - minLength: 10 - maxLength: 12)
- rec_info: required(object)
- total_amount: required(number)
Итоговая сумма чека (в рублях) [Тег 1020]
- type: required(integer)
Признак расчета [Тег 1054]
- total_amount: required(number)
HTTP status code 202
Обработка чека не завершена
Body
Media type: application/json
Type: object
Properties- delay: required(number)
Кол-во секунд, через которое стоит проверить состояние чека.
Настоятельно рекомендуем не делать запрос проверки раньше указанного срока
HTTP status code 400
Ошибка синтаксиса или структуры чека
Body
Media type: application/json
Type: object
Properties- path: required(string)
Путь до места ошибки в форме JSON Path
То, куда указывает путь, определяется типом ошибки
Путь всегда указывает на единственный узел
- desc: required(string)
Человекочитаемое описание ошибки в произвольном формате
- type: required(array of string)
Тип ошибки.
Массив представляет собой путь в иерархии типов, такой формат позволяет добавлять новые ошибки и уточнять старые, не ломая обратную совместимость.
К примеру, если вы ожидаете
["UNAVAILABLE_VALUE", "UA_TAXATION"]
, то должны проверять, что массив начинается с этих значений. Проверка на равенство недопустима.Сервис может отвечать массивом значений, характеризующим ошибку точнее, чем указано в документации, но вы не должны полагаться на такое поведение. Только задокументированное поведение имеет обратную совместимость.
Если обозначено на какой узел указывает
path
, тоpath
всех подтипов этой ошибки будет указывать на тот же узелИерархия ошибок
BAD_STRUCTURE
Ошибка структуры запроса, из-за которой нельзя его проанализировать.Примеры: ошибка синтаксиса JSON, отсутствуют необходимые хедеры
path
равен$
BAD_VALUE
Поле имеет значение, не соответствующее собственному форматуpath
указывает на поле с ошибочными даннымиТакже существует проверки: формата ИНН, кода страны происхождения товара, номера таможенной декларации, кодировки строк, кодировки чисел, формата номера телефона, а также параметров, которые описаны с помощью JSON Schema (длина строки, размер массива и т.д.)
- UNKNOWN_MARKING
Неизвестный (неверный) формат кода маркировки
- UNKNOWN_MARKING
UNAVAILABLE_VALUE
Значение поля удовлетворяет требуемому формату, но оно не может быть применено вамиpath
указывает на поле с ошибочными даннымиUA_TAXATION
Отправлена система налогообложения, недоступная группе кассUA_BILLING_PLACE
Отправлено место расчетов, недоступное группе кассUA_AGENT_TYPE
Отправлен признак агента, недоступный группе кассUA_MACHINE_NUM
Отправлен номер автомата, недоступный группе касс
UNEXPECTED_FIELD
Отправлено лишнее полеpath
указывает на лишнее поле
MISSED_REQUIRED_FIELD
Пропущено обязательное полеpath
указывает на пропущенное поле
AMOUNT_DIVERGENCE
Сумма полей внутриamount
расходится с суммой полейamount
каждого чека в рублях (количество копеек может не совпадать)path
равен$
INCONSISTENT_ITEM_DATA
Предоставленные данные содержат противоречивые сведенияpath
указывает на предмет расчетаПроверяется: сходимость amount и
price * quantity
, кол-во предметов расчета при маркировке, корректность акциза и т.д.
Examples:
Некорректная маркировка:
{
"type": [
"BAD_VALUE",
"UNKNOWN_MARKING"
],
"desc": "Формат маркировки неизвестен",
"path": "$.items[1].marking"
}
Строка с некодируемым символом:
{
"type": [
"BAD_VALUE"
],
"desc": "Символ `Ø` не может быть представлен в CP866",
"path": "$.items[6].name"
}
Опечатка в имени поля:
{
"type": [
"UNEXPECTED_FIELD"
],
"desc": "Поле `customs_info` не ожидается",
"path": "$.items[0].customs_info"
}
HTTP status code 401
Неверный actor_id
или actor_token
, либо заголовок авторизации отсутствует или имеет неверный формат
HTTP status code 402
Группа касс или компания неактивна, необходима оплата для совершения запроса
HTTP status code 403
Актор, от лица которого совершается запрос, деактивирован
HTTP status code 404
Чек с таким receipt_id
не существует у данной группы касс, или у актора нет к нему доступа, или неверный формат id чека
HTTP status code 422
Исключительная ситуация, когда ошибка данных чека не была поймана перед его созданием, но была обнаружена самой кассой
С каждый таким случаем мы разбираемся отдельно
HTTP status code 500
Внутренняя ошибка сервера
HTTP status code 503
Сервер не может обработать запрос в данный момент
Headers
- Retry-After: required(integer)
Время (секунды), через которое нужно сделать еще одну попытку
/c_groups/{c_group_id}/receipts/{receipt_id}/html-debug
Получение отладочного html-рендера чека
Это графическое представление чека не подходит для отображения покупателю, поскольку не удовлетворяет всем требованиям законодательства, но может использоваться для просмотра чека внутри организации
get /c_groups/{c_group_id}/receipts/{receipt_id}/html-debug
Это графическое представление чека не подходит для отображения покупателю, поскольку не удовлетворяет всем требованиям законодательства, но может использоваться для просмотра чека внутри организации
Каждый запрос должен содержать заголовок Authorization
URI Parameters
- c_group_id: required(integer)
Id группы касс
- receipt_id: required(string)
Уникальный идентификатор чека
Headers
- Authorization: required(string)
Формат – BasicAuth с кодировкой текста utf-8
Именем пользователя должен быть
actor_id
, а паролемactor_token
.Для формирования заголовка нужно соединить имя пользователя и пароль с помощью символа
:
, закодировать получившуюся строку в base64 и добавить префиксBasic
с пробеломExample:
actor_id=
1234567
actor_token=gmFjyQg5zG88gBt3oy41qQPwk
Basic MTIzNDU2NzpnbUZqeVFnNXpHODhnQnQzb3k0MXFRUHdr
HTTP status code 200
Возвращен рендер чека
Body
Media type: text/html
Type: string
HTTP status code 202
Обработка чека не завершена
Body
Media type: application/json
Type: object
Properties- delay: required(number)
Кол-во секунд, через которое стоит проверить состояние чека.
Настоятельно рекомендуем не делать запрос проверки раньше указанного срока
HTTP status code 400
Ошибка синтаксиса или структуры чека
Body
Media type: application/json
Type: object
Properties- path: required(string)
Путь до места ошибки в форме JSON Path
То, куда указывает путь, определяется типом ошибки
Путь всегда указывает на единственный узел
- desc: required(string)
Человекочитаемое описание ошибки в произвольном формате
- type: required(array of string)
Тип ошибки.
Массив представляет собой путь в иерархии типов, такой формат позволяет добавлять новые ошибки и уточнять старые, не ломая обратную совместимость.
К примеру, если вы ожидаете
["UNAVAILABLE_VALUE", "UA_TAXATION"]
, то должны проверять, что массив начинается с этих значений. Проверка на равенство недопустима.Сервис может отвечать массивом значений, характеризующим ошибку точнее, чем указано в документации, но вы не должны полагаться на такое поведение. Только задокументированное поведение имеет обратную совместимость.
Если обозначено на какой узел указывает
path
, тоpath
всех подтипов этой ошибки будет указывать на тот же узелИерархия ошибок
BAD_STRUCTURE
Ошибка структуры запроса, из-за которой нельзя его проанализировать.Примеры: ошибка синтаксиса JSON, отсутствуют необходимые хедеры
path
равен$
BAD_VALUE
Поле имеет значение, не соответствующее собственному форматуpath
указывает на поле с ошибочными даннымиТакже существует проверки: формата ИНН, кода страны происхождения товара, номера таможенной декларации, кодировки строк, кодировки чисел, формата номера телефона, а также параметров, которые описаны с помощью JSON Schema (длина строки, размер массива и т.д.)
- UNKNOWN_MARKING
Неизвестный (неверный) формат кода маркировки
- UNKNOWN_MARKING
UNAVAILABLE_VALUE
Значение поля удовлетворяет требуемому формату, но оно не может быть применено вамиpath
указывает на поле с ошибочными даннымиUA_TAXATION
Отправлена система налогообложения, недоступная группе кассUA_BILLING_PLACE
Отправлено место расчетов, недоступное группе кассUA_AGENT_TYPE
Отправлен признак агента, недоступный группе кассUA_MACHINE_NUM
Отправлен номер автомата, недоступный группе касс
UNEXPECTED_FIELD
Отправлено лишнее полеpath
указывает на лишнее поле
MISSED_REQUIRED_FIELD
Пропущено обязательное полеpath
указывает на пропущенное поле
AMOUNT_DIVERGENCE
Сумма полей внутриamount
расходится с суммой полейamount
каждого чека в рублях (количество копеек может не совпадать)path
равен$
INCONSISTENT_ITEM_DATA
Предоставленные данные содержат противоречивые сведенияpath
указывает на предмет расчетаПроверяется: сходимость amount и
price * quantity
, кол-во предметов расчета при маркировке, корректность акциза и т.д.
Examples:
Некорректная маркировка:
{
"type": [
"BAD_VALUE",
"UNKNOWN_MARKING"
],
"desc": "Формат маркировки неизвестен",
"path": "$.items[1].marking"
}
Строка с некодируемым символом:
{
"type": [
"BAD_VALUE"
],
"desc": "Символ `Ø` не может быть представлен в CP866",
"path": "$.items[6].name"
}
Опечатка в имени поля:
{
"type": [
"UNEXPECTED_FIELD"
],
"desc": "Поле `customs_info` не ожидается",
"path": "$.items[0].customs_info"
}
HTTP status code 401
Неверный actor_id
или actor_token
, либо заголовок авторизации отсутствует или имеет неверный формат
HTTP status code 402
Группа касс или компания неактивна, необходима оплата для совершения запроса
HTTP status code 403
Актор, от лица которого совершается запрос, деактивирован
HTTP status code 404
Чек с таким receipt_id
не существует у данной группы касс, или у актора нет к нему доступа, или неверный формат id чека
HTTP status code 422
Исключительная ситуация, когда ошибка данных чека не была поймана перед его созданием, но была обнаружена самой кассой
С каждый таким случаем мы разбираемся отдельно
HTTP status code 500
Внутренняя ошибка сервера
HTTP status code 503
Сервер не может обработать запрос в данный момент
Headers
- Retry-After: required(integer)
Время (секунды), через которое нужно сделать еще одну попытку