Вы приняли товар по ЭДО, собираете заказ на Ozon — и площадка выдаёт «Код не подходит по количеству символов». Или этикетка просто не собирается из приехавших по УПД данных.
Проблема одна — не хватает криптохвоста.
В УПД его нет и быть не может: генерирует его оператор в момент эмиссии и отдаёт только тому, кто заказывал коды. Короткие коды в документе — это норма, а не брак поставки, и отклонять из-за них входящий УПД не нужно. Но что делать, когда отгружать заказ надо прямо сейчас?
💡 Кратко для склада
- В УПД приходит только код идентификации (24 символа).
- Маркетплейсы проверяют полный код (идентификатор + криптохвост) — короткий не пройдёт.
- Собрать полный код из УПД невозможно (это криптографическая подпись).
- Решение: сканировать код 2D-сканером напрямую с этикетки на товаре. Если этикетки нет — остаётся перемаркировка.
- Если отгружать надо сегодня: для косметики, проданной физлицу, Ozon код в отправлении не требует — заказ соберётся и без него. Но вывести код из оборота потом придётся вам.
Почему в УПД 24 символа, а Ozon требует больше?
Разница между коротким кодом из документа и тем, что требует площадка, и есть криптохвост. В справке для продавцов Ozon требует указывать код целиком:
- Код идентификации (GTIN и серийный номер) — это у вас есть в УПД.
- Криптохвост (ключ и код проверки, включая символы GS) — этого в документах не передают.
Вот живой код косметики из нашего кабинета. Точка посередине — невидимый разделитель, символ ASCII 29 (GS):
0108412050000022215Kk::8·91FFD0·92dGVzdO…=
└─── код идентификации ──┘ └─── криптохвост ───┘
Слева 24 символа — именно они приезжают в УПД при поэкземплярном учёте. Целиком код в нашем примере занимает 78 знаков (длина хвоста зависит от формата, поэтому ориентироваться надёжнее на начало).
Те же 24 знака вы видите в личном кабинете Честного знака. Раздел «Коды маркировки» показывает код идентификации и больше ничего: 0100841058037187215=htVL.

Что такое криптохвост и почему его нельзя «восстановить»
Это подпись, которую оператор ставит закрытым ключом в момент эмиссии, из кода идентификации она не выводится.
Полный код хранится только в двух местах:
- В заказе на эмиссию в СУЗ у того, кто эти коды заказывал.
- Напечатанным на самой этикетке (внутри DataMatrix).
Никакая «программа для восстановления криптохвоста» его не вернёт: такие сервисы просто перепечатывают уже отсканированный код. А один и тот же код на двух разных упаковках даёт задвоение, которое Честный знак ловит по повторным сканам.
Можно ли выпросить файл с кодами у поставщика?
Нет, ему это запрещено. Запрет ЦРПТ официально озвучил на рабочей группе по косметике и бытовой химии 9 июля 2026 года. Селлеры требовали у поставщиков выгрузку кодов в Excel непременно с хвостом, чтобы списывать их у себя в 1С. Но полный код, попавший в чужие руки, можно напечатать заново и пустить в оборот второй раз. Формулировка ЦРПТ прямая: «их нельзя передавать с криптохвостом».
Нужен ли код маркировки в карточке отправления Ozon?
Сама маркировка и вывод из оборота обязательны в любом случае. Речь идёт только о заполнении поля при сборке заказа на площадке.
Ozon считает поле обязательным для заказов внутри России от юрлиц и для безрецептурных лекарств. Для остальных товаров правило такое:
«Если продаёте другие товары с маркировкой в „Честном знаке“, можете указать код, но пока это необязательно».
Косметика, проданная физлицу, попадает сюда. Если кода в отправлении нет, проверять нечего — заказ успешно соберётся. А ошибку вы видите тогда, когда код всё-таки внесли: сами или потому, что заказ пришёл от юрлица, где поле обязательное.
Но необязательное поле — это про Ozon, а не про вас. Маркированный товар всё равно надо вывести из оборота, и пустое поле эту обязанность оставляет вам. Передали код — площадка гасит его чеком; не передали — подаёте вывод сами. Отчёт «Продажи маркированных товаров» (Аналитика → Отчёты → Заказы) показывает ровно то, что вы сами внесли при отгрузке. Не внесли — связку «какой код уехал в каком заказе» восстанавливать неоткуда: за вас её не держит ни площадка, ни Честный знак.
Единого срока никто не называет. Площадки и Честный знак говорят про разные моменты — «когда покупатель получил», «сразу после отправки», «после статуса „Доставлен“». Выведете раньше — при отказе от заказа вывод придётся отменять, позже — это уже просрочка. И напоминания не будет: про свой же отчёт Ozon предупреждает, что «наличие кода маркировки в отчёте не является гарантией его вывода из оборота».
Откуда взять полный код для печати
Источник ровно один — сам товар: DataMatrix на этикетке, снятый сканером. Сканер нужен 2D: DataMatrix — квадратный символ, линейный штриховой его не читает. Из документов код не собрать ни при объёмно-сортовом учёте, ни при поэкземплярном, а если этикетка утеряна или не читается, остаётся перемаркировка. Это не восстановление старого кода, а выпуск нового взамен утраченного, и причин для неё у косметики и бытовой химии всего две: «испорчено либо утеряно средство идентификации» и ошибка в описании товара.
Почему поставщик не может просто «распечатать ещё раз»?
Печать в СУЗ одноразовая: кнопка печати разбирает буфер заказа, заказ уходит в статус «Исчерпан», и повторно тот же лист не напечатать. После того как буфер заказа вычерпан, у поставщика есть ещё около двух дней, чтобы скачать массив кодов повторно, а после ввода в оборот коды удаляются из пула. То есть пару дней коды у него ещё есть, но отдавать их вам запрещено (см. запрет ЦРПТ). Дальше их нет уже физически.
Личный кабинет Честного знака печатает не коды текстом, а готовые этикетки (PDF/EPS). Полный код «сидит» внутри квадрата DataMatrix. Поэтому сервисы печати хранят коды у себя в базах (например, 1С кладёт их в отдельный регистр для повторной печати).
Ошибка Ozon: «В коде нет разделителя ASCII 29»
Невидимый разделитель (GS) часто теряется по дороге от сканера в поле Ozon. Если вы видите 24 знака и всё — значит, хвост «отвалился» вместе с разделителем.
Сканер должен уметь отдавать этот символ, и включается это в нём самом — настройка одна на все маркетплейсы. В меню устройства нужен пункт вроде «F8 Mode», «Alt+0029 Mode» или «GS1 Enable», после чего GS передаётся нажатием F8 либо комбинацией Alt+0029. Оба способа подробно расписаны в справке Wildberries — площадка принимает любой из них и справедливо отмечает: «Разделители часто теряются при копировании кода из Excel, поэтому КИЗ лучше сканировать».
Как подставить разделитель вручную, если коды у вас файлом
Если вы эмитировали коды сами или выгрузили их из сервиса печати, правку можно сделать в файле. Excel и Блокнот «съедают» невидимый символ. Ozon принимает его текстовую запись \u001d.
Пошаговая инструкция в Notepad++:
- Откройте файл с кодами в Notepad++ (там невидимые символы отображаются).
- Выделите символ GS, нажмите Ctrl + F и перейдите на вкладку «Замена».
- В поле «Заменить на» вставьте текстом
\u001d. - Режим поиска выберите «Обычный».
- Нажмите «Заменить всё».
Готовый код (вида 0104670169195143215I"JGrqKtde;"\u001d91EE10\u001d92VVq30cfr…) можно копировать в поле сборки Ozon.
Пять причин, по которым Ozon заворачивает код
Код проверяется в базе Честного знака в момент внесения в отправление. Криптохвост и потерянный разделитель разобраны выше, остальное ловится пересканированием на складе.
| Ошибка Ozon | Реальная причина | Как исправить |
|---|---|---|
| Код не подходит по количеству символов | Код указан без криптохвоста | Отсканировать код заново с этикетки 2D-сканером |
| В коде оказались лишние символы | Случайный пробел или кириллица | Убрать лишнее. Допустимы: цифры, латиница и !"%&'()*+,-./_:;=<>? |
| Код не соответствует категории товара | По GTIN код из другой группы | Найти на складе нужный экземпляр — этот от другого товара |
| Такой код уже указан у другого товара | Один код внесён в заказ дважды | Пройти позиции заказа, у каждой единицы свой код |
| Не указан спецсимвол-разделитель | ASCII 29 потерялся при копировании | Подставить текстовую запись \u001d (см. инструкцию выше) |
Кто гасит код: вы или чек Ozon?
Развилку Ozon описывает так:
«Если передали код — выводить его из оборота самостоятельно не нужно. Выведем код из оборота через чек».
Не передавали код при сборке? Тогда выведите его из оборота самостоятельно с причиной «Дистанционная продажа». Делать это лучше после того, как заказ перешёл в статус «Доставлен».
Делать и то, и другое нельзя: код выводится из оборота только один раз.
Почему «Дистанционной продажи» может не в списке причин вывода из оборота
Свой вывод подают в кабинете: Документы → Создать → «Вывод из оборота». Форма начинается с вопроса о способе учёта.

В объёмно-сортовом списке нет ни дистанционной продажи, ни розничной реализации. Чтобы они появились, способ учёта нужно переключить на поэкземплярный. Поэтому продажу конечному клиенту выводят поштучно, с полным кодом на каждую банку, даже если весь остальной документооборот с поставщиками у вас идёт объёмно-сортовым.
Отсюда и цена скана на сборке. Это единственный момент, когда точно известно, какой экземпляр уехал клиенту, — и единственное место, где полный код вообще попадает вам в руки. Уехал товар неотсканированным, выводить нечем. При поэкземплярном учёте за вами так и останется числиться конкретный код. При объёмно-сортовом поэкземплярного баланса нет вообще: коды в кабинете не появлялись и после приёмки, зависнет только количество на «Складе» — а снять его продажей физлицу можно тем самым поштучным выводом, для которого код взять уже негде. В таблице возвратов Ozon его тоже нет, только номер отправления.
Что с этим делает kodmark
Связку «заказ ↔ код ↔ статус» после отгрузки не отдаёт ни одна площадка, и селлеры ведут её в Excel или не ведут вовсе. kodmark держит этот реестр за вас и показывает:
- по каким заказам коды из оборота ещё не выведены;
- сколько времени на вывод осталось по каждой единице;
- где вывод придётся откатывать: покупатель отказался — код нужно вернуть в оборот, иначе повторная отгрузка поймает отклонение ГИС МТ «Ранее выбыл по причинам, отличным от розничной продажи».
Сейчас идёт закрытая бета — набор ограничен, участие бесплатно. Дальше 1490 ₽/мес за весь сервис, вместе с приёмкой УПД и кодами.