Управление ценами продукта через Products API

Вы можете управлять ценами на продукт при его создании и изменении.

Каждый продукт может иметь одну или несколько цен. Несколько цен используется, чтобы назначить индивидуальные цены на продукт в зависимости от условий покупки:

  • Количество продукта - на цену влияет количество продукта в корзине.
    Варианты настройки:
    • Одна цена за единицу продукта, которая действует при покупке любого количества продукта.
    • Несколько цен - цена за единицу продукта зависит от количества продукта в корзине (ценовые вилки).
      Например, при покупке от 1 до 5 шт. - продукт стоит 100 руб. за штуку; при покупке более 5 шт. - продукт стоит 90 руб. за штуку.
  • Валюта
    Варианты настройки:
    • Единая цена в базовой валюте (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 тоже должен быть передан.
  • Если передан from > 0, то to ≥ from или to = 0 или не передан.
  • Если передан to > 0, то from должен быть обязательно передан и равен: 0 < from ≤ to.
  • Интервалы from - to не должны пересекаться.
  • Между интервалами не должно быть количества, для которого не определена цена.
Цена 1 Цена 2 Описание

from=1,
to=2,
price=100

from=3,
to=0 или не передан,
price=90

  • Единица продукта стоит 100 при покупке от 1 до 2 единиц продукта
  • Единица продукта стоит 90 при покупке от 3 и более единиц продукта

from=2,
to=2,
price=100

from=3,
to=10,
price=90

Пример аналогичен предыдущему, но:

  • Минимально доступное к покупке количество продукта начинается от 2 единиц.
  • Максимальное доступное к покупке количества продукта заканчивается 10 единицами.

Это значит, что покупатель не сможет купить 1 единицу продукта и более 10 единиц.

from=1,
to=2,
price=100

from=2,
to=4,
price=90

Ошибка. Интервалы для цены 1 и цены 2 пересекаются.
Если в корзину добавить 2 единицы продукта, то не получится однозначно определить цену на продукт.

from=1,
to=2,
price=100

from=4,
to=0 или не передан,,
price=90

Ошибка. Есть количество продукта, для которого не определена цена.
Если в корзину добавить 3 единицы продукта, то нет цены за единицу, которую можно использовать.

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

Для этого передайте ограничения в параметрах 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 вы можете настроить цены аналогично ценовым моделям, доступным через портал:

При этой ценовой модели:

  • Цена единицы продукта одинаковая для любого количества покупаемого продукта.
  • Продукт с такой ценой автоматически доступен для продажи во всех валютах в соответствии с вашим договором.
  • Вы задаете цену в одной из базовых валют: USD/EUR/RUB.
  • При оформлении заказа покупателем: если валюта продажи отличается от валюты, в которой вы задали цену, то будет выполнена конвертация цены по курсу на текущую дату. Доступные покупателю валюты определяются в соответствии с вашим договором.

Узнайте подробнее об этой ценовой модели.

Для настройки цен передайте в запросе массив variants, в котором будет один объект со следующими параметрами:

  • from, to – передайте эти параметры со значением равным нулю (количество к покупке не ограничено). Вы также можете не передавать эти параметры совсем.
  • price – передайте в этом параметре только один объект с названием common. Внутри объекта заполните параметры следующим образом:
    • currency – код валюты, в которой будет задана цена продукта. Вы можете использовать только одну из валют: USD/EUR/RUB.
    • price – цена единицы продукта. 
    • Прочие параметры, в которых можно передать дополнительные идентификаторы продукта на вашей стороне, заполните на свое усмотрение.

Например:

...
"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

При этой ценовой модели:

  • Цена единицы продукта будет выбрана в зависимости от количества покупаемого продукта. Вы настраиваете интервалы количества продукта и индивидуальную цену каждой из них.
  • Продукт с такими ценами автоматически доступен для продажи во всех валютах в соответствии с вашим договором.
  • Вы задаете цены в одной из базовых валют: USD/EUR/RUB. 
  • При оформлении заказа покупателем: если валюта продажи отличается от валюты, в которой вы задали цену, то будет выполнена конвертация по курсу на текущую дату. Доступные покупателю валюты определяются в соответствии с вашим договором.

Узнайте подробнее об этой ценовой модели.

Для настройки цен передайте в запросе массив variants, в котором будет один или несколько объектов.

В каждом из объектов передайте цены для определенного количества продуктов:

  • fromto – передайте в этих параметрах минимальное и максимальное количество продукта, при котором будет действовать цена. Узнайте подробнее о правилах заполнения этих полей.
  • 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

.При этой ценовой модели:

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

Узнайте подробнее об этой ценовой модели.

Для настройки цен передайте в запросе массив 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
  • Продукт нельзя приобрести в евро

При этой ценовой модели:

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

Узнайте подробнее об этой ценовой модели.

Для настройки цен передайте в запросе массив variants, в котором будет один или несколько объектов. В каждом из объектов передайте цены для определенного количества продуктов:

  • fromto – передайте в этих параметрах минимальное и максимальное количество продукта, при котором будет действовать цена. Узнайте подробнее о правилах заполнения этих полей.
  • 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
  • Продукт будет нельзя приобрести в евро