Новость на модерации
Содержание статьи
DataMatrix (DM) — обязательный код маркировки для товаров, подлежащих прослеживаемости в системе "Честный знак". В API Lamoda используется для FBO-поставок и отслеживания товаров.
Что такое DataMatrix и UIT
| Термин | Описание | Длина |
| DataMatrix | Полный код маркировки с криптохвостом | ~150 символов |
| UIT | Уникальный идентификатор товара (без криптохвоста) | 31 или 38 символов |
Полный DataMatrix-код не хранится в системах Lamoda. При передаче он автоматически нормализуется до UIT.
Формат DataMatrix
Полный DataMatrix (с ТН ВЭД)
010467003301005321gJk6o54AQBJfX\u001d2406401\u001d91ffd0\u001d92LGYcm3FRQrRdNOO+8t0pz78QTyxxBmYKhLXaAS03jKV7oy+DWGy1SeU+BZ8o7B8+hs9LvPdNA7B6NPGjrCm34A==UIT (с ТН ВЭД) — 38 символов
010467003301005321gJk6o54AQBJfX2406401Полный DataMatrix (без ТН ВЭД)
010467003301005321gJk6o54AQBJfX\u001d91ffd0\u001d92LGYcm3FRQrRdNOO+8t0pz78QTyxxBmYKhLXaAS03jKV7oy+DWGy1SeU+BZ8o7B8+hs9LvPdNA7B6NPGjrCm34A==UIT (без ТН ВЭД) — 31 символ
010467003301005321gJk6o54AQBJfX Скрытые символыВ DataMatrix присутствуют управляющие символы
\u001d (GS — Group Separator). При передаче через API они должны быть экранированы.
Когда передавать DataMatrix
FBO: Создание поставки
DataMatrix обязателен для маркируемых товаров при создании поставки:
POST /api/v1/shipments/fulfilment
{
"id": "SUPPLY-2025-12-001",
"date": "2025-12-05",
"warehouse_code": "bykovo",
"items": [
{
"sku": "SELLER-SKU-001",
"ean": "4607123456789",
"quantity": 2,
"datamatrixes": [
"010467003301005321gJk6o54AQBJfX2406401",
"010467003301005321aBcD123XYZqwe2406401"
]
}
]
}
FBS: Создание отгрузки
DataMatrix передаётся на уровне товара (опционально):
POST /api/v1/shipments/out
{
"id": "SHIP-001",
"containers": [
{
"barcode": "PAL001",
"type": "pallet",
"containers": [
{
"barcode": "PACK001",
"type": "pack",
"items": [
{
"orderNr": "RU251202-123456",
"sku": "XD001XM0ABCD",
"unitload": "RU251202-123456-001",
"datamatrix": "010467003301005321gJk6o54AQBJfX"
}
]
}
]
}
]
}
DataMatrix в нотификациях
UIT возвращается в нотификациях на уровне товара:
{
"type": "statusChanged",
"data": {
"items": [
{
"id": 12345,
"sku": "SELLER-SKU-001",
"status": "Delivered",
"datamatrix": "010467003301005321gJk6o54AQBJfX2406401"
}
]
}
}
Массив UIT также возвращается в нотификациях о поставках (fulfilmentShipmentStatusChanged).
Статусы маркировки
Если товар заблокирован из-за проблем с маркировкой:
| Статус | В интерфейсе | Описание |
Need DM
|
Требуется код маркировки | Товар заблокирован, ожидает перемаркировки |
Waiting DM
|
Ожидает код маркировки | Партнёру отправлена нотификация, нужен ответ |
Received DM
|
Получен новый код | Партнёр предоставил новый код, идёт перемаркировка |
Waiting for assignation
|
Ожидает наклейки | Выполняется перемаркировка на складе |
Lost DM
|
Потерян код | Партнёр не может создать новый код |
Lamoda отправляет email-уведомления о товарах без кода маркировки. В письме — ссылка на раздел "Датаматрикс" в ЛК для загрузки отчёта.
Категории с обязательной маркировкой
Маркировка обязательна для следующих категорий:
- Одежда (верхняя одежда, блузки, пальто, куртки и т.д.)
- Обувь
- Товары лёгкой промышленности
- Парфюмерия
- Фототехника
Полный перечень — в системе "Честный знак".
Валидация DataMatrix
| Проверка | Требование |
| Длина UIT | 31 символ (без ТН ВЭД) или 38 символов (с ТН ВЭД) |
| Уникальность | Каждый DataMatrix уникален для единицы товара |
| Количество | Количество DataMatrix = quantity в поставке |
| Формат | Начинается с 01 (идентификатор приложения GTIN) |
Частые ошибки
| Ошибка | Причина | Решение |
| Поставка не подтверждена | Отсутствуют DM для маркируемых товаров | Добавьте datamatrixes в запрос |
| Неверная длина UIT | Передан полный DM вместо UIT | Нормализуйте до 31 или 38 символов |
| Дубликат DataMatrix | Код уже использован | Каждый код уникален |
| Несовпадение количества | quantity ≠ length(datamatrixes) | Количество кодов = количество товаров |
Пример обработки DataMatrix
import re
def normalize_datamatrix(dm: str) -> str:
"""Извлечь UIT из полного DataMatrix."""
# Убрать управляющие символы
dm = dm.replace('\x1d', '')
# UIT = первые 31 или 38 символов (до криптохвоста)
# Формат: 01 + GTIN(14) + 21 + Serial(13 или 20)
match = re.match(r'^(01\d{14}21.{13,20})(24\d{6})?', dm)
if match:
uit = match.group(1)
tn_ved = match.group(2) or ''
return uit + tn_ved
return dm[:38] if len(dm) > 38 else dm
# Пример
full_dm = "010467003301005321gJk6o54AQBJfX\x1d2406401\x1d91ffd0\x1d92..."
uit = normalize_datamatrix(full_dm)
print(uit) # 010467003301005321gJk6o54AQBJfX2406401
См. также
Помогла эта информация?
Спасибо за отзыв