Skip to content
Nasir Nasir-Ameen
Notes

Sellavie AI

Subscription recovery is a state machine, not a billing banner

Paid-feature limits, renewal warnings, failed-payment retries and controlled downgrade need one server-owned lifecycle.
6 min read

A failed payment affects more than a message in settings. The system must decide which paid capabilities remain available, how long recovery lasts, when another attempt is allowed, and what happens when the window expires.

One lifecycle

The platform models four commercial tiers, renewal notifications, a three-day failed-payment recovery window, daily retries, and controlled downgrade or expiry behaviour.

Those transitions live on the server. A user can close the browser, a webhook can arrive late, and a provider can retry the same event. Product access cannot depend on whichever screen happens to be open.

Recovery without ambiguity

During recovery, the interface explains the current state and next action while domain services enforce the actual limits. Successful payment returns the subscription to active state. Exhausted recovery moves it through the documented downgrade path.

Billing becomes reliable when provider events, entitlement checks, retries, notifications and product copy all describe the same lifecycle.