Цены и остатки — самая «живая» часть интеграции: они меняются каждый день и напрямую влияют на продажи и штрафы за отмены. Разберём, как выстроить надёжную синхронизацию цен и остатков с Ozon из 1С-Битрикс по расписанию.
Два независимых метода
Цены и остатки в Seller API обновляются разными вызовами и, как правило, с разной частотой:
| Метод | Что обновляет | Ключ |
|---|---|---|
/v1/product/import/prices | цену, старую цену, минимальную цену, НДС | offer_id или product_id |
/v2/products/stocks | остаток FBS по складу | offer_id + warehouse_id |
/v1/product/info/stocks | чтение текущих остатков | — |
Разделение удобно: остатки обычно шлём чаще (каждые 15–60 минут), цены — реже (несколько раз в день или по факту изменения). Оба метода принимают пачки и работают по вашему артикулу offer_id.
Обновление цен и защита от демпинга
Тело запроса цен включает несколько важных полей:
{
"prices": [{
"offer_id": "SKU-10241",
"price": "2490",
"old_price": "2990",
"min_price": "2200",
"currency_code": "RUB",
"auto_action_enabled": "ENABLED"
}]
}price— актуальная цена продажи;old_price— цена «до скидки» (должна быть выше price);min_price— нижняя граница для акций Ozon;auto_action_enabled— участие в автоакциях.
Обновление остатков FBS
Остатки FBS привязаны к складу продавца, поэтому в запросе обязателен warehouse_id (список складов — метод /v1/warehouse/list):
{
"stocks": [{
"offer_id": "SKU-10241",
"stock": 37,
"warehouse_id": 22142605386000
}]
}В stock отправляем доступный остаток — физический за вычетом резервов под неотгруженные заказы сайта. Для FBO остаток не отправляется: им управляет Ozon.
stock: 0 корректнее, чем архивирование карточки, если товар вернётся в продажу.Реализация на 1С-Битрикс
Источник цен и остатков — каталог Битрикса (модуль catalog), куда данные приходят из 1С по CommerceML. Синхронизацию с Ozon оформляют так:
- Агент Битрикса (
CAgent) или cron запускает обмен по расписанию. - Выбираются изменённые цены/остатки — по флагу изменения или
TIMESTAMP_X. - Данные бьются на пачки и отправляются в
import/pricesиproducts/stocks. - Ответы логируются, ошибки по конкретным offer_id складываются в журнал.
Инкрементальный режим критичен: слать весь каталог каждые 15 минут — значит упереться в лимиты API и создать лишнюю нагрузку. Отправляйте только то, что реально изменилось.
Лимиты, частота и идемпотентность
У Seller API есть ограничения на частоту и размер пачек, поэтому синхронизацию проектируют с запасом:
- Пачки. Отправляйте позиции группами (обычно до 100–1000 в зависимости от метода), а не по одной.
- Ретраи. На коды 429/5xx делайте повтор с экспоненциальной задержкой.
- Идемпотентность. Повторная отправка того же остатка/цены безопасна — она просто перезапишет значение.
- Очередь. При больших объёмах выносите отправку в очередь, чтобы не блокировать хиты.
product/info/stocks и сравнивать с каталогом. Так вылавливаются позиции, «потерянные» из-за разовых сбоев.Мониторинг и сверка
Синхронизация без мониторинга рано или поздно тихо ломается. Минимальный набор контроля:
- журнал каждой отправки с количеством успешных и ошибочных позиций;
- алерт (email/Telegram), если доля ошибок превышает порог;
- ежедневная сверка «каталог ↔ Ozon» по ценам и остаткам;
- контроль расхождения min_price и рентабельности.
Отдельно стоит следить за товарами в статусе ошибки: если цена или остаток не приняты (например, карточка на модерации или в архиве), позиция должна попадать в отчёт, а не исчезать из виду.
Итог
Надёжная синхронизация с Ozon строится на трёх правилах: цены и остатки обновляются раздельными методами и с разной частотой; в Ozon уходит доступный остаток и обоснованная min_price; обмен идёт инкрементально, пачками, с ретраями и ежедневной сверкой. Всё это реализуется на 1С-Битрикс через агент и модуль обмена поверх каталога.
Мы в B2Bsite настраиваем такую синхронизацию под ваш каталог и учёт: разводим цены и остатки по расписанию, закладываем защиту min_price, лимиты и мониторинг. Цены и остатки на Ozon остаются актуальными без ручного труда менеджеров.
Частые вопросы
Одним ли методом обновляются цены и остатки?
Нет. Цены обновляются методом v1/product/import/prices, остатки FBS — методом v2/products/stocks. Это независимые вызовы, их обычно запускают с разной частотой.
Как защититься от того, что Ozon уронит цену в акции?
Передавайте поле min_price — нижнюю границу цены для автоакций. Считайте её из учётной системы с учётом маржи, тогда площадка не опустит цену ниже рентабельной.
Какой остаток отправлять в Ozon?
Доступный: физический остаток минус резервы под неотгруженные заказы сайта. Отправка физического остатка без учёта резервов приводит к продажам уже зарезервированного товара.
Нужно ли слать остатки для FBO?
Нет, при FBO остатками на своём складе управляет Ozon. Через products/stocks отправляются только остатки FBS со склада продавца.
Как часто синхронизировать?
Остатки обычно каждые 15–60 минут, цены — реже, несколько раз в день или по факту изменения. Обмен делают инкрементальным, отправляя только изменившиеся позиции.
Что делать при ошибках 429 от API?
Это превышение лимита частоты. Нужны повторы с экспоненциальной задержкой и отправка позиций пачками, а при больших объёмах — очередь.
Зачем нужна ежедневная сверка?
Разовые сбои могут оставить отдельные позиции с неверным остатком или ценой. Ежедневное чтение состояния из Ozon и сравнение с каталогом выявляет такие расхождения.
Поможем с настройкой и поддержкой Интеграции и связки систем
Поможем с настройкой, доработкой и поддержкой Интеграции и связки систем.