Billing state transitions and synchronization logic for SaaS products. Use when: billing state machine, subscription state transitions, subscription status sync, stripe status synchronization, billing state transition guard, subscription state model, billing state database, stripe subscription status, billing event driven state, billing state machine design, subscription status change, invalid transition prevention, billing state audit, concurrent state update, stripe state sync, subscription state diagram, billing status enum, state machine enforcement, optimistic lock billing state, billing transition trigger.
marquesfelip0 スター2026/03/29
職業
カテゴリ
決済
スキル内容
When to Use
Invoke this skill when you need to:
Define all valid subscription/billing states and their allowed transitions
Enforce transitions at the database and application layer (invalid transitions rejected)
Synchronize Stripe subscription status to your local database state
Handle concurrent webhook events without corrupting billing state
Emit downstream effects (access changes, emails, audit logs) on each transition
Step 1 — Define All States
Canonical billing states (aligned with Stripe):
State
Stripe Equivalent
Meaning
Feature Access
trialing
trialing
Active trial; payment may or may not be on file
Full or feature-limited
active
active
Paid, current, within billing period
関連 Skill
Full
past_due
past_due
Payment failed; provider retrying
Grace period
unpaid
unpaid
All retries exhausted
Locked / read-only
incomplete
incomplete
Initial payment pending (async methods)
None
incomplete_expired
incomplete_expired
Initial payment window expired (23h)
None
paused
paused
Voluntarily paused (if enabled)
None
canceled
canceled
Subscription ended
None
Valid transitions:
trialing → active (trial converts: payment succeeds)
trialing → canceled (trial ends without conversion; or manual cancel)
trialing → past_due (trial ended, initial payment fails)
active → past_due (renewal payment failure)
active → canceled (cancel_at_period_end or immediate cancel)
active → paused (voluntary pause)
past_due → active (retry payment succeeds)
past_due → unpaid (all retries exhausted)
past_due → canceled (cancel during grace period)
unpaid → active (customer updates payment method + pays)
unpaid → canceled (admin or customer cancels)
paused → active (customer resumes)
canceled → active (reactivation — new Stripe subscription)
incomplete → active (initial async payment confirmed)
incomplete → incomplete_expired (23h window elapsed)
incomplete_expired → (terminal) (must create new subscription)