Subscription Statuses
| Status | Description |
|---|---|
pending | Created but not yet activated (awaiting payment confirmation) |
trialing | In a free trial period |
active | Paid and active |
past_due | Payment failed — grace period |
canceled | Canceled by tenant or admin |
expired | Trial or subscription ended without renewal |
Status Transitions
Transitions are triggered by Stripe webhook events:| Event | Transition |
|---|---|
checkout.session.completed | pending → active or trialing |
customer.subscription.updated | trialing → active |
invoice.payment_failed | active → past_due |
customer.subscription.deleted | any → canceled |
Subscription Fields
Event Sourcing
Every subscription status change is written tosubscription_events. This gives you a complete audit trail: