Skip to content

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.