# Get state transitions by payment ID

Returns the complete state transition history for a payment, including each status change and its timestamp. Use this to audit payment progress or debug processing issues.

Endpoint: GET /v3/payments/{paymentId}/states
Version: 2026.04
Security: Bearer

## Security:

  - `Bearer` (unknown)
    http bearer JWT

## Path parameters:

  - `paymentId` (string, required)
    Unique identifier of the payment for which you want to get state transition information.

## Response 200:

  - `200` (unknown)
    Successfully fetched payment state transitions.

## 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`
- `AWAITING_FUNDING`

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:

  - `400` (unknown)
    Invalid input variables for the payment.

## Response 400 fields (application/json):

  - `errors` (array, required)
    List of payment errors

  - `errors.code` (string, required)
    A unique identifier for  the error
    Example: SYS_090

  - `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: Unable to process the request due to an internal server error.

  - `errors.timestamp` (string, required)
    Example: 2024-11-21T14:15:22Z

  - `status` (integer, required)
    Error Response Status
    Example: 400

## Response 404:

  - `404` (unknown)
    Payment not found.

## Response 404 fields (application/json):

  - `errors` (array, required)
    List of payment errors

  - `errors.code` (string, required)
    A unique identifier for  the error
    Example: SYS_090

  - `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: Unable to process the request due to an internal server error.

  - `errors.timestamp` (string, required)
    Example: 2024-11-21T14:15:22Z

  - `status` (integer, required)
    Error Response Status
    Example: 400

## Response 500:

  - `500` (unknown)
    Internal processing error

## Response 500 fields (application/json):

  - `errors` (array, required)
    List of payment errors

  - `errors.code` (string, required)
    A unique identifier for  the error
    Example: SYS_090

  - `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: Unable to process the request due to an internal server error.

  - `errors.timestamp` (string, required)
    Example: 2024-11-21T14:15:22Z

  - `status` (integer, required)
    Error Response Status
    Example: 400

## Response 400 examples:

  - `badRequest` (unknown)
    Default response when the request is malformed or a parameter fails validation.

  - `invalidRequestBody` (unknown)
    Returned when a field in the request body has an unexpected type or value.

## Response 404 examples:

  - `resourceNotFound` (unknown)
    Returned when no resource matches the supplied identifier.

## Response 500 examples:

  - `internalServerError` (unknown)
    Default response for an unhandled server-side failure.

