Приём платежей

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

Подписки и автосписания для сервисов, школ, клубов и всего, что оплачивается регулярно. Доступны для всех методов: карт, СБП и USDT.

POST /v1/subscriptions
curl -X POST https://api.nordpay.pro/v1/subscriptions \
  -H "Authorization: Bearer $NORDPAY_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "customer": {
      "email": "anna@example.com",
      "id": "u_1842"
    },
    "plan": {
      "amount": 99000,
      "interval": "month",
      "interval_count": 1
    },
    "method": "card",
    "description": "Тариф «Команда»"
  }'

Как это работает

  1. Вы создаёте подписку с планом списаний и данными покупателя.
  2. Покупатель один раз подтверждает оплату на странице NordPay по ссылке confirmation.url. Способ оплаты сохраняется для следующих списаний.
  3. Дальше NordPay списывает сумму по расписанию и присылает события subscription.renewed или subscription.payment_failed.

Если нужен разовый платёж с сохранением карты без расписания — передайте save_method: true при создании платежа.

Требования к подпискам.
Покупатель должен видеть сумму, периодичность и способ отмены до оплаты. Мы проверяем это при подключении — так меньше споров и отказов банков.
Ответ · 201
{
  "id": "sub_3Lm9xR2pVa7Q",
  "object": "subscription",
  "status": "incomplete",
  "customer": {
    "email": "anna@example.com",
    "id": "u_1842"
  },
  "plan": {
    "amount": 99000,
    "interval": "month",
    "interval_count": 1
  },
  "method": "card",
  "description": "Тариф «Команда»",
  "trial_end": null,
  "current_period_end": null,
  "confirmation": {
    "type": "redirect",
    "url": "https://api.nordpay.pro/checkout/pay_2Kr1qY7nDs4eJ0pw"
  },
  "livemode": false,
  "created_at": "2026-11-08T12:00:00Z"
}

Создать подписку

Параметры
ПараметрТипОписание
customerобязательныйobjectПокупатель, на которого оформляется подписка.
customer.emailобязательныйstringПочта для уведомлений о списаниях.
customer.phonestringТелефон в формате +79991234567.
customer.idstringИдентификатор покупателя в вашей системе.
planобязательныйobjectУсловия списаний.
plan.amountобязательныйintegerСумма одного списания в копейках.
plan.intervalобязательныйstringweek, month или year.
plan.interval_countобязательныйintegerЧерез сколько интервалов повторять: 1 — каждый месяц, 3 — раз в квартал.
methodобязательныйstringМетод первого и последующих платежей: card, sbp или crypto.
descriptionобязательныйstringНазвание подписки, видно покупателю.
trial_daysintegerПробный период в днях до первого списания.

Планы с фиксированными условиями удобно завести в кабинете, в разделе «Рекуррентные», и показывать покупателю на своём сайте. Список подписок — GET /v1/subscriptions.

GET /v1/subscriptions/:id
curl https://api.nordpay.pro/v1/subscriptions/sub_3Lm9xR2pVa7Q \
  -H "Authorization: Bearer $NORDPAY_SECRET_KEY"

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

СтатусЧто значит
incompleteСоздана, ждём первую оплату покупателя.
trialingИдёт пробный период, списаний пока нет.
activeАктивна, списания проходят по расписанию.
past_dueОчередное списание не прошло, мы повторим попытку.
pausedПриостановлена в кабинете, списаний нет.
canceledОтменена, списаний больше не будет.

При неудачном списании подписка переходит в past_due, а вы получаете subscription.payment_failed — сообщите покупателю и предложите обновить способ оплаты.

Событие о списании
{
  "id": "evt_9xK2mQ4vT1rB",
  "object": "event",
  "type": "subscription.renewed",
  "livemode": false,
  "created_at": "2026-12-08T12:00:05Z",
  "data": {
    "object": {
      "id": "sub_3Lm9xR2pVa7Q",
      "object": "subscription",
      "status": "active",
      "customer": {
        "email": "anna@example.com",
        "id": "u_1842"
      },
      "plan": {
        "amount": 99000,
        "interval": "month",
        "interval_count": 1
      },
      "method": "card",
      "description": "Тариф «Команда»",
      "trial_end": null,
      "current_period_end": "2027-01-08T12:00:00Z",
      "confirmation": null,
      "livemode": false,
      "created_at": "2026-11-08T12:00:00Z"
    }
  }
}

Отмена

Отмена прекращает будущие списания и отправляет событие subscription.canceled. Уже проведённые платежи остаются в силе; если нужно вернуть деньги за текущий период — сделайте возврат по последнему платежу.

Подписку можно отменить и вручную в кабинете — событие придёт так же.

POST /v1/subscriptions/:id/cancel
curl -X POST https://api.nordpay.pro/v1/subscriptions/sub_3Lm9xR2pVa7Q/cancel \
  -H "Authorization: Bearer $NORDPAY_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'