Управление ценами продукта через Products API
Обзор возможностей
Вы можете управлять ценами на продукт при его создании и изменении.
Каждый продукт может иметь одну или несколько цен. Несколько цен используется, чтобы назначить индивидуальные цены на продукт в зависимости от условий покупки:
- Количество продукта (variants.from, variants.to) - на цену за единицу продукта влияет количество продукта в корзине.
Вы можете:- Настроить интервалы количества и индивидуальную цену для каждого из них. Интервал определяет, сколько единиц продукта можно купить по определенной цене за единицу. Например, от 1 до 5 шт. продукта продается по одной цене, а от 6 и более по другой. В этом примере есть два интервала: 1-5 и 6-∞
- Или задать одну цену за единицу для любого количества продукта
- Валюта продажи (variants.price) - на цену за единицу продукта влияет валюта, в которой происходит оформление заказа. Вы можете:
- Заполнить цену индивидуально для каждой валюты продажи. Список доступных валют продажи определяется в соответствии с вашим договором
- Или задать одну цену в базовой валюте (USD/EUR/RUB). В этом случае, если при оформлении заказа покупателем валюта продажи отличается от валюты, в которой вы задали цену, то происходит конвертация по курсу на текущую дату
С помощью API вы можете настроить цены аналогично ценовым моделям, доступным через портал:
- Единая цена - одна цена за единицу продукта, которая действует без дополнительных условий
- Цена для количества - индивидуальные цены за единицу продукта в зависимости от количества продукта в заказе
- Единая цена для каждой валюты - индивидуальные цены за единицу продукта в зависимости от валюты продажи
- Цена для количества и валюты - индивидуальные цены за единицу продукта в зависимости от количества продукта в заказе и валюты продажи
Как настроить цены по модели: Единая цена (One price)
При этой ценовой модели:
- Цена единицы продукта одинаковая для любого количества покупаемого продукта
- Продукт с такой ценой автоматически доступен для продажи во всех валютах в соответствии с вашим договором
- Вы задаете цену в одной из базовых валют: USD/EUR/RUB
- При оформлении заказа покупателем: если валюта продажи отличается от валюты, в которой вы задали цену, то будет выполнена конвертация цены по курсу на текущую дату. Доступные покупателю валюты определяются в соответствии с вашим договором
Узнайте подробнее об этой ценовой модели.
Для настройки цен передайте в запросе массив variants, в котором будет один объект со следующими параметрами:
- from, to – передайте эти параметры со значением равным нулю (количество к покупке не ограничено). Вы также можете не передавать эти параметры совсем
- price – передайте в этом параметре только один объект с названием common. Внутри объекта заполните параметры следующим образом:
- currency – код валюты, в которой будет задана цена продукта. Вы можете использовать только одну из валют: USD/EUR/RUB
- price – цена единицы продукта. В зависимости от условий вашего договора вы должны включить в цену сумму VAT или передать цену без учета VAT. При продажах в российских рублях обратите внимание на параметр software_registry - если ваш продукт включен в реестр российского ПО, то передайте данные об этом для правильного налогообложения
- Прочие параметры, в которых можно передать дополнительные идентификаторы продукта на вашей стороне, заполните на свое усмотрение
Пример
...
"variants": [{
"from": 0,
"to": 0,
"price": {
"common": {
"currency": "RUB",
"price": "100.00"
}
}
}
],
"software_registry": {
"status": true,
"date": "2020-10-15",
"url": "https://reestr.digital.gov.ru/reestr/111",
"registration_number": 111
}
...
В этом примере при покупке любого количества продукта цена за единицу будет равна:
- При покупке в рублях: 100 RUB (продукт включен в реестр российского ПО, поэтому не облагается НДС)
- При покупке в другой валюте: цена будет переконвертирована (включение продукта в реестр не влияет на начисление VAT)
Например:
- За 1 единицу продукта в рублях: 100 х 1= 100 RUB
- За 5 единиц продукта в рублях: 100 х 5= 500 RUB
- Если валюта корзины будет изменена на евро, то цена будет переконвертирована в EUR
Как настроить цены по модели: Цена для количества (Volume pricing)
При этой ценовой модели:
- Цена единицы продукта будет выбрана в зависимости от количества покупаемого продукта. Вы настраиваете интервалы количества продукта и индивидуальную цену каждой из них.
- Продукт с такими ценами автоматически доступен для продажи во всех валютах в соответствии с вашим договором.
- Вы задаете цены в одной из базовых валют: USD/EUR/RUB.
- При оформлении заказа покупателем: если валюта продажи отличается от валюты, в которой вы задали цену, то будет выполнена конвертация по курсу на текущую дату. Доступные покупателю валюты определяются в соответствии с вашим договором.
Узнайте подробнее об этой ценовой модели.
Для настройки цен передайте в запросе массив variants, в котором будет один или несколько объектов.
В каждом из объектов передайте цены для определенного количества продуктов:
- from, to – передайте в этих параметрах минимальное и максимальное количество продукта, при котором будет действовать цена. Узнайте подробнее о правилах заполнения этих полей
- price – передайте в этом параметре только один объект с названием common. Внутри объекта заполните параметры следующим образом:
- currency – код валюты, в которой будет задана цена продукта. Вы можете использовать только одну из валют: USD/EUR/RUB
- price – цена единицы продукта. В зависимости от условий вашего договора вы должны включить в цену сумму VAT или передать цену без учета VAT. При продажах в российких рублях обратите внимание на параметр software_registry - если ваш продукт включен в реестр российского ПО, то передайте данные об этом для правильного налогообложения
- Прочие параметры, в которых можно передать дополнительные идентификаторы продукта на вашей стороне, заполните на свое усмотрение
Пример
...
"variants": [{
"from": 1,
"to": 5,
"price": {
"common": {
"currency": "RUB",
"price": "100.00"
}
}
}, {
"from": 6,
"to": 0,
"price": {
"common": {
"currency": "RUB",
"price": "90.00"
}
}
}
],
"software_registry": {
"status": true,
"date": "2020-10-15",
"url": "https://reestr.digital.gov.ru/reestr/111",
"registration_number": 111
}
...
В этом примере:
- При покупке от 1 до 5 единиц продукта цена за единицу будет равна:
- При покупке в рублях: 100 RUB (продукт включен в реестр российского ПО, поэтому не облагается НДС)
- При покупке в другой валюте, цена будет переконвертирована (включение продукта в реестр не влияет на начисление VAT)
- При покупке 6 и более единиц продукта цена за единицу будет равна:
- При покупке в рублях: 90 RUB (продукт включен в реестр российского ПО, поэтому не облагается НДС)
- При покупке в другой валюте, цена будет переконвертирована (включение продукта в реестр не влияет на начисление VAT)
Например:
- За 1 единицу продукта в рублях: 100 х 1= 100 RUB
- За 10 единиц продукта в рублях: 90 х 10= 900 RUB
- Если валюта корзины будет изменена на евро, то цена будет переконвертирована в EUR
Как настроить цены по модели: Единая цена для каждой валюты (One price for each currency)
При этой ценовой модели:
- Цена единицы продукта одинаковая для любого количества покупаемого продукта.
- Продукт будет доступен для продажи только в тех валютах, для которых вы заполнили цену.
- Вы задаете индивидуальную цену за единицу продукта для каждой валюты продажи.
Узнайте подробнее об этой ценовой модели.
Для настройки цен передайте в запросе массив variants, в котором будет один объект со следующими параметрами:
- from, to – передайте эти параметры со значением равным нулю (количество к покупке не ограничено). Вы также можете не передавать эти параметры совсем
- price – передайте в этом параметре один или несколько объектов. Каждый из объектов должен содержать цену для валюты, в которой должна быть доступна продажа продукта. Заполните параметры объекта:
- В названии объекта передайте код валюты продажи продукта
- currency – код валюты, в которой будет задана цена продукта для переданной валюты продажи.
Мы рекомендуем передавать цену в валюте продажи для полного соответствия модели One price for each currency. Вы также можете задать цены в USD/EUR/RUB, но с некоторыми ограничениями. Узнайте подробнее об этой возможности - price – цена единицы продукта. В зависимости от условий вашего договора вы должны включить в цену сумму VAT или передать цену без учета VAT. Дополнительно обратите внимание на параметр software_registry - если ваш продукт включен в реестр российского ПО, то передайте данные об этом для правильного налогообложения.
- Обратите внимание на параметр software_registry - если ваш продукт включен в реестр российского ПО, то передайте данные об этом для правильного налогообложения
- Прочие параметры, в которых можно передать дополнительные идентификаторы продукта на вашей стороне, заполните на свое усмотрение
Пример
...
"variants": [{
"from": 0,
"to": 0,
"price": {
"RUB": {
"currency": "RUB",
"price": "100.00"
},
"PLN": {
"currency": "PLN",
"price": "400.00"
}
}
}
],
"software_registry": {
"status": true,
"date": "2020-10-15",
"url": "https://reestr.digital.gov.ru/reestr/111",
"registration_number": 111
}
...
В этом примере при покупке любого количества продукта цена за единицу будет равна:
- При покупке в рублях: 100 RUB (продукт включен в реестр российского ПО, поэтому не облагается НДС)
- При покупке в злотых: 400 PLN (включение продукта в реестр не влияет на начисление VAT)
- Если в корзине доступны другие валюты, то в них продукт нельзя будет приобрести
Например:
- За 1 единицу продукта в рублях: 100 х 1= 100 RUB
- За 5 единиц продукта в рублях: 100 х 5= 500 RUB
- За 1 единицу продукта в злотых: 400 х 1= 400 PLN
- За 5 единиц продукта в злотых: 400 х 5= 2000 PLN
- Продукт нельзя приобрести в евро
Как настроить цены по модели: Цена для количества и валюты (Volume pricing and options)
При этой ценовой модели:
- Цена единицы продукта будет выбрана в зависимости от количества покупаемого продукта. Вы задаете интервалы количества продукта и индивидуальные цены за единицу продукта в каждом интервале.
- Продукт будет доступен для продажи только в тех валютах, для которых вы заполнили цену.
- Вы задаете индивидуальные цены за единицу продукта для каждой валюты продажи.
Узнайте подробнее об этой ценовой модели.
Для настройки цен передайте в запросе массив variants, в котором будет один или несколько объектов. В каждом из объектов передайте цены для определенного количества продуктов:
- from, to – передайте в этих параметрах минимальное и максимальное количество продукта, при котором будет действовать цена. Узнайте подробнее о правилах заполнения этих полей
- price – передайте в этом параметре один или несколько объектов. Каждый из объектов должен содержать цену для валюты, в которой должна быть доступна продажа продукта. Заполните параметры объекта:
- В названии объекта передайте код валюты продажи продукта
- currency – код валюты, в которой будет задана цена продукта для переданной валюты продажи.
Мы рекомендуем передавать цену в валюте продажи для полного соответствия модели One price for each currency. Вы также можете задать цены в USD/EUR/RUB, но с некоторыми ограничениями. Узнайте подробнее об этой возможности - price – цена единицы продукта. В зависимости от условий вашего договора вы должны включить в цену сумму VAT или передать цену без учета VAT. Дополнительно обратите внимание на параметр software_registry - если ваш продукт включен в реестр российского ПО, то передайте данные об этом для правильного налогообложения
- Прочие параметры, в которых можно передать различные идентификаторы продукта на вашей стороне, заполните на свое усмотрение
Пример
...
"variants": [{
"from": 1,
"to": 5,
"price": {
"RUB": {
"currency": "RUB",
"price": "100.00"
},
"PLN": {
"currency": "PLN",
"price": "400.00"
}
}
},
{
"from": 6,
"to": 0,
"price": {
"RUB": {
"currency": "RUB",
"price": "90.00"
},
"PLN": {
"currency": "PLN",
"price": "350.00"
}
}
}
],
"software_registry": {
"status": true,
"date": "2020-10-15",
"url": "https://reestr.digital.gov.ru/reestr/111",
"registration_number": 111
}
...
В этом примере:
- При покупке от 1 до 5 единиц продукта цена за единицу будет равна:
- В рублях: 100 RUB (продукт включен в реестр российского ПО, поэтому не облагается НДС)
- В злотых: 400 PLN (включение продукта в реестр не влияет на начисление VAT)
- При покупке 6 и более единиц продукта цена за единицу будет равна:
- В рублях: 90 RUB (продукт включен в реестр российского ПО, поэтому не облагается НДС)
- В злотых: 350 PLN (включение продукта в реестр не влияет на начисление VAT)
- Если в корзине доступны другие валюты, то в них продукт нельзя будет приобрести
Например:
- За 1 единицу продукта в рублях: 100 х 1= 100 RUB
- За 10 единиц продукта в рублях: 90 х 10= 900 RUB
- За 1 единицу продукта в злотых: 400 х 1= 400 PLN
- За 10 единиц продукта в злотых: 350 х 10= 3500 PLN
- Продукт будет нельзя приобрести в евро
Особенности использования валют
Вы можете задавать цены продукта в валюте продажи или в базовой валюте (USD/EUR/RUB). При этом, если валюта, в которой задана цена, отличается от валюты, в которой осуществляется продажа, то при продаже будет выполнена конвертация по курсу на текущую дату.
Особенности назначения цены:
- Если у продукта нет индивидуальных цен для каждой валюты продажи (ценовые модели One price, Volume pricing), то цена может быть задана только в базовой валюте
"common": { "currency": "[валюта, в которой задана цена: одна из базовых валют]", "price": "[цена]" }
- Если у продукта цены заданы индивидуально для каждой валюты продажи (ценовые модели One price for each currency, Volume pricing and options), то:
- Цена может быть задана в валюте продажи (то есть валюта, в которой задана цена, совпадает с валютой продажи).
"[валюта продажи]": { "currency": "[валюта, в которой задана цена: совпадает с валютой продажи]", "price": "[цена]" }
- Цена может быть задана в базовой валюте. У этой возможности есть ограничения: вы можете работать с такими ценами только через API, редактирование продуктов с такими ценами через портал будет недоступно / может работать некорректно.
Используйте эту возможность, если вы ведете прайс-лист только в одной валюте, но хотите, чтобы цены в других валютах были заданы индивидуально (например, для одной из валют продукт должен стоить дороже)."[валюта продажи]": { "currency": "[валюта, в которой задана цена: одна из базовых валют]", "price": "[цена]" }
- Цена может быть задана в валюте продажи (то есть валюта, в которой задана цена, совпадает с валютой продажи).
Пример: индивидуальные цены для валют продажи + задание цен в базовой валюте
...
"variants": [{
"from": 0,
"to": 0,
"price": {
"CZK": {
"currency": "USD",
"price": "100.00"
},
"PLN": {
"currency": "USD",
"price": "90.00"
}
}
}
],
...
Особенности продаж по нескольким договорам
Если вы осуществляете продажи в нескольких валютах, и у вас заключены отдельные договоры для этих валют, то необходимо учитывать специфику при создании и изменении продуктов:
- При задании индивидуальных цен для каждой валюты продажи (One price for each currency, Volume pricing and options) необходимо создавать отдельные продукты для продаж по каждому договору. У одного продукта не должно быть цен для валют продажи из разных договоров
- Использование единых цен в базовых валютах (One price, Volume pricing) может быть доступно только для одного из договоров (согласовывается при подключении)
Например, если у вас два договора:
- Договор 1 для продажи в валюте USD и CAD
- Договор 2 для продажи в валюте EUR
То вы должны создать два продукта:
- Продукт 1 для продажи в валюте USD и CAD
- Продукт 2 для продажи в валюте EUR
Нельзя создать продукт, который будет продаваться сразу во всех трех валютах.
Как заполнить количество продукта (from-to)
При заполнении цен вы можете задать количество продукта (от-до), при покупке которого будет действовать цена за единицу. Для одного продукта может быть задано несколько интервалов количества с индивидуальными ценами.
Чтобы задать интервалы количества передайте в параметре variants один или несколько объектов, каждый из которых соответствует определенному интервалу. В каждом объекте передайте в параметре variants.from минимальное количество продукта и в параметре variants.to - максимальное количество в интервале.
Например, если вы хотите, чтобы при покупке от 1 до 5 единиц продукта цена была 100 USD, а при покупке от 6 до 10 единиц - 90 USD, то вам нужно:
- Передать в массиве variants два объекта.
- В первом объекте передать значения параметров:
- variants.from = 1,
- variants.to = 5,
- variants.price.price = 100.
- Во втором объекте передать значения параметров:
- variants.from = 6,
- variants.to = 10,
- variants.price.price = 90.
Правила заполнения количества
Каждый интервал from-to должен отвечать условиям:
- Значением параметров from, to может быть только целое число или ноль
- Если значение параметра равно нулю, то это соответствует отсутствию ограничения количества
- Параметр может быть не передан, в этом случае в его значение будет сохранен ноль
- Если from > 0, то to ≥ from или to = 0 или не передано
- Если to > 0, то 0 < from ≤ to
- Интервалы from - to разных цен не должны пересекаться
Если вы задаете для продукта несколько интервалов количества, то между ними не должно быть значения, для которого не определена цена (см. примеры далее).
С помощью интервалов вы можете ограничить количество продукта, которое можно купить. Для этого начните/закончите интервалы этим значением.
Например:
- Чтобы покупатель не мог купить менее 2 единиц продукта, начните интервалы с значения variants.from = 2 (то есть у вас не будет интервала, который начинается с 1).
- Чтобы покупатель не мог купить более 10 единиц продукта, закончите интервалы значением variants.to = 10 (то есть у вас не будет интервала, который заканчивается число больше 10 или заканчивается 0).
Примеры заполнения одного интервала
From | To | Описание |
0 | 0 | Ограничение на количество отсутствует. Данная цена будет применена при любом количестве продукта в корзине. Обратите внимание, у продукта в таком случае может быть только один интервал количества, т.е. только один объект в массиве variants |
1 | 0 | Пример аналогичен предыдущей строке |
1 | 10 | Цена будет применена, если в корзине количество единиц от 1 до 10, включая 1 или 10. Если у продукта нет других интервалов количества, то покупатель не сможет купить более 10 единиц продукта |
0 | 10 | Ошибка. Минимальное количество продукта должно быть заполнено, если передано variants.to |
Примеры заполнения нескольких интервалов количества
Цена 1 | Цена 2 | Описание |
from=1, |
from=3, |
|
from=2, |
from=3, |
Пример аналогичен предыдущему, но:
Это значит, что покупатель не сможет купить 1 единицу продукта и более 10 единиц |
from=2, |
from=2, |
Ошибка. Интервалы для цены 1 и цены 2 пересекаются. Если в корзину добавить 2 единицы продукта, то не получится однозначно определить цену на продукт |
from=2, |
from=2, |
Ошибка. Есть количество продуктов, для которого не определена цена. Если в корзину добавить 3 единицы продукта, то нет цены за единицу, которую можно использовать |