Обновление цен и остатков через XML-фид

Для успешной торговли важно поддерживать актуальную информацию о товарах. Это помогает покупателям в выборе.

В статье расскажем, что такое XML-фид, и как обновлять остатки (кроме схемы FBO) и цены с помощью него.

Функция доступна продавцам, зарегистрированным после 21.04.2025. Если в вашем магазине её нет, воспользуйтесь другим способом.


XML-файл (фид) разработан для описания товарных предложений. С помощью него можно обновлять цены и остатки.

Содержание XML-фида

Мы принимаем файлы только XML-формата.

1. Фид необходимо разместить на сайте с протоколом HTTPS (начинаться с https://).

2. В названии фида нельзя использовать .. / \ \\ : * ? < >|$ % & ; символы.

3. Максимальный объём файла — 500 МБ.

Структура фида

1. Корневой элемент <yml_catalog date="2025-02-13 08:30">

Должен быть в любом XML-файле. Содержит данные о товарах. В атрибуте укажите дату и время, на которые актуальны данные в файле. Дату и время нужно отметить, согласно стандарту RFC 3339. Обязательно указывайте часовой пояс. Он отсчитывается от Всемирного координированного времени (UTC).

Наличие в файле необязательно.

Повторяться не может.

2. Shop

Элемент, содержащий данные о магазине.

Наличие в файле обязательно.

Повторяться не может в рамках одного фида.

3. Offers

Список товаров магазина. Может присутствовать только в единственном экземпляре. Каждый товар описывается отдельным элементом offer.

Наличие в файле обязательно.

Повторяться не может в рамках одного фида.

4. Offer

Содержит информацию о цене и остатке товара.

Наличие в файле обязательно.

Повторяться может.

Элементы, входящие в Offer:


offer id

Код товара в системе учёта заказов продавца. Товары, у которых несколько цветов, размеров и других отличий, записываются с разным id.

Тип данных: длина до 35 символов включительно.

Наличие в файле обязательно.

Пример
<offer id="158">


price

Цена товара. Действует для всех ваших активных складов.

Чтобы продавать товар с разных складов по разным ценам, укажите отдельную цену для каждого склада - в элементе <outlet>.

Тип данных: целое число от 1 до 99 999 999 включительно.

Наличие в файле обязательно.

Пример
<price>100</price>



oldprice

Стоимость до скидки. Зачёркнута как старая цена. Не применится без элемента <price>.

Элемент <oldprice> должен быть больше <price>.

Тип данных: целое число от 1 до 99 999 999 включительно.

Наличие в файле необязательно.

Пример
<oldprice>150</oldprice>


vat

Содержит значение ставки НДС для товара.

Наличие в файле обязательно.

Тип данных:

Значение

ставка НДС при этом значении

VAT_20

20%

VAT_10

10%
VAT_77%
VAT_55%

NO_VAT

Без НДС


Пример
 <vat>VAT_20</vat>



4. Outlets

Данные по остатку и цене товара из склада.

Наличие в файле необязательно.

Повторяться может в рамках одного offer id.

Элементы, входящие в outlet:
outlet id

Идентификатор склада. Можно найти в зависимости от схемы работы:

  • DBS — Логистика → Склад и доставка → выберите нужный склад;
  • C&C — Настройки → Торговые точки C&C.

указан в разделе Логистика → Склад и доставка → поле «ID склада».

Для схемы FBO: если вы находитесь на этапе регистрации, ID склада можно найти на шаге «Настройте доставку» или в Базе знаний.

Наличие в файле обязательно, если есть <outlets>.

Повторяться не может.

outlet instock

Количество товара на складе в шт.

Тип данных: целое число от 0 до 99 999 999 включительно.

Наличие в файле необязательно.

Повторяться не может в рамках одного склада.

outlet price

Стоимость товара для конкретного склада. Если укажете цену только по одному складу, для остальных применится цена из <price>.

Тип данных: целое число от 1 до 99 999 999 включительно.

Наличие в файле необязательно.

Повторяться не может.

outlet oldprice

Стоимость до скидки для конкретного склада. Зачеркнута на витрине как старая цена.

Не применится без элемента <outlet price>.

Элемент <outlet oldprice> должен быть больше <outlet price>.

Тип данных: целое число от 1 до 99 999 999 включительно.

Наличие в файле необязательно.

Повторяться не может.


Пример
<outlets>
	<outlet id="1" instock="50" price="15458" oldprice="500000"/>
</outlets>

Пример заполненного XML-фида

Пример
<yml_catalog date="2025-02-13 08:30">
    <shop>
        <offers>
            <offer id="158">
            <price>100</price>
            <oldprice>150</oldprice>
            <vat>VAT_20</vat>
                <outlets>
                    <outlet id="1" instock="50" price="100" oldprice="200"/>
                    <outlet id="3" instock="650" price="100" oldprice="200"/>
                </outlets>
            </offer>
         </offers>
    </shop>
</yml_catalog>

Как загрузить файл с изменениями

Обновление затронет только те позиции, которые указаны в XML-файле. Информация о ценах и остатках по остальным товарам не изменится.

1. Если файла ещё нет, загрузите его на свой сервер.

2. Перейдите в раздел Управление товарами.

3. Нажмите на Обновить цены и остатки и выберите XML-фид.

4. Оставьте ссылку на XML-файл. Если он защищён логином и паролем, обязательно укажите их.

5. Нажмите Сохранить.

Готово. Файл появится на этой же странице. Рядом с ним будут указаны:

  • дата последнего обновления;
  • сколько товаров в файле;
  • у скольких товаров обнаружены ошибки (если есть);
  • статус обновления.


    Всё обновленоИнформация успешно обновлена
    Обрабатывается Файл в процессе обновления
    Есть ошибкиВ фиде есть недочёты. Скачайте файл с ошибками, чтобы посмотреть, в чём дело. Как это сделать, читайте ниже
    Не загружен

    Возможные причины:

    • техническая ошибка. Система попробует обновить через несколько минут;
    • файла по ссылке не нашлось. Посмотрите, верно ли вы указали ссылку;
    • неверные логин или пароль для доступа к фиду. Проверьте введённые данные;
    • нарушена структура файла. Например, есть незакрытые теги или они неверно прописаны. Проверьте содержание;
    • фид больше 500 мб. Разбейте его на несколько файлов и загрузите по отдельности.

Каждые 1-2 часа система проверяет, есть ли обновления в последнем загруженном фиде.

Передать разные цены для одного товара

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

Представим, что мы продаём товар с трёх складов:

  • id 1;
  • id 2;
  • id 3.

Мы продаём товар за 100 руб. Значит, в фиде укажем:

<yml_catalog date="2025-02-13 08:30">
    <shop>
        <offers>   
            <offer id="158">
            <price>100</price>
            <oldprice>150</old_price>
            <vat>VAT_20</vat>
                <outlets>
                    <outlet id="1" instock="50"/>
                    <outlet id="3" instock="65"/>
                </outlets>
            </offer>
        </offers>
    </shop>
</yml_catalog>

Если мы захотим продавать со склада id 1 по другой стоимости, отметим в фиде так:

<yml_catalog date="2025-02-13 08:30">
    <shop>
        <offers>
            <offer id="158">
            <price>100</price>
            <oldprice>150</oldprice>
            <vat>VAT_20</vat>
                <outlets >
                    <outlet id="1" instock="50" price ="1050" oldprice ="2000"/>
                </outlets >
             </offer>
         </offers>
    </shop>
</yml_catalog>

Таким образом мы установим цену по складам с id 2 и id 3 в размере 100 руб, а по id 1 — 1050 руб.

Как посмотреть ошибки в фиде

Если в файле будут недочёты, система отметит его соответствующим статусом. Справа нажмите на значок меню и кликните на Скачать файл с ошибками.

Вы получите файл формата Excel. В нём будет:

  • код товара продавца, то есть offer id;
  • номер строки, на которой находится ошибка;
  • описание ошибки.

Исправьте и загрузите фид повторно в личный кабинет.

Часто задаваемые вопросы

По схеме «Хранение + доставка от Мегамаркета (FBO)» остатки рассчитываются на складе. Они зависят от того, сколько единиц товара вы передали в поставке.


Если вы работаете по схемам DBS или C&C, укажите его остаток как 0. А если по схеме FBO, то обратитесь в Службу поддержки или вывезите товар со склада.

Мы снимем его с продажи, а покупатели будут видеть статус Нет в наличии.


Если вы установили зачеркнутую цену и хотите ее удалить — не передавайте элемент <oldprice>.