M cenaly.ru
🔌 Кассовый сервер: чеки по API

📋 Реквизиты чека: состав и справочники

Полный состав receipt: покупатель, продавец, позиции и оплаты; таблицы признаков расчёта, единиц измерения, ставок НДС, агентских реквизитов и маркировки

Документация

Реквизиты чека: состав и справочники

Здесь — полный состав объекта receipt (для чеков коррекции он называется correction) и все справочники значений, которые принимает API кассового сервера. Всё, что описано ниже, проверяется на приёме: непрошедший проверку чек возвращает ошибку 32, и текст ошибки называет конкретное поле.


1. Каркас#

{
  "client":   { "email": "buyer@example.com" },
  "company":  { "email": "shop@example.com", "sno": "usn_income",
                "inn": "7736570901", "payment_address": "https://shop.example" },
  "items":    [ /* 1…100 позиций */ ],
  "payments": [ /* минимум одна оплата */ ],
  "vats":     [ { "type": "vat20", "sum": 416.67 } ],
  "total": 2500.00,
  "cashier": "Иванов И.И.",
  "cashier_inn": "123456789047",
  "additional_check_props": "Заказ №10421",
  "additional_user_props": { "name": "Менеджер", "value": "Петров" },
  "internet": true,
  "device_number": "web-1"
}

Обязательный минимум: client (для операций-продаж), company, items, payments, total.

Денежные правила#

Правило Проверка
total = сумма items[].sum Допуск 0.01 ₽ на позицию (округления)
total > 0 Строго
Σ payments[].sum = total Точно (эпсилон 0.005 ₽)
Все суммы — в рублях Дробная часть — копейки: 1250.50

Суммы передаются числами, не строками. Позиция считается как price × quantity, но итог позиции берётся из sum — если у вас скидка на позицию, кладите в sum фактическую стоимость.


2. client — покупатель#

Для интернет-расчёта чек всегда электронный, поэтому нужен адрес доставки чека: минимум одно из email / phone. Если заданы оба, ОФД отправит чек на e-mail.

Поле Тег Описание
email 1008 Электронная почта покупателя
phone 1008 Телефон в формате +7XXXXXXXXXX
name 1227 Наименование/ФИО покупателя (для B2B и подакцизных)
inn 1228 ИНН покупателя
birthdate 1243 Дата рождения, дд.мм.гггг
citizenship 1244 Код страны по ОКСМ, например 643
document_code 1245 Код вида документа, удостоверяющего личность
document_data 1246 Данные документа
address 1254 Адрес покупателя

Расширенные реквизиты (nameaddress) нужны в отдельных отраслевых случаях — обычному интернет-магазину достаточно email или phone. Их поддержка зависит от модели кассы: если ККТ их не умеет, документ вернётся с ошибкой драйвера — текстом самой кассы (например: «реквизиты покупателя (теги 1227/1228/1008/1256)… не поддерживаются»), без отдельного кода ошибки.


3. company — продавец#

Поле Тег Обяз. Описание
inn 1018 да ИНН организации или ИП: 10 или 12 цифр
sno 1055 рекомендуется Система налогообложения, см. таблицу ниже
payment_address 1187 рекомендуется Место расчётов — адрес вашего сайта
email 1117 рекомендуется Адрес отправителя чека

ИНН обязан совпадать с ИНН, на который зарегистрирован ФН вашей кассы. Несовпадение отклоняется сразу при регистрации: HTTP 400, ошибка 32, текст называет оба ИНН — чека и группы. Документ в очередь не попадает.

Системы налогообложения (sno)#

Значение Расшифровка
osn Общая
usn_income Упрощённая, доход
usn_income_outcome Упрощённая, доход минус расход
envd Единый налог на вменённый доход
esn Единый сельскохозяйственный налог
patent Патентная система

Если поле не передано, применяется СНО по умолчанию, заданная для вашей кассовой группы.


4. items — позиции#

{
  "name": "Кофе в зёрнах, 1 кг",
  "price": 1250.00,
  "quantity": 2,
  "sum": 2500.00,
  "measure": 11,
  "payment_method": "full_payment",
  "payment_object": 1,
  "vat": { "type": "vat20" },
  "user_data": "Артикул A-100"
}
Поле Тег Обяз. (v5) Описание
name 1030 да Наименование, ≤ 128 символов
price 1079 да Цена за единицу
quantity 1023 да Количество, > 0, допускается дробное
sum 1043 да Стоимость позиции
measure 2108 да Числовой код единицы измерения
payment_method 1214 да Признак способа расчёта
payment_object 1212 да Признак предмета расчёта, число 1…33
vat.type 1199 да Ставка НДС
vat.sum 1200 нет Сумма НДС, если считаете сами
user_data 1191 нет Дополнительный реквизит позиции
excise 1229 нет Акциз
country_code 1230 нет Код страны происхождения (ОКСМ)
declaration_number 1231 нет Номер таможенной декларации
mark_code 1163 нет Код маркировки, см. §7
mark_quantity 1291 нет Дробное количество маркированного товара
agent_info / supplier_info 1222/1224 нет Агентская схема, см. §8
sectoral_item_props 1260 нет Отраслевой реквизит позиции

Признак способа расчёта (payment_method)#

Значение Смысл Когда типично в интернет-магазине
full_prepayment Предоплата 100 % Оплата на сайте до отгрузки
prepayment Частичная предоплата Оплачена часть заказа
advance Аванс Оплата без конкретной номенклатуры (подарочный сертификат)
full_payment Полный расчёт Оплата и передача товара одновременно
partial_payment Частичный расчёт и кредит Часть оплачена, остальное в рассрочку
credit Передача в кредит Товар отгружен без оплаты
credit_payment Оплата кредита Гасится ранее выданный кредит

Признак предмета расчёта (payment_object, v5 — число)#

Код Предмет Код Предмет
1 Товар 17 Торговый сбор
2 Подакцизный товар 18 Курортный сбор
3 Работа 19 Залог
4 Услуга 20 Расход
5 Ставка азартной игры 21 Взносы на ОПС у ИП
6 Выигрыш азартной игры 22 Взносы на ОПС
7 Лотерейный билет 23 Взносы на ОМС у ИП
8 Выигрыш лотереи 24 Взносы на ОМС
9 Результат интеллектуальной деятельности 25 Взносы на ОСС
10 Платёж 26 Платёж казино
11 Агентское вознаграждение 27 Выдача денежных средств
12 Выплата 30 Подакцизный маркируемый товар без кода
13 Иной предмет расчёта 31 Подакцизный маркируемый товар с кодом
14 Имущественное право 32 Маркируемый товар без кода
15 Внереализационный доход 33 Маркируемый товар с кодом
16 Иные платежи и взносы

Обычный товар интернет-магазина — код 1; услуга — 4; маркируемый товар со сканированным кодом — 33.

В протоколе v4 то же поле передаётся строкой (commodity, service, job, payment, agent_commission, another и т. д.) — исторические имена v4 принимаются и приводятся к современной таблице автоматически.

Единица измерения (measure, v5 — число)#

Код Единица Код Единица Код Единица
0 Штука, единица 30 см² 70 Сутки
10 Грамм 31 дм² 71 Час
11 Килограмм 32 м² 72 Минута
12 Тонна 40 Миллилитр 73 Секунда
20 Сантиметр 41 Литр 80 Килобайт
21 Дециметр 42 м³ 81 Мегабайт
22 Метр 50 кВт·ч 82 Гигабайт
51 Гкал 83 Терабайт
255 Иная единица

В v4 вместо кода передаётся строка measurement_unit («шт», «кг», «л», «час»); нераспознанная строка приводится к «иной единице».

Ставки НДС (vat.type)#

Значение Ставка
none НДС не облагается
vat0 0 %
vat5 5 % (УСН)
vat7 7 % (УСН)
vat10 10 %
vat20 20 %
vat22 22 %
vat105 5/105 — расчётная
vat107 7/107 — расчётная
vat110 10/110 — расчётная
vat120 20/120 — расчётная
vat122 22/122 — расчётная

Расчётные ставки применяются к суммам, в которых налог уже «сидит» внутри, — например к авансам и предоплатам.

Ставки 22 % и 22/122 требуют кассы с прошивкой, знающей новую ставку. Часть моделей старых поколений её физически не принимает — уточните у своего ЦТО.


5. payments — оплаты#

"payments": [ { "type": 1, "sum": 2500.00 } ]
type Форма расчёта Когда
0 Наличные Курьер принял наличные
1 Безналичные Оплата картой, СБП, электронный кошелёк
2 Предоплата (аванс) Зачёт ранее полученного аванса
3 Постоплата (кредит) Товар передан в кредит
4 Встречное предоставление Взаимозачёт, бартер

Оплат может быть несколько, их сумма обязана совпадать с total; своего лимита на число оплат сервис не ставит — ограничение задаёт сама ККТ и формат фискальных документов. Для интернет-магазина, принимающего оплату картой на сайте, это всегда {"type": 1, "sum": <итог>}.


6. vats — сводные ставки#

Необязательный блок: сводка по НДС на весь чек ([{ "type": "vat20", "sum": 416.67 }]). Если не передан, касса посчитает налоги по позициям сама.


7. Маркировка#

Код маркировки передаётся ровно одним полем-форматом:

"payment_object": 33,
"mark_code": { "gs1m": "MDEwNDYwNzQyODY3OTA5MDIxOU..." },
"mark_quantity": { "numerator": 1, "denominator": 2 }
Формат Что это
unknown Нераспознанный код (передаётся как есть)
ean8, ean13, itf14 Товарные штрихкоды
gs10, gs1m GS1 DataMatrix (gs1m — в Base64)
short Сокращённый код
fur Меховое изделие
egais20, egais30 ЕГАИС (алкоголь)

mark_quantity (дробная продажа маркированного товара) допускается только вместе с кодом маркировки. В протоколе v4 вместо mark_code используется nomenclature_code — hex-строка.

Важно. Код маркировки передаётся в вашу кассу как есть: проверку кода в «Честном знаке» и разрешительный режим (ТС ПИоТ) сервис не выполняет. Если ваш товар подлежит разрешительному режиму, проверку нужно выполнять до отправки чека — на стороне вашей учётной системы или кассового ПО.


8. Агентская схема#

Когда вы продаёте товар принципала (маркетплейс, платёжный агент, комиссионер), позиция дополняется двумя блоками:

"agent_info": { "type": "commission_agent" },
"supplier_info": { "name": "ООО Поставщик", "inn": "7736570901", "phones": ["+79001234567"] }
agent_info.type Роль
bank_paying_agent Банковский платёжный агент
bank_paying_subagent Банковский платёжный субагент
paying_agent Платёжный агент
paying_subagent Платёжный субагент
attorney Поверенный
commission_agent Комиссионер
another Иной агент

supplier_info с корректным ИНН обязателен, если задан agent_info, — иначе чек не пройдёт валидацию. Для платёжных агентов дополнительно заполняются телефоны оператора приёма платежей и данные оператора перевода внутри agent_info.


9. Прочие реквизиты чека#

Поле Тег Описание
cashier / cashier_inn 1021 / 1203 Кассир и его ИНН
additional_check_props 1192 Дополнительный реквизит чека (например, номер заказа)
additional_user_props 1084 Дополнительный реквизит пользователя: {name, value}
device_number 1036 Номер автомата/канала продаж
internet 1125 Признак расчёта в Интернете (для операций через API подставляется автоматически)
cashless_payments 1234 Сведения о безналичных оплатах
operating_check_props 1270 Операционный реквизит чека
sectoral_check_props 1261 Отраслевой реквизит чека: federal_id, date, number, value

10. Чек коррекции#

Для операций *_correction тело документа передаётся в корне correction, а основание — в correction_info:

{
  "timestamp": "04.08.2026 15:00:00",
  "external_id": "corr-10421",
  "correction_info": { "type": "self", "base_date": "03.08.2026", "base_number": "1" },
  "correction": {
    "company": { "sno": "usn_income", "inn": "7736570901", "payment_address": "https://shop.example" },
    "items": [ /* как в обычном чеке */ ],
    "payments": [ { "type": 1, "sum": 2500.00 } ],
    "total": 2500.00
  }
}
  • correction_info.type: self — самостоятельно, instruction — по предписанию налогового органа.
  • base_date обязателен всегда, base_number — обязателен при instruction.
  • Блок client в коррекции не обязателен.

Когда какой чек коррекции нужен по закону — в справочнике Чек коррекции и разборе типовых ситуаций рядом с ним.


Дальше: сценарии интернет-магазина · ошибки и диагностика · справочник API.