Endpoint: Отмена подписки в конце периода

С 1 ноября 2026 запрос без заголовка X-Partner-Api-Key перестанет работать.

Мы добавили в эту ручку проверку владельца подписки: она сверяет, что подписка относится к вашему аккаунту. Чтобы проверка работала для ваших запросов, передавайте заголовок с вашим ключом — см. раздел «Заголовки» ниже.

Подключить заголовок можно уже сейчас, ждать 1 ноября не нужно.

Когда использовать этот метод

Этот метод подходит для стандартного сценария отмены подписки, когда пользователь хочет прекратить автоматическое продление, но использовать уже оплаченный период до конца.

Преимущества:

  • Пользователь сохраняет доступ к сервису до конца оплаченного периода

  • Пользователь не теряет деньги за неиспользованное время

  • Пользователь может передумать и возобновить подписку до окончания периода


Для сравнения: Немедленная отмена подписки — если нужно отменить подписку прямо сейчас с немедленным прекращением доступа.


Описание

Этот endpoint позволяет запланировать отмену подписки пользователя в конце текущего оплаченного периода или отменить ранее запланированную отмену.

Интеграция с Stripe API

Под капотом мы используем метод Update a subscription из Stripe API, обновляя поле cancel_at_period_end.

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

URL

POST https://n8n.thenextgen.store/webhook/cancel_subscription_at_period_end

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

Заголовки

  • X-Partner-Api-Key — ваш ключ EasyPay. Обязателен с 1 ноября 2026; подключить рекомендуем заранее. Ключ лежит в личном кабинете: раздел API key and MCP Setup → кнопка Show key.

Query параметры (обязательные)

  • subscription_id — ID подписки Stripe (например: sub_1SlxDHLoVAqE08foQiRVDkfy)

Body параметры (form-data)

  • cancel_at_period_end — булево значение (true / false)

    • true — запланировать отмену подписки в конце текущего периода

    • false — отменить запланированную отмену, подписка продолжит действовать

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

Запланировать отмену подписки

POST /webhook/cancel_subscription_at_period_end?subscription_id=sub_1SlxDHLoVAqE08foQiRVDkfy
X-Partner-Api-Key: <ваш ключ>
Content-Type: application/x-www-form-urlencoded

cancel_at_period_end=true

Отменить запланированную отмену

POST /webhook/cancel_subscription_at_period_end?subscription_id=sub_1SlxDHLoVAqE08foQiRVDkfy
X-Partner-Api-Key: <ваш ключ>
Content-Type: application/x-www-form-urlencoded

cancel_at_period_end=false

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

{
  "application_fee_percent": null,
  "automatic_tax": {
    "disabled_reason": null,
    "enabled": false,
    "liability": null
  },
  "billing_cycle_anchor": 1767585821,
  "billing_cycle_anchor_config": null,
  "billing_mode": {
    "flexible": null,
    "type": "classic"
  },
  "billing_thresholds": null,
  "cancel_at": 1770234221,
  "cancel_at_period_end": true,
  // ... остальные поля подписки Stripe
}

Логика работы

При cancel_at_period_end=true:

  • Подписка остаётся активной до конца текущего оплаченного периода

  • Пользователь сохраняет доступ к сервису до даты окончания периода

  • Автоматическое продление отключается

  • В Stripe устанавливается флаг cancel_at_period_end: true

  • Поле cancel_at содержит timestamp даты окончания подписки

При cancel_at_period_end=false:

  • Отменяется ранее запланированная отмена

  • Подписка продолжит автоматически продлеваться

  • В Stripe флаг cancel_at_period_end сбрасывается в false

  • Поле cancel_at становится null

Ошибки

Код

Что значит

Что делать

400

subscription_id отсутствует или не похож на sub_…

проверьте параметр запроса

401

ключ не распознан или не передан

сверьте X-Partner-Api-Key, ключ копируется целиком

403

подписка принадлежит другому аккаунту

проверьте subscription_id; если уверены, что подписка ваша — напишите команде заботы

409

подписку мы ещё не видим у себя

так бывает в первые секунды после её создания — повторите через минуту

Важные замечания

  • ✅ Подписка должна существовать и быть активной

  • subscription_id должен быть валидным ID из Stripe

  • ✅ Изменения применяются немедленно

  • ⚠️ При cancel_at_period_end=true пользователь сохраняет доступ до конца периода

  • ⚠️ Этот метод не отменяет подписку немедленно — для немедленной отмены используйте другой endpoint