Transaction Lifecycle & Statuses
Understand the discrete states that each payment order traverses from creation to final on-chain settlement, along with terminal event webhooks.
Transaction state transitions
Every customer transaction moves through a defined state machine:
| Status | Classification | Meaning & State Description |
|---|---|---|
Created | Intermediate | Order created in database; checkout session active and awaiting customer payment. |
Pending | Intermediate | Payment transfer has been detected on the blockchain; node watchers are awaiting required block confirmations. |
Success | Terminal | Payment is fully confirmed on-chain. Merchant balance is credited; dispatches transaction.success webhook. |
Expired | Terminal | The 15-minute rate quote window lapsed without payment; dispatches transaction.expired webhook. |
Failed | Terminal | Blockchain transaction execution failed or reverted on-chain. |
Cancelled | Terminal | Order was explicitly cancelled prior to payment completion. |
Invalid | Terminal (Exception) | Payment was received with mismatched parameters (e.g. underpayment or wrong token); triggers ops manual review. |
Exception handling & ops manual review
When a customer accidentally underpays or transfers an unsupported token, the order is flagged as Invalid with manual_review: true. Hashpay operations engineers review the exception queue:
- If the customer settles the remainder, the operator marks the order settled, dispatching a delayed
transaction.successevent withmanual_review: true. - If the customer requests a return, the funds are refunded directly to the sender address on-chain.