Управление ценами продукта через Products API
Обзор возможностей
Вы можете управлять ценами на продукт при его создании и изменении.
Каждый продукт может иметь одну или несколько цен. Несколько цен используется, чтобы назначить индивидуальные цены на продукт в зависимости от условий покупки:
- Количество продукта - на цену влияет количество продукта в корзине.
Варианты настройки:- Одна цена за единицу продукта, которая действует при покупке любого количества продукта.
- Несколько цен - цена за единицу продукта зависит от количества продукта в корзине (ценовые вилки).
Например, при покупке от 1 до 5 шт. - продукт стоит 100 руб. за штуку; при покупке более 5 шт. - продукт стоит 90 руб. за штуку.
- Валюта
Варианты настройки:- Единая цена в базовой валюте (USD/EUR/RUB).
Базовая валюта может отличаться от валюты, доступной покупателю в корзине.
Если вы задали цену в одной валюте, а в корзине выбрана другая валюта, то происходит конвертация по курсу на текущую дату. - Индивидуальные цены для каждой валюты продажи.
В этом случае вы назначаете отдельную цену для каждой валюты продажи, доступной покупателю.
- Единая цена в базовой валюте (USD/EUR/RUB).
Настройка цены в зависимости от количества
При заполнении цен вы можете задать количество продукта (от-до), при покупке которого будет действовать цена.
Варианты настройки:
- Одна цена за единицу продукта, которая действует при покупке любого количества продукта.
В этом случае для продукта устанавливается один интервал количества (от-до) и одна цена. - Несколько цен - цена за единицу зависит от количества продукта в заказе.
В этом случае для продукта устанавливается несколько интервалов количества и индивидуальная цена для каждого интервала.
Одна цена за единицу
Чтобы задать цену за единицу, не зависящую от количества продукта в заказе, передайте в массиве цен variants один объект, содержащий параметры:
- variants.from - минимальное количество продукта, доступное к покупке, например, 1.
- variants.to - максимальное количество продукта, доступное к покупке.
Если вы хотите разрешить покупку любого количества продукта, то укажите 0 или не передавайте этот параметр. - variants.price.price - цена за единицу.
Например:
...
"variants": [
{
"from": 1,
"to": 0,
"price": {
"RUB": {
"currency": "RUB",
"price": "100.00"
}
}
}
],
...
В этом примере единица продукта всегда будет стоит 100 руб. Например:
- В корзине 1 шт. продукта. Итоговая стоимость = 100 руб. х 1 = 100 руб.
- В корзине 5 шт. продукта. Итоговая стоимость = 100 руб. х 5 = 500 руб.
Примеры заполнения from, to для единственного интервала (только один объект в массиве variants):
From | To | Описание |
Не передано | Не передано | Цена будет применена при любом количестве продукта в корзине. Покупатель может купить любое количество продукта. |
0 | 0 | |
1 | 0 | |
1 | 10 | Цена будет применена, если в корзине от 1 до 10 единиц продукта включительно. Покупатель не сможет купить более 10 единиц продукта |
Не передано или 0 | 10 | Ошибка. Минимальное количество продукта должно быть заполнено, если передано variants.to. |
Несколько цен (ценовые вилки)
Чтобы задать цены, которые будут зависеть от количества продукта в заказе:
- Передайте в параметре variants несколько объектов, каждый из которых соответствует определенному интервалу количества (от-до).
- В каждом объекте передайте параметры:
- variants.from - минимальное количество продукта, доступное к покупке за определенную цену, например, 1.
- variants.to - максимальное количество продукта, доступное к покупке за определенную цену.
Если вы хотите разрешить покупку любого количества продукта, то укажите 0. Такой интервал может быть только один в продукте. - variants.price.price - цена за единицу продукта, если его количество попадает в интервал from-to.
- Интервалы не должны пересекаться друг с другом. Каждое количество должно однозначно попадать в один из интервалов.
- Между интервалами не должно быть значений, для которых не задана цена.
Например, если вы хотите, чтобы при покупке от 1 до 5 единиц продукта цена была 100 руб., а при покупке более 6 единиц - 90 руб., то передайте в массиве variants два объекта:
"variants": [
{
"from": 1,
"to": 5,
"price": {
"RUB": {
"currency": "RUB",
"price": "100.00"
}
}
},
{
"from": 6,
"to":0,
"price": {
"RUB": {
"currency": "RUB",
"price": "90.00"
}
}
}
],
В этом примере итоговая стоимость рассчитывается так:
- В корзине 1 шт. продукта:
1 шт. - попадает в интервал от 1 до 5, берем цену из него.
Цена за единицу = 100 руб.
Итоговая стоимость = 100 руб. х 1 = 100 руб. - В корзине 5 шт. продукта:
5 шт. - попадает в интервал от 1 до 5, берем цену из него.
Цена за единицу = 100 руб.
Итоговая стоимость = 100 руб. х 5 = 500 руб. - В корзине 6 шт. продукта:
1 шт. - попадает в интервал от 6 до бесконечности, берем цену из него.
Цена за единицу = 90 руб.
Итоговая стоимость = 90 руб. х 5 = 450 руб.
Правила заполнения from-to
Каждый интервал from-to должен отвечать условиям:
- Параметр from / to может быть:
- Равен целому числу
- Равен нулю = количество не ограничено.
- Не передан = количество не ограничено (будет сохранено как ноль).
Можно не передавать оба параметра - в этом случае у продукта должен быть единственный интервал, и не будет ограничений на покупку.
Можно не передавать from - в этом случае максимальное количество продукта, доступное к покупке, не ограничено.
Но, если вы передаете to, то параметр from тоже должен быть передан.
- Если передан from > 0, то to ≥ from или to = 0 или не передан.
- Если передан to > 0, то from должен быть обязательно передан и равен: 0 < from ≤ to.
- Интервалы from - to не должны пересекаться.
- Между интервалами не должно быть количества, для которого не определена цена.
Примеры заполнения нескольких интервалов количества
Цена 1 | Цена 2 | Описание |
from=1, |
from=3, |
|
from=2, |
from=3, |
Пример аналогичен предыдущему, но:
Это значит, что покупатель не сможет купить 1 единицу продукта и более 10 единиц. |
from=1, |
from=2, |
Ошибка. Интервалы для цены 1 и цены 2 пересекаются. |
from=1, |
from=4, |
Ошибка. Есть количество продукта, для которого не определена цена. |
Ограничение покупки по количеству
Вы можете ограничить количество продукта, которое можно купить в одном заказе.
Для этого передайте ограничения в параметрах variants.from и variants.to.
Например:
- Чтобы покупатель не мог купить менее 2 единиц продукта, передайте variants.from = 2 (то есть у вас не будет объекта variants, в котором from = 1).
- Чтобы покупатель не мог купить более 10 единиц продукта, передайте variants.to = 10 (то есть у вас не будет объекта variants, в котором to > 10, или to = 0, или to не передан).
Настройка цены в зависимости от валюты
Цена на продукт может быть задана одним из следующих способов:
- Единая цена в базовой валюте (USD/EUR/RUB).
- Индивидуальные цены - отдельная цена для каждой валюты продажи.
Если вы задали цену в одной валюте, а в корзине выбрана другая валюта, то происходит конвертация по курсу на текущую дату.
Особенности применения:
- В одном продукте может быть использован только один вариант ценообразования (или одна цена в базовой валюте, или индивидуальные цены).
- На нашей стороне должны быть сделаны настройки, разрешающие применение определенного ценообразования. Если вы хотите использовать единую цену в базовой валюте, обратитесь в службу поддержки.
- Для каждого варианта ценообразования можно настроить отдельный способ генерации лицензии по умолчанию.
Единая цена в базовой валюте
В этом случае на продукт устанавливается одна цена в базовой валюте (USD/EUR/RUB).
Если вы задали цену в одной валюте, а в корзине выбрана другая валюта, то происходит конвертация по курсу на текущую дату.
Чтобы данный способ ценообразования был доступен, на нашей стороне должны быть сделаны настройки. Обратитесь в службу поддержки.
Для этого в объекте variants.price передайте один объект common и цену в нем:
...
"variants": [{
"from": 1,
"to": 0,
"price": {
"common": {
"currency": "RUB",
"price": "100.00"
}
}
}
]
...
Индивидуальные цены для валют продажи
В этом случае вам нужно задать индивидуальную цену для каждой валюты продажи, доступной в корзине. Доступные валюты продажи определяются вашим договором.
Для этого в объекте variants.price передайте объекты с ценой для каждой валюты продажи (название объекта = название валюты продажи).
Цена может быть задана:
- В валюте продажи (то есть валюта, в которой задана цена, совпадает с валютой продажи).
Например:"[валюта продажи]": { "currency": "[валюта, в которой задана цена: совпадает с валютой продажи]", "price": "[цена]" }
... "variants": [{ "from": 1, "to": 0, "price": { "RUB": { "currency": "RUB", "price": "100.00" }, "BYN": { "currency": "BYN", "price": "3.70" } } } ], ...
- В базовой валюте.
У этой возможности есть ограничения: вы можете работать с такими ценами только через API, редактирование продуктов с такими ценами через портал будет недоступно / может работать некорректно. Используйте эту возможность, если вы ведете прайс-лист только в одной валюте, но хотите, чтобы цены в других валютах были заданы индивидуально (например, для одной из валют продукт должен стоить дороже)."[валюта продажи]": { "currency": "[валюта, в которой задана цена: одна из базовых валют]", "price": "[цена]" }
... "variants": [{ "from": 1, "to": 0, "price": { "RUB": { "currency": "USD", "price": "1.25" }, "BYN": { "currency": "USD", "price": "1.25" } } } ], ...
Особенности продаж по нескольким договорам
Если вы осуществляете продажи в нескольких валютах, и у вас заключены отдельные договоры для этих валют, то необходимо учитывать специфику при создании и изменении продуктов:
- При задании индивидуальных цен для каждой валюты продажи (One price for each currency, Volume pricing and options) необходимо создавать отдельные продукты для продаж по каждому договору. У одного продукта не должно быть цен для валют продажи из разных договоров
- Использование единых цен в базовых валютах (One price, Volume pricing) может быть доступно только для одного из договоров (согласовывается при подключении)
Например, если у вас два договора:
- Договор 1 для продажи в валюте RUB и BYN
- Договор 2 для продажи в валюте KZT
То вы должны создать два продукта:
- Продукт 1 для продажи в валюте RUB и BYN
- Продукт 2 для продажи в валюте KZT
Нельзя создать продукт, который будет продаваться сразу во всех трех валютах.
НДС в цене (продажа в руб.)
В зависимости от условий вашего договора поддерживается два варианта начисления налога на цену:
- Налог включен в цену - вы заполняете в продукте цену сразу с учетом налога и эта же цена отображается в корзине.
- Налог начисляется сверху в корзине - вы заполняете в продукте цену без учета налога. При добавлении продукта в корзину - к указанной цене будет добавлен налог.
Данная настройка делается на нашей стороне. Дополнительных данных для нее предавать не нужно. Ставка налога определяется автоматически в зависимости от страны покупателя.
При продаже в российских рублях начисление НДС зависит от наличия продукта в реестре российского ПО.
Если ваш продукт находится в реестре (https://reestr.digital.gov.ru/reestr/), то передайте информацию об этом в параметре 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
}
...
Примеры настройки цен
С помощью API вы можете настроить цены аналогично ценовым моделям, доступным через портал:
- Единая цена - одна цена за единицу продукта, которая действует без дополнительных условий
- Цена для количества - индивидуальные цены за единицу продукта в зависимости от количества продукта в заказе
- Единая цена для каждой валюты - индивидуальные цены за единицу продукта в зависимости от валюты продажи
- Цена для количества и валюты - индивидуальные цены за единицу продукта в зависимости от количества продукта в заказе и валюты продажи
Единая цена (One price)
При этой ценовой модели:
- Цена единицы продукта одинаковая для любого количества покупаемого продукта.
- Продукт с такой ценой автоматически доступен для продажи во всех валютах в соответствии с вашим договором.
- Вы задаете цену в одной из базовых валют: USD/EUR/RUB.
- При оформлении заказа покупателем: если валюта продажи отличается от валюты, в которой вы задали цену, то будет выполнена конвертация цены по курсу на текущую дату. Доступные покупателю валюты определяются в соответствии с вашим договором.
Узнайте подробнее об этой ценовой модели.
Для настройки цен передайте в запросе массив variants, в котором будет один объект со следующими параметрами:
- from, to – передайте эти параметры со значением равным нулю (количество к покупке не ограничено). Вы также можете не передавать эти параметры совсем.
- price – передайте в этом параметре только один объект с названием common. Внутри объекта заполните параметры следующим образом:
Например:
...
"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"
},
"KZT": {
"currency": "KZT",
"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 KZT (включение продукта в реестр не влияет на начисление VAT)
- Если в корзине доступны другие валюты, то в них продукт нельзя будет приобрести
Например:
- За 1 единицу продукта в рублях: 100 х 1= 100 RUB
- За 5 единиц продукта в рублях: 100 х 5= 500 RUB
- За 1 единицу продукта в тенге: 400 х 1= 400 KZT
- За 5 единиц продукта в тенге: 400 х 5= 2000 KZT
- Продукт нельзя приобрести в евро
Цена для количества и валюты (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"
},
"KZT": {
"currency": "KZT",
"price": "400.00"
}
}
},
{
"from": 6,
"to": 0,
"price": {
"RUB": {
"currency": "RUB",
"price": "90.00"
},
"KZT": {
"currency": "KZT",
"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 KZT (включение продукта в реестр не влияет на начисление VAT)
- При покупке 6 и более единиц продукта цена за единицу будет равна:
- В рублях: 90 RUB (продукт включен в реестр российского ПО, поэтому не облагается НДС)
- В тенге: 350 KZT (включение продукта в реестр не влияет на начисление VAT)
- Если в корзине доступны другие валюты, то в них продукт нельзя будет приобрести
Например:
- За 1 единицу продукта в рублях: 100 х 1= 100 RUB
- За 10 единиц продукта в рублях: 90 х 10= 900 RUB
- За 1 единицу продукта в тенге: 400 х 1= 400 KZT
- За 10 единиц продукта в тенге: 350 х 10= 3500 KZT
- Продукт будет нельзя приобрести в евро