# Get state transitions by payment ID (v3) Gets the state transitions for a payment by ID. Endpoint: GET /v3/payments/{paymentId}/states Version: 2026.03 Security: Bearer ## Path parameters: - `paymentId` (string, required) Unique identifier of the payment for which you want to get state transition information. Example: "7ea3399c-1234-5678-8d8f-d320ea406630" ## Response 200 fields (application/json): - `stateTransitions` (array, required) - `stateTransitions.updatedFrom` (string, required) Current state of a payment. The payment lifecycle currently uses the following values: - QUOTED - INITIATED - VALIDATING - TRANSFERRING - COMPLETED - FAILED - RETURNED - DECLINED Additional states may be introduced in the future without breaking existing integrations. Example: "INITIATED" - `stateTransitions.updatedTo` (string, required) Current state of a payment. The payment lifecycle currently uses the following values: - QUOTED - INITIATED - VALIDATING - TRANSFERRING - COMPLETED - FAILED - RETURNED - DECLINED Additional states may be introduced in the future without breaking existing integrations. Example: "INITIATED" - `stateTransitions.updatedAt` (string, required) The timestamp when the payment state was updated. Example: "2024-08-13T20:15:50.990995Z" ## Response 400 fields (application/json): - `errors` (object, required) - `errors.code` (string, required) A unique identifier for the error Example: "SYS_003" - `errors.type` (string, required) A high-level categorization of the error, indicating the type of issue that occurred Example: "SYSTEM_ERROR" - `errors.title` (string, required) A brief, user-friendly description of the error Example: "Internal Server Error" - `errors.description` (string, required) A more detailed explanation of the error, potentially including information about what caused the error and the next steps Example: "The payout category value must be one of BANK, EWALLET, CASH_PICKUP, or ATM." - `errors.timestamp` (string, required) Example: "2024-11-21T14:15:22Z" - `status` (string, required) Error Response Status Example: 400 ## Response 404 fields (application/json): - `errors` (object, required) - `errors.code` (string, required) A unique identifier for the error Example: "SYS_003" - `errors.type` (string, required) A high-level categorization of the error, indicating the type of issue that occurred Example: "SYSTEM_ERROR" - `errors.title` (string, required) A brief, user-friendly description of the error Example: "Internal Server Error" - `errors.description` (string, required) A more detailed explanation of the error, potentially including information about what caused the error and the next steps Example: "The payout category value must be one of BANK, EWALLET, CASH_PICKUP, or ATM." - `errors.timestamp` (string, required) Example: "2024-11-21T14:15:22Z" - `status` (string, required) Error Response Status Example: 400 ## Response 500 fields (application/json): - `errors` (object, required) - `errors.code` (string, required) A unique identifier for the error Example: "SYS_003" - `errors.type` (string, required) A high-level categorization of the error, indicating the type of issue that occurred Example: "SYSTEM_ERROR" - `errors.title` (string, required) A brief, user-friendly description of the error Example: "Internal Server Error" - `errors.description` (string, required) A more detailed explanation of the error, potentially including information about what caused the error and the next steps Example: "The payout category value must be one of BANK, EWALLET, CASH_PICKUP, or ATM." - `errors.timestamp` (string, required) Example: "2024-11-21T14:15:22Z" - `status` (string, required) Error Response Status Example: 400