ModulesDecision memoUpdated 2026-04-18
User Subscriptions
Tier 2 user-to-plan subscription management with full lifecycle, auto-reconciliation, feature gating, and self-service capabilities.
Full Lifecycle
Free → Trial → Active → PastDue → Cancelled → Expired with automatic transitions.
Auto-Reconciliation
Daily background job handles trial expiry, auto-renewal, and expiration automatically.
Feature Gating
UserFeatureCheckerService resolves which features each user can access based on their plan.
Self-Service
Users can view their own subscription status via the /me endpoint.
Audit Trail
Immutable Cancel+Replace pattern keeps a complete history per billing cycle.
Domain Events
Created, Cancelled, and Renewed events feed into webhook and notification systems.
Subscription Lifecycle
| Status | Description | Can Transition To |
|---|---|---|
| Free | No billing, on free plan | Trial, Active |
| Trial | Trial period active | Active (auto-renew), Expired (no renew) |
| Active | Paid and current | PastDue, Cancelled, Expired |
| PastDue | Payment failed, grace period active | Active (recovered), Expired |
| Cancelled | Manually cancelled (terminal) | — |
| Expired | Period ended (terminal) | — |
Automatic Reconciliation
| Job | Schedule | What it does |
|---|---|---|
| UserSubscriptionReconciliationJob | Daily 5:00 AM UTC | Trial expiry, period expiry, auto-renewal |