Type Alias SubscriptionStatus

SubscriptionStatus:
    | "none"
    | "trialing"
    | "active"
    | "grace_period"
    | "past_due"
    | "paused"
    | "cancel_at_period_end"
    | "canceled"
    | "expired"
    | "refunded"

Lifecycle state returned by GET /v1/subscriptions/status.

'grace_period' never grants entitlement: active is false during grace. Grace means the billing provider (Apple billing grace, Google Play grace, Stripe retries) keeps retrying the renewal payment until the grace window ends; unlimited access is paused while the retry is in progress and resumes automatically once the renewal succeeds. Renders can still be paid with Spark/SOGNI in the meantime. During grace, currentPeriodEnd reflects when the payment-retry window ends — not paid-through access.

Canceling during a free trial stops renewal and keeps trial access until its original currentPeriodEnd, with trial limits still in effect. The snapshot stays trialing with cancelAtPeriodEnd: true until expiry. Always rely on the server's active value for the entitlement decision. rather than the status string.