Обсудить проект

Честный Знак при отгрузке со склада: битые коды

Возненко Игорь «Ось Бизнеса» обновлено 30 августа 2026 г.

Покупатель стоит у кассы, товар пробивают — и чек не проходит. Товар тот самый, коробка целая, на ней ровный DataMatrix. Не проходит код маркировки: касса отправила его на проверку в Честный Знак и получила отказ.

Разбираться приходится задним числом, а разбирать нечего: физически всё правильно, ломается передача кода. Расскажу, где именно она ломается, что проверять до отгрузки и какие три вещи закрывают проблему целиком. Это опыт с боевого проекта, где маркированный товар уезжает через склад-подрядчика, и часть кодов приезжала оттуда битой.

Как код доходит до кассы

Код маркировки живёт дольше и путешествует дальше, чем кажется. Путь такой:

  1. Эмиссия. Производитель или импортёр получает коды в Честном Знаке и наносит DataMatrix на упаковку.
  2. Приёмка на складе. Товар приходит на склад — свой или подрядчика, — и коды числятся за конкретными единицами.
  3. Отгрузка. Склад собирает заказ и передаёт вам коды тех единиц, что реально уехали.
  4. Чек. Касса отправляет код в ОФД, тот проверяет его в системе Честного Знака.
  5. Погашение. Код выводится из оборота: эта единица продана.

Путь кода маркировки: эмиссия, приёмка на складе, отгрузка, чек, погашение — с отметкой шага, где код ломается

Пять шагов, но проблема почти всегда на третьем: код едет от склада к вам.

Ошибиться можно на любом стыке, но на практике всё ломается в одном месте — на третьем шаге, когда код едет от склада к вам. Дальше касса просто честно сообщает, что получила.

Почему код приезжает неполным

Главная причина обидная: код переписывают глазами с подписи под DataMatrix.

Под квадратом обычно напечатана человекочитаемая строка — код товара и серийный номер. Выглядит она как полный код, но полным не является: в неё не входит криптографическая часть, тот самый «криптохвост». Сканер её читает, глаз — нет. Если кладовщик переписал код с подписи или сфотографировал этикетку и продиктовал, до вас доедет обрубок.

На кассе такой код выглядит как «код маркировки не распознан», в статистике ОФД — как некорректный. У нас так пришло несколько сотен позиций, и нашлось это не в момент отгрузки, а когда чеки начали отбиваться.

Реже, но встречается ещё три причины:

  • Разделители GS. В коде есть служебные символы-разделители. Часть систем их сохраняет, часть теряет, а некоторые вставляют лишние. Касса и Честный Знак принимают код без них — приводить к одному виду надо у себя, а не надеяться на склад.
  • Excel. Коды выгружают таблицей, таблица обрезает длинные строки и «улучшает» их автоформатом. Если обмен со складом идёт файлами, это вопрос времени.
  • Ручной ввод. Любая точка, где код набирают руками, рано или поздно даёт ошибку в один символ. Символ этот не виден.

Три эшелона защиты

Одной проверки мало: каждая ловит свой класс ошибок и пропускает чужие. Работающий набор — три.

Три эшелона защиты от битого кода: валидатор до отгрузки, разрешительный режим кассы, правильное поле в чеке

Порядок срабатывания обратный порядку внедрения: валидатор ловит раньше всех, касса — последней.

1. Разрешительный режим на кассе. Касса перед пробитием спрашивает Честный Знак, можно ли продавать именно эту единицу, и не даёт пробить битый или уже погашенный код. Это последний рубеж, и он обязателен: он ловит даже то, о чём вы не знали.

Здесь же проверьте настройки самой кассы. У нас чеки сначала отбивались не из-за кодов: в настройках не был включён признак торговли маркированными товарами. Лечится перерегистрацией кассы, но найти это без подсказки трудно — сообщение об ошибке о признаке не говорит.

2. Свой валидатор до отгрузки. Простая проверка полноты кода на вашей стороне: пришёл код без криптографической части — не принимаем и запрашиваем повторно. Проверка стоит один вечер работы, а ловит ровно ту ошибку, которая случается чаще всех. Важно, чтобы она стояла до отгрузки, а не в момент чека: пока товар не уехал, код можно перечитать сканером.

3. Правильное поле в чеке. Код маркировки уходит в чек отдельным реквизитом, а не строкой в наименовании товара. Мы на этом потеряли время: система слала код не тем полем, чек уходил, касса не ругалась, а Честный Знак его не видел. Внешне всё работает, по факту — продажи без маркировки.

Проверить просто: в личном кабинете ОФД есть статистика по маркировке. Если коды доходят правильно, там «корректные коды — 100%». Любая цифра меньше означает, что часть чеков уже ушла с проблемой.

Возврат битым кодом делает хуже

Отдельная ловушка. Товар с проблемным кодом возвращают, кассир пробивает чек возврата — и в Честный Знак уходит второй некорректный документ с тем же кодом.

То есть одна ошибка удваивается: сначала продажа с битым кодом, потом возврат с ним же. Если код уже известен как проблемный, возврат надо оформлять по исправленному коду, а не по тому, что лежит в заказе. Мы это правило записали прямо в инструкцию кассиру — на память тут полагаться нельзя, чек возврата пробивают в спешке.

Если товар возвращается не вам, а на склад подрядчика, добавляется вторая половина задачи: пока единица не оприходована обратно, продавать её нельзя, а код всё это время числится за вами. Как устроен обмен возвратами со складом — в статье про фулфилмент для интернет-магазина.

Если склад чужой

Когда отгружает подрядчик, ответственность не делится: перед Честным Знаком отвечаете вы. Склад может передать неполный код, перепутать единицы или отгрузить не тот экземпляр — а вопросы будут к вам, потому что продажа ваша.

Из этого следует три вещи, которые надо обсудить с оператором до договора:

  • как он передаёт коды — файлом, через интерфейс обмена или руками в письме;
  • читает ли он коды сканером при сборке или переписывает;
  • что происходит при пересорте: заменил единицу — прислал ли новый код.

Как выбирать оператора и что ещё должно ходить между вами автоматически, разбираю в статье про фулфилмент для интернет-магазина. Там же про остатки и статусы — маркировка лишь часть обмена.

Что автоматизировать

Ручная сверка кодов не работает: их сотни, и глазами полный код от неполного не отличить.

Автоматизировать стоит три вещи:

Проверку при приёмке кодов от склада. Каждый код проходит валидатор, неполные отбраковываются сразу, отгрузка по ним не уходит.

Журнал «код — заказ — единица». Когда возникнет спор, нужно уметь ответить, какой именно код уехал в каком заказе и когда. Без журнала это восстанавливается по переписке, то есть никак.

Сигнал живому человеку. Отбраковка должна не просто писаться в лог, а доходить до того, кто может позвонить на склад. У нас такие сообщения падают туда же, куда обращения клиентов — в общую очередь, где их видно сразу; как это устроено, писал в статье про обработку обращений клиентов.

Чек-лист перед первой отгрузкой

  • В настройках кассы включён признак торговли маркированными товарами.
  • Включён разрешительный режим — касса проверяет код перед пробитием.
  • Код уходит в чек отдельным реквизитом; в ЛК ОФД по маркировке 100% корректных.
  • Коды от склада проходят проверку полноты до отгрузки.
  • Разделители приводятся к единому виду у вас, а не «как пришло».
  • Есть журнал соответствия кодов заказам.
  • У кассира есть письменное правило на случай возврата товара с проблемным кодом.

Маркировка не прощает «потом разберёмся»: ошибка всплывает у покупателя на кассе, когда исправлять поздно. Зато весь этот список проверок закрывается за несколько дней, а дальше работает само.

Код выбывает из оборота чеком — и про эту, вторую половину пути: два чека на один заказ, коды в финальном чеке и сверка с ОФД — в статье про чеки по 54-ФЗ.

Коротко: частые вопросы

Почему код маркировки не проходит на кассе?
Чаще всего потому, что код пришёл неполным: без криптографической части. Внешне он выглядит правильным, а касса отправляет его на проверку и получает отказ. Проверять полноту нужно до отгрузки, а не на кассе у покупателя.
Куда уходит код маркировки при продаже?
В чек отдельным реквизитом, оттуда через оператора фискальных данных — в Честный Знак. Именно этим чеком единица товара выбывает из оборота.
Что делать, если товар с проблемным кодом вернули?
Оформлять возврат по исправленному коду, а не по тому, что был в чеке продажи. Иначе одна ошибка удваивается: сначала продажа с битым кодом, потом возврат с ним же.
Содержание
  1. Как код доходит до кассы
  2. Почему код приезжает неполным
  3. Три эшелона защиты
  4. Возврат битым кодом делает хуже
  5. Если склад чужой
  6. Что автоматизировать
  7. Чек-лист перед первой отгрузкой
  8. Коротко: частые вопросы