flowchart LR
  START((( )))
	TRIAL[Trial]
  ACTIVE[Active]
  STOPPED[Stopped]
  RENEW_FAILURE[Renewal failure]
  DEACTIVATED[Deactivated]
  UNPAID[Unpaid]
  INCOMPLETE[Incomplete]
  INCOMPLETE_EXPIRED[Incomplete and expired]

  START --> TRIAL
  START -- No trial --> ACTIVE
  START -- Missing payment details --> INCOMPLETE

  TRIAL == Trial over ==> ACTIVE
  TRIAL -- Cancelled --> STOPPED
  ACTIVE == Resubscribe ==> ACTIVE
  ACTIVE == Cancelled subscription ==> STOPPED

  ACTIVE -- Payment failed / in Dunning --> RENEW_FAILURE
	TRIAL -- Payment failed / in Dunning --> RENEW_FAILURE
  RENEW_FAILURE -- Payment succeeded --> ACTIVE
  RENEW_FAILURE -- Retry period expired --> UNPAID
  ACTIVE -- Manual immediate stop or migration --> DEACTIVATED
  INCOMPLETE -- Confirmation --> ACTIVE
  INCOMPLETE -- Expired --> INCOMPLETE_EXPIRED
  INCOMPLETE -- XXX --> DEACTIVATED

  subgraph Has access
		TRIAL
	  ACTIVE
    RENEW_FAILURE
    INCOMPLETE
  end

	subgraph Terminal states
		STOPPED
    INCOMPLETE_EXPIRED
	  DEACTIVATED
		UNPAID
  end

Notes

States

Access Numeric State Description
1 STATE_TRIALING Valid trial subscription.
3 STATE_ACTIVE Normal, active subscription.
5 STATE_RENEW_FAILURE Problem: indicates that the most recent payment failed, and payment is past due. Dunning process.
⚠️ 6 STATE_STOPPED Live until expiry date. Then stopped.
7 STATE_DEACTIVATED Stopped immediately.
8 STATE_UNPAID Retry period expired, and subscription was left unpaid.
9 STATE_INCOMPLETE Missing payment details, but still active.
10 STATE_INCOMPLETE_EXPIRED Missing payment details, now expired.