Многие SaaS-проекты теряют до 30% выручки из-за необработанных неудачных платежей. Типичная ситуация: после регистрации пользователь вводит карту, проходит trial, но спустя месяц платеж не проходит — карта просрочена или на счете недостаточно средств. Без dunning клиент уходит, хотя мог бы остаться. В этой статье разберем, как построить надежный биллинг на Stripe Billing: от настройки trial до ретеншн-механик, которые возвращают клиентов. Рассмотрим конкретные сценарии: обработка past_due, настройка Smart Retries, интеграция Customer Portal и централизованная проверка доступа. Каждый из этих элементов может снизить churn на 20–30%. Ошибки на этих этапах — неверная конфигурация webhook, отсутствие idempotency ключей — приводят к задвоению платежей или пропуску событий. Мы накопили опыт более 50 проектов и готовы поделиться проверенными решениями.
Как устроен жизненный цикл подписки?
Каждая подписка проходит через состояния: trialing → active → past_due → cancelled или active → cancelled (по инициативе пользователя). Webhook'и платёжного провайдера уведомляют приложение о каждом переходе. Важно обрабатывать три ключевых события:
-
invoice.payment_succeeded— активировать подписку, сбросить trial_end. -
invoice.payment_failed— установить статусpast_due, запустить dunning (повторные попытки списания). -
customer.subscription.deleted— мгновенно деактивировать доступ к платным функциям.
Пропуск хотя бы одного вебхука приводит к тому, что клиент остается с доступом без оплаты.
Что такое dunning и как он снижает churn?
Dunning — автоматический процесс повторных попыток списания после неудачного платежа. Согласно документации Stripe, Smart Retries использует машинное обучение для выбора оптимального времени повторной попытки: до 4 раз в течение 14 дней. Настройка в панели Stripe:
- Задать максимальное количество попыток (рекомендуется 3–4).
- Указать интервал между попытками (каждый день или через день).
- Включить вебхук
invoice.payment_failedдля отправки email-уведомлений.
Параллельно Stripe Customer Portal позволяет клиенту обновить платёжный метод без вашего участия. Smart Retries возвращает до 90% неудачных платежей — это в 3 раза эффективнее ручных попыток.
| Параметр | Stripe Smart Retries | Ручные retry |
|---|---|---|
| Попыток | до 4 | любое число, но без ML |
| Время | выбирает ML | фиксированный интервал |
| Email-уведомления | через Portal | своя реализация |
| Возврат платежей | до 90% | ~30% |
Бесплатный пробный период: с картой или без?
| Параметр | Trial without card | Trial with card |
|---|---|---|
| Трение при регистрации | Низкое | Высокое |
| Конверсия в платящих | Ниже (~50%) | Выше (~80%) |
| Риск фрода | Выше | Ниже |
| Рекомендация | B2C, виральные продукты | B2B SaaS |
Для B2B-SaaS рекомендуется trial with card. Для B2C и viral-продуктов — без карты.
Upgrade / Downgrade: мгновенная смена плана
Смена плана должна быть мгновенной и учитывать уже оплаченный период. Stripe обрабатывает это через proration:
await stripe.subscriptions.update(subscriptionId, { items: [{ id: itemId, price: 'price_premium_monthly' }], proration_behavior: 'create_prorations', }); При апгрейде — списывается разница за оставшиеся дни периода. При даунгрейде — разница засчитывается как кредит.
Какие retention-механики реально работают?
- Cancellation flow: вместо кнопки «Отменить» — диалог с clarifying questions («Почему вы уходите?»), предложение паузы (подписка на 1–3 месяца) или скидки.
- Email-кампании: серия писем при past_due, при окончании trial без конверсии, через 30/60/90 дней после отмены.
- Win-back offers: специальное предложение для cancelled пользователей.
Эти механики возвращают до 20% отменивших подписку. Например, при churn в 5% и ARPU $200 правильная настройка dunning может вернуть до $9,000 в месяц.
Типичные ошибки при интеграции подписок
- Необработанный past_due — не настроены вебхуки на неудачные платежи, клиент теряется.
- Отсутствие proration — при смене плана не создается пропорциональный кредит, биллинг расходится.
- Разбросанная проверка доступа — вместо централизованного Gate проверка размазана по контроллерам.
- Игнорирование webhook idempotency — повторные уведомления от Stripe могут привести к двойной активации.
Что входит в работу над подписочным сервисом?
В итоговый проект входит:
- Документация по архитектуре биллинга и API.
- Доступы к Stripe аккаунту и тестовые карты.
- Обучение вашей команды работе с биллингом.
- Поддержка в течение 30 дней после запуска.
Процесс работы
- Анализ требований и проектирование тарифной сетки
- Интеграция Stripe Billing (вебхуки, portal, proration)
- Реализация регистрации, trial, upgrade/downgrade, dunning
- Retention-механики (cancellation flow, email-кампании)
- Документация по API и архитектуре
- Тестирование payment flow и сценариев отмены
- Поддержка и доработки после запуска
- Обучение вашей команде работе с биллингом
Сроки и стоимость
Веб-сервис с подпиской через Stripe (регистрация, trial, upgrade/downgrade, portal, базовые webhook'и): от 2 до 3 месяцев. С расширенной тарификацией, командами, dunning и analytics: от 3 до 5 месяцев. Стоимость рассчитывается индивидуально на основе сложности и требуемого стека.
Закажите разработку надёжного биллинга подписки — от дизайна тарифов до ретеншн-механик. Получите консультацию по вашему проекту.







