4
Стать партнером
4
{{ formatMonthYear(startMonth) }}
{{ d }}
{{ day.day }}
{{ formatMonthYear(endMonth) }}
{{ d }}
{{ day.day }}
Новость на модерации
Обновлено
18.12.2025
Содержание статьи
p> CIS (Code of Individual Serialization) — уникальный код идентификации единицы товара в системе "Честный ЗНАК". В контексте Lamoda API используется формат UIT (Unique Identification Token).

Формат UIT для API

При работе с Lamoda API используется нормализованный формат UIT:

Тип Длина Формат Пример
UIT без ТН ВЭД 31 символ 01{GTIN}21{SerialNumber} 010467003301005321gJk6o54AQBJfX
UIT с ТН ВЭД 38 символов 01{GTIN}21{SerialNumber}240{TNVED} 010467003301005321gJk6o54AQBJfX2406401

Разбор структуры кода

Рассмотрим код: 010467003301005321gJk6o54AQBJfX2406401

Часть Значение Описание
01 Application Identifier Идентификатор GTIN
0467003301005 GTIN Глобальный идентификатор товара (14 цифр, включая лидирующий 0)
21 Application Identifier Идентификатор серийного номера
gJk6o54AQBJfX Serial Number Уникальный серийный номер (13 символов)
240 Application Identifier Идентификатор кода ТН ВЭД (опционально)
6401 ТН ВЭД Код товарной номенклатуры (4-6 цифр)

Преобразование DataMatrix → UIT

Полный DataMatrix содержит криптохвост, который не нужен для API:

Полный DataMatrix

010467003301005321gJk6o54AQBJfX\u001d2406401\u001d91ffd0\u001d92LGYcm3FRQrRdNOO+8t0pz78QTyxxBmYKhLXaAS03jKV7oy+DWGy1SeU+BZ8o7B8+hs9LvPdNA7B6NPGjrCm34A==

Нормализация до UIT

# Python-пример нормализации
def normalize_to_uit(datamatrix):
    """Преобразует полный DataMatrix в UIT"""
    # Удаляем криптохвост (всё после 91 или 92)
    if '\x1d91' in datamatrix:
        datamatrix = datamatrix.split('\x1d91')[0]
    elif '\\u001d91' in datamatrix:
        datamatrix = datamatrix.split('\\u001d91')[0]
    
    # Удаляем GS-разделители
    uit = datamatrix.replace('\x1d', '').replace('\\u001d', '')
    
    return uit

# Результат: 010467003301005321gJk6o54AQBJfX2406401

Автоматическая нормализация: Lamoda автоматически нормализует полный DataMatrix до UIT при получении через API. Однако рекомендуется передавать уже нормализованный UIT для предсказуемости.

Валидация кодов

Проверка формата UIT

import re

def validate_uit(uit):
    """Валидация UIT-кода"""
    # Паттерн для UIT без ТН ВЭД (31 символ)
    pattern_short = r'^01\d{14}21[A-Za-z0-9]{13}$'
    
    # Паттерн для UIT с ТН ВЭД (38 символов)
    pattern_long = r'^01\d{14}21[A-Za-z0-9]{13}240\d{4,6}$'
    
    if len(uit) == 31 and re.match(pattern_short, uit):
        return {'valid': True, 'type': 'UIT без ТН ВЭД'}
    elif len(uit) >= 37 and re.match(pattern_long, uit):
        return {'valid': True, 'type': 'UIT с ТН ВЭД'}
    else:
        return {'valid': False, 'error': 'Неверный формат UIT'}

# Примеры
validate_uit("010467003301005321gJk6o54AQBJfX")
# {'valid': True, 'type': 'UIT без ТН ВЭД'}

validate_uit("010467003301005321gJk6o54AQBJfX2406401")
# {'valid': True, 'type': 'UIT с ТН ВЭД'}

Извлечение компонентов

def parse_uit(uit):
    """Парсит UIT и возвращает компоненты"""
    result = {}
    
    if uit.startswith('01') and len(uit) >= 31:
        result['gtin'] = uit[2:16]
        result['serial'] = uit[18:31]
        
        if len(uit) > 31 and '240' in uit:
            tnved_start = uit.index('240') + 3
            result['tnved'] = uit[tnved_start:]
    
    return result

# Пример
parse_uit("010467003301005321gJk6o54AQBJfX2406401")
# {
#   'gtin': '04670033010053',
#   'serial': 'gJk6o54AQBJfX',
#   'tnved': '6401'
# }

Передача в API

Поставка FBO с маркировкой

curl -X POST "https://api-b2b.lamoda.ru/api/v1/shipments/fulfilment" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "SHIP-2025-001",
    "items": [
      {
        "sku": "SELLER-SHOES-001",
        "ean": "4670033010053",
        "quantity": 3,
        "price": 7500.00,
        "datamatrixes": [
          "010467003301005321gJk6o54AQBJfX2406401",
          "010467003301005321hKl7p65BRCKgY2406401",
          "010467003301005321iMm8q76CSELhZ2406401"
        ]
      }
    ]
  }'

Отгрузка FBS с маркировкой

curl -X POST "https://api-b2b.lamoda.ru/api/v1/shipments/out" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "OUT-2025-001",
    "type": "Sale",
    "shippedAt": "2025-01-20",
    "destination": "PPBykovo",
    "containers": [
      {
        "barcode": "PALOUT001",
        "type": "pallet",
        "containers": [
          {
            "barcode": "FBS123456789",
            "type": "pack",
            "items": [
              {
                "orderNr": "CZ117391950",
                "sku": "XD001XW03JMM",
                "unitload": "CZ117391950-001",
                "datamatrix": "010467003301005321gJk6o54AQBJfX2406401"
              }
            ]
          }
        ]
      }
    ]
  }'

Обработка ошибок

Ошибка Причина Решение
Invalid datamatrix format Неверный формат или длина кода Проверьте соответствие формату UIT (31 или 38 символов)
Datamatrix already used Код уже использован в другой поставке Каждый UIT уникален, используйте новый код
Datamatrix count mismatch Количество кодов не соответствует quantity Передайте ровно столько кодов, сколько единиц товара
Missing datamatrix for marked goods Не переданы коды для маркированного товара Добавьте поле datamatrixes для маркированных категорий

Получение UIT из нотификаций

Lamoda возвращает UIT в нотификациях:

Нотификация о статусе товара

{
  "type": "itemStatusChanged",
  "data": {
    "id": "CZ117391950",
    "items": [
      {
        "id": 7598,
        "sku": "SELLERSKU104",
        "status": "Delivered",
        "datamatrix": "010467003301005321gJk6o54AQBJfX"
      }
    ]
  }
}

Нотификация о поставке

{
  "type": "fulfilmentShipmentStatusChanged",
  "data": {
    "shipmentId": "SHIP-2025-001",
    "status": "received",
    "items": [
      {
        "sku": "SELLER-SHOES-001",
        "quantity": 3,
        "receipt": 3,
        "datamatrixes": [
          "010467003301005321gJk6o54AQBJfX2406401",
          "010467003301005321hKl7p65BRCKgY2406401",
          "010467003301005321iMm8q76CSELhZ2406401"
        ]
      }
    ]
  }
}

Работа с GS-разделителями

При получении DataMatrix со сканера могут присутствовать скрытые символы:

Важно: GS-символ (Group Separator, \u001d) невидим в большинстве текстовых редакторов, но влияет на парсинг кода.

Обработка GS-символов

def clean_datamatrix(raw_code):
    """Очистка DataMatrix от GS-символов и криптохвоста"""
    # Заменяем различные представления GS
    code = raw_code.replace('\x1d', '')  # ASCII 29
    code = code.replace('\\u001d', '')   # JSON-escaped
    code = code.replace('', '')      # Текстовое представление
    
    # Удаляем криптохвост (начинается с 91 или 92)
    for marker in ['91', '92']:
        if marker in code:
            idx = code.index(marker)
            # Проверяем, что это действительно криптохвост, а не часть серийника
            if idx > 31:
                code = code[:idx]
                break
    
    return code

Коды ТН ВЭД для fashion-товаров

Основные коды ТН ВЭД для маркированных товаров Lamoda:

Код Категория
6401 Обувь водонепроницаемая
6402 Обувь на подошве и с верхом из резины/пластмассы
6403 Обувь с верхом из кожи
6404 Обувь с верхом из текстильных материалов
6405 Обувь прочая
6201 Пальто, куртки мужские
6202 Пальто, куртки женские
6203 Костюмы, брюки мужские
6204 Костюмы, брюки женские

Best practices

  1. Храните соответствие — ведите базу данных SKU → UIT
  2. Валидируйте перед отправкой — проверяйте формат и длину UIT
  3. Не дублируйте коды — каждый UIT уникален и используется один раз
  4. Обрабатывайте GS-символы — очищайте коды от скрытых символов
  5. Используйте UIT, не полный DataMatrix — криптохвост не нужен для API
  6. Сохраняйте UIT из нотификаций — Lamoda возвращает нормализованный UIT

См. также

Помогла эта информация?

Да Нет

Спасибо за отзыв

Отправить
FAQ по работе с API
Способы доставки в API
Спросить у Lamoda Seller Assistant в Telegram