Промокоды

С помощью этой статьи вы создадите промокод, проверите скидку в корзине и примените код при создании заказа.

Для управления промокодами нужен Bearer сотрудника. Для расчёта корзины используется App Token, а для создания заказа — App Token и Counterparty Bearer.

Промокод изменяет цену клиентского заказа. Не путайте его с промоакцией: промоакция передаётся в promotion_id внутреннего заказа или мероприятия и используется как метка источника, но не рассчитывает скидку.

Подготовка

Подготовьте:

  • Bearer сотрудника;
  • ID приложения, если код должен работать только в одном магазине;
  • размер и тип скидки;
  • период действия и лимиты;
  • App Token для проверки корзины.

Полный список полей, статусов и методов находится в API-справочнике промокодов.

Шаг 1. Создайте промокод

POST /api/discounts HTTP/1.1
Host: api.gigma.ru
Authorization: Bearer <employee_token>
Content-Type: application/json
Accept: application/json

{
	"name": "10% на первый заказ",
	"code": "WELCOME10",
	"discount_type": "percent",
	"discount_value": 10,
	"application_id": 17,
	"min_order_amount": 500,
	"per_client_usage_limit": 1,
	"audience": "new_clients",
	"starts_at": "2026-08-20T00:00:00+03:00",
	"ends_at": "2026-09-30T23:59:59+03:00"
}

Если не передать status, Gigma создаст промокод в статусе draft.

Код должен быть уникальным в проекте среди неархивированных промокодов. Gigma убирает пробелы по краям и переводит латинские буквы в верхний регистр.

Полный контракт: создание промокода.

Шаг 2. Активируйте промокод

POST /api/discounts/42/activate HTTP/1.1
Host: api.gigma.ru
Authorization: Bearer <employee_token>
Accept: application/json

Проверьте effective_status в ответе. Если дата начала ещё не наступила, значение будет scheduled.

Шаг 3. Рассчитайте корзину

Передайте код в promo_code:

POST /api/counterparty/orders/precalculate HTTP/1.1
Host: api.gigma.ru
Token: <application_token>
Content-Type: application/json
Accept: application/json

{
	"products": [
		{
			"id": 34780,
			"quantity": 2
		}
	],
	"promo_code": "WELCOME10"
}

В ответе используйте:

  • original_price — цена до скидок;
  • promo_discount_amount — скидка по промокоду;
  • total_discount_amount — общая скидка;
  • final_price — итог;
  • discount_error — причина, по которой код не применился.

Предварительный расчёт не резервирует лимит промокода.

Шаг 4. Создайте заказ

Передайте тот же promo_code в POST /api/counterparty/orders.

На этом шаге Gigma повторно проверит приложение, клиента, даты, минимальную сумму и лимиты. Применение будет записано только после успешного создания заказа.

Полный контракт: создание заказа.

Готово

Промокод создан, активирован и проверен в реальном сценарии корзины.

Что дальше

  • Посмотрите статистику и журнал применений в API-справочнике промокодов.
  • Свяжите внутренний заказ или мероприятие с промоакцией, если нужна атрибуция источника без скидки.
  • Обработайте ошибки промокода в интерфейсе корзины.
  • Не рассчитывайте итоговую цену на клиенте: перед созданием заказа всегда вызывайте orders/precalculate.