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

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

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

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

:::

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

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

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

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


---

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


---

## Описание

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

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

Под капотом мы используем метод [Update a subscription](https://docs.stripe.com/api/subscriptions/update) из Stripe API, обновляя поле [`cancel_at_period_end`](https://docs.stripe.com/api/subscriptions/update#update_subscription-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` — отменить запланированную отмену, подписка продолжит действовать

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

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

```http
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
```

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

```http
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
```

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

```json
{
  "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

---

**Documents**

- [Endpoint (API v2): Корзина T-Bank — один рублёвый платёж на несколько товаров](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-api-v2-korzina-t-bank-odin-rublyovyj-platyozh-na-neskolko-tovarov-GiKE6pds32)
- [Endpoint: Корзина Stripe — одна платёжная ссылка на несколько продуктов](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-korzina-stripe-odna-platyozhnaya-ssylka-na-neskolko-produktov-IwfZcVa3fp)
- [Endpoint (API v2): Рублёвый платёж T-Bank под заказ](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-api-v2-rublyovyj-platyozh-t-bank-pod-zakaz-ypmkgCKGjv)
- [Endpoint (API v2): Платёж Stripe по payment_intent_id](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-api-v2-platyozh-stripe-po-payment_intent_id-YClkCUGdKc)
- [Endpoint (API v2): Список платежей Stripe за период](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-api-v2-spisok-platezhej-stripe-za-period-HLmrFXTXwS)
- [Что делать, если у вас хай-риск продукт?](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/chto-delat-esli-u-vas-haj-risk-produkt-iz6C33qYOE)
- [Endpoint (API v2): Регистрация вебхука уведомлений](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-api-v2-registraciya-vebhuka-uvedomlenij-yMW2D2iTuK)
- [Endpoint (API v2): Ротация секрета подписи вебхуков](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-api-v2-rotaciya-sekreta-podpisi-vebhukov-WRlr8kxNX2)
- [Не открывается мини-приложение или Dashboard из России — что делать](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/ne-otkryvaetsya-mini-prilozhenie-ili-dashboard-iz-rossii-chto-delat-N75kNI0Z9o)
- [QuickStart Stripe: первая оплата и webhook за 15 минут](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/quickstart-stripe-pervaya-oplata-i-webhook-za-15-minut-eXWpaeyh1t)
- [Endpoint: Список рабочих платёжных ссылок Stripe](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-spisok-rabochih-platyozhnyh-ssylok-stripe-kDG4Zav1iv)
- [Webhook EasyPay: структура данных платежей T-Bank](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/webhook-easypay-struktura-dannyh-platezhej-t-bank-IjWtNIwzgd)
- [MCP-сервер EasyPay: настройка платежей в чате с AI](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/mcp-server-easypay-nastrojka-platezhej-v-chate-s-ai-cqtpnWTk2i)
- [Webhook EasyPay: структура данных платежей Stripe](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/webhook-easypay-struktura-dannyh-platezhej-stripe-2aK80hyqzo)
- [Webhook EasyPay: проверка подписи](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/webhook-easypay-proverka-podpisi-YS2uy0j2It)
- [Endpoint: Немедленная отмена подписки](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-nemedlennaya-otmena-podpiski-j8M2K8H8FQ)
- [Endpoint: Отмена подписки в конце периода](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-otmena-podpiski-v-konce-perioda-YPDXDsaVC0)
- [Endpoint: Получение платёжных объектов Stripe](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-poluchenie-platyozhnyh-obuektov-stripe-tu4gaOUuSJ)
- [Endpoint: Создание Payment Link для существующего продукта](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-sozdanie-payment-link-dlya-sushestvuyushego-produkta-BpkGOi94hv)
- [Endpoint: Создание промокода Stripe для существующих продуктов](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-sozdanie-promokoda-stripe-dlya-sushestvuyushih-produktov-k0Jz6aJx7Q)
- [Checkout: Публичная T-Bank ссылка — параметры через Base64](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/checkout-publichnaya-t-bank-ssylka-parametry-cherez-base64-dSXBIR2pat)
- [Интеграция EasyPay с GetCourse](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/integraciya-easypay-s-getcourse-ejM3K01cmB)
- [Инструкция для партнёров: как пользоваться ботом EasyPay](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/instrukciya-dlya-partnyorov-kak-polzovatsya-botom-easypay-pzstTctBLZ)
- [Endpoint (API v2): Payment Link для корзины — несколько продуктов](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-api-v2-payment-link-dlya-korziny-neskolko-produktov-zJKlJx9zui)
- [Endpoint (API v2): Перенос даты автосписания подписки (подарочные дни)](https://docs.thenextgen.store/s/1fa79577-e778-443b-a4e4-187f47b93798/doc/endpoint-api-v2-perenos-daty-avtospisaniya-podpiski-podarochnye-dni-tGi3aL5Y1g)