TransactionStatus¶
The TransactionStatus
enum represents the lifecycle states of a transaction within the system. These statuses reflect different phases and outcomes, including both transitional and terminal states.
Enum Values¶
Status | Description | Terminal/Final Status for transaction |
---|---|---|
CREATED |
The transaction has been created but not yet processed. | No |
PENDING |
The transaction is awaiting further action (e.g., authorization, 3DS, etc). | No |
APPROVED |
The transaction has been successfully authorized or completed. | ✅ Yes |
DECLINED |
The transaction was rejected by the payment provider or bank. | ✅ Yes |
CANCELED |
The transaction was canceled either by the user or system. | ✅ Yes |
INVALID |
The transaction is marked as invalid due to inconsistencies or errors. | ✅ Yes |
SESSION_EXPIRED |
The transaction session expired before it could complete. | ✅ Yes |
Transaction Lifecycle Diagram (High-Level)¶
stateDiagram-v2
[*] --> CREATED
CREATED --> PENDING : user initiated / submitted
PENDING --> APPROVED : success
PENDING --> DECLINED : failure
PENDING --> CANCELED : user/system cancel
PENDING --> SESSION_EXPIRED : timeout
CREATED --> CANCELED : user cancel
CREATED --> INVALID : validation failure
APPROVED --> [*]
DECLINED --> [*]
CANCELED --> [*]
INVALID --> [*]
SESSION_EXPIRED --> [*]
Transaction Transition Rules (Detailed)¶
graph TD
CREATED["CREATED"]
PENDING["PENDING"]
APPROVED["APPROVED"]
DECLINED["DECLINED"]
CANCELED["CANCELED"]
INVALID["INVALID"]
SESSION_EXPIRED["SESSION_EXPIRED"]
CREATED -->|submit| PENDING
CREATED -->|cancel| CANCELED
CREATED -->|validation error| INVALID
PENDING -->|authorized| APPROVED
PENDING -->|rejected| DECLINED
PENDING -->|cancel| CANCELED
PENDING -->|timeout| SESSION_EXPIRED
Notes¶
- Terminal Statuses: Once a transaction reaches a terminal status, it is considered finalized and immutable.
- Non-Terminal Statuses: Allow additional actions or progression through the transaction lifecycle.