Skip to main content

Рекуррентные платежи

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

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

Подписка создаётся только после первой успешной оплаты. При этом первый платёж не считается платежом по подписке. Следующие рекуррентные списания происходят через выбранный интервал, их отличительным признаком является тип транзакции"type": "Token"

Сценарий создания подписки

1. Создайте платёжную ссылку

  • Для подписок разрешены только одноразовые платежные ссылки ("type": "OneTime"). Можно не передавать этот параметр, ссылка по умолчанию создаётся одноразовой
  • Обязательно сообщите данные плательщика: адрес электронной почты (email) и номер мобильного телефона (phone)
  • Использование произвольной суммы рекуррентного платежа недопустимо. Параметр устанавливается "isArbitraryAmountAllowed": false или не указывается

2. Основывайте бизнес-логику на вашем уникальном номере заказа

  • orderId – обязательное поле для формирования подписки

3. Получите информацию о создании подписки в вебхуке

  • Вы получите идентификатор подписки (subscriptionId) в постоплатном вебхуке, в случае успешной оплаты созданной платёжной ссылки
  • При подключении на терминале вебхука информирования о подписке, вы получите информацию о создании и изменении статуса подписки

4. Если вы не пользуетесь вебхуками

  • Найдите подписку по orderId в ней будет находиться параметр с её идентификатором — subscriptionId
  • Также идентификатор подписки можно найти через поиск транзакции, по которой была создана подписка. Укажите в запросе orderId и найдете в ответе subscriptionId

5. Получите информацию о подписке

  • Выполните запрос сведений по идентификатору подписки и получите все её параметры, включая статус и дату последующего списания

6. Завершение подписки

  • Рекуррентные списания прекращаются автоматически по истечении максимального числа периодов или при невозможности выполнить очередное списание
  • Мерчант может прекратить подписку досрочно
  • Также клиент может прекратить подписку со своей стороны
  • Если клиент завершил подписку через форму WATA — будет отправлен вебхук. Когда рекуррентные списания отключаются на стороне банка плательщика мы не получаем своевременного уведомления. В таком случае, вебхук придёт, когда не получится выполнить очередное списание

Удаление подписки в банке клиента происходит не сразу. Срок отвязки карты/счёта зависит целиком от банка плательщика. Для того, чтобы успокоить клиента, что рекуррентных списаний больше не будет, можете рекомендовать ему вручную отменить подписку в приложении его банка

7. Возврат средств за подписку

  • В ситуации, когда клиент требует вернуть деньги, выполните поиск транзакции](/transactions#поиск-транзакций) по идентификатору подписки subscriptionId. Найдите транзакцию, за которую требуется выполнить возврат, и инициируйте возврат средств по ее идентификатору

Управление подписками также доступно в личном кабинете мерчанта в разделе «Подписки»

Пример запроса на создания платёжной ссылки для подписок

Создание подписки на ежеквартальное рекуррентное списание на 2 года. Первый платеж и 7 последующих (maxPeriods) каждые 3 (period) месяца (interval). Следующее списание, после первого платежа 1 января 2027 года в 12 часов по UTC (startDate).

{
"amount": 1188.54,
"currency": "RUB",
"description": "Подписка на услуги",
"orderId": "05e8b-2c4f",
"successRedirectUrl": "https://mydomain.com/success",
"failRedirectUrl": "https://mydomain.com/fail",
"email": "[email protected]",
"phone": "79876543210",
"subscription": {
"period": 3,
"interval": "month",
"maxPeriods": 7,
"startDate": "2027-01-01T12:00:00"
}
}

Следуя этому примеру, если клиент оплатил подписку 27 ноября 2026 года, то следующее списание будет не через 3 месяца, а раньше, 1 января 2027 года и дальше равными интервалами по расчетным числам. Когда startDate не указано, то списания будут происходить сразу равными интервалами. Для указанного примера это будет 27 февраля 2027 года.


Статусы подписок

ПараметрКомментарий
ActiveПодписка активна
Completedподписка завершена по истечении срока, прекращена мерчантом или клиентом
Failedподписка прекращена, после неудачных попыток списания

Получение подписки по её идентификатору

GET /api/h2h/subscriptions/{id}

Параметры ответа

ПараметрТипКомментарий
initialTransactionTypeСтрокаТип транзакции по которой была создана подписка: CardCrypto — рублевые и валютные карты, SBP — система быстрых платежей
initialTransactionIdUUIDИдентификатор транзакции в системе WATA по которой была создана подписка
maskedCardNumberСтрокаМаска номера карты плательщика (последние 4 цифры)
ipСтрокаIP адрес плательщика
terminalNameСтрокаНазвание терминала мерчанта
creationTimeДатаДата и время создания транзакции в UTC
periodЧислоЧастота списания. Например, 2 week — списание раз в две недели, а 3 month — квартальное
intervalСтрокаИнтервал, через который происходи списание. Week — по неделям, month — по месяцам
maxPeriodsЧислоКоличество последующих периодов списания, исключая первый. Например, вы продали годовую подписку с ежемесячным списанием, тогда нужно указать 11 периодов, т.к. первый уже будет закрыт текущей оплатой
amountЧислоСумма платежа. Всего после точки может быть 2 цифры для копеек или центов. Пример: 1188.00
currencyСтрокаВалюта платежа
descriptionСтрокаОписание заказа в произвольной форме
orderIdСтрокаУникальный идентификатор (номер) заказа в системе мерчанта
startDateДатаДата начала рекуррентных списаний, если она наступает раньше следующего периода
emailСтрокаАдрес электронной почты плательщика
phoneСтрокаНомер телефона плательщика в формате 79865432110 (мобильный номер телефона, 11 цифр без плюса)
statusСтрокаСтатус подписки
paidPeriodsЧислоЧисло уже оплаченных периодов. Если был произведён только инициирующие платеж, будет указано значение 0
lastPaymentDateДатаПоследнее списание по подписке. Если был произведён только инициирующие платеж, будет указано значение null
nextPaymentDateДатаСледующее рекуррентное списание
idUUIDУникальный идентификатор подписки

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


Поиск подписки

GET /api/h2h/subscriptions

Параметры запроса

ПараметрТипКомментарий
StatusesСтрокаСтатус подписки
OrderIdСтрокаУникальный идентификатор заказа в системе мерчанта
EmailСтрокаАдрес электронной почты плательщика
maxResultCountЧислоКоличество записей, которые нужно выдать. По умолчанию 10, максимум 1000
cursorIdUUIDИдентификатор пагинации, получаемый в поле nextCursorId ответа на запрос. Указывается при втором и последующих запросах
cursorDateДатаИспользуется при сортировке поиска по дате. Значение приходит в поле nextCursorDate ответа на запрос. Указывается при втором и последующих запросах

Параметры ответа

ПараметрТипКомментарий
hasNextPageБулево полеСообщает о наличии или отсутствии true/false следующей страницы с результатами поиска
nextCursorIdUUIDИдентификатор пагинации для следующей страницы
itemsОбъектСодержит данные подписки

Коды ошибок

Пример запроса и ответа на поиск подписки


Завершение подписки

Если вы хотите досрочно прекратить рекуррентные списания, воспользуйтесь методом

POST /api/h2h/subscriptions/{id}/statuses

Пример запроса

POST https://api.wata.pro/api/h2h/subscriptions/3fa85f64-5717-4562-b3fc-2c963f66afa/statuses
{
"status": "Completed"
}

Техническая документация