Рекуррентные платежи ломаются не на списании, а на повторных попытках и уведомлениях
Рекуррентный биллинг должен уметь жить с отказом карты как с нормальным состоянием системы. Ключевой контур: авторизация, классификация причины отказа, повтор по расписанию и контроль конечного результата. Если retry запускается без идемпотентного ключа и состояния попытки, вы быстро получаете дубли, спорные списания и тихую утечку выручки.
Для dunning-стратегии важны не «сколько раз пытаться», а как менять поведение по типу ошибки:
• soft decline — повтор через паузу, с экспоненциальным backoff
• insufficient funds — следующая попытка ближе к ожидаемому пополнению
• expired / replaced card — не повторять бесконечно, а сразу вести к обновлению платежного метода
• network / gateway error — отделять от реального отказа эмитента и повторять отдельно
Автоматизация должна хранить не только статус подписки, но и историю попыток: timestamp, ответ процессинга, код отказа, канал уведомления, результат. Иначе невозможно построить нормальную аналитику churn по причине оплаты и понять, где именно возникает revenue leakage. Идемпотентность в биллинге — это не рекомендация, а базовый вопрос выживания системы.
Хорошая dunning-машина не просто шлет письма, а управляет жизненным циклом долга: уведомление, повтор, grace period, ограничение доступа, окончательная приостановка. Если сценарии не разделены, вы либо слишком рано теряете клиента, либо слишком долго кредитуете его за свой счет. Грамотно спроектированная dunning-стратегия способна спасти до 15% уходящей регулярной выручки.
Проверяйте не факт retry, а консистентность всего контура: один отказ — одна запись, одно решение, один путь эскалации.
Подписки: биллинг-лаб
@subscriptions_billing_lab_arb
Рекуррентные платежи ломаются не на списании, а на повторных попытках и уведомлениях
Этот пост опубликован в Telegram-канале Подписки: биллинг-лаб. Подписаться можно по ссылке: @subscriptions_billing_lab_arb.