> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onepay.la/llms.txt
> Use this file to discover all available pages before exploring further.

# Detalle de un movimiento

> Obtiene el detalle de un movimiento, incluyendo el nodo de origen.

Obtiene un movimiento de la billetera de tu empresa. Es un endpoint **solo de consulta**.

A diferencia del [listado](/client/movimientos/list), el detalle **sí** incluye el `node`: el origen del movimiento (un pago, una dispersión, etc.).

### Path Parameters

<ParamField path="transaction_id" type="string" required placeholder="0194b42f-5515-7245-b9f4-193c92f37b8c">
  UUID del movimiento obtenido desde el [listado de movimientos](/client/movimientos/list).
</ParamField>

### Ejemplos de uso

<Tabs>
  <Tab title="curl">
    ```bash theme={null}
    curl https://api.onepay.la/v1/transactions/0194b42f-5515-7245-b9f4-193c92f37b8c \
      -X GET \
      -H "Authorization: Bearer sk_test_xxx"
    ```
  </Tab>

  <Tab title="JavaScript">
    ```ts theme={null}
    const response = await fetch('https://api.onepay.la/v1/transactions/0194b42f-5515-7245-b9f4-193c92f37b8c', {
      method: 'GET',
      headers: {
        'Authorization': 'Bearer sk_test_xxx',
      },
    });
    const data = await response.json();
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    import requests

    response = requests.get(
        'https://api.onepay.la/v1/transactions/0194b42f-5515-7245-b9f4-193c92f37b8c',
        headers={'Authorization': 'Bearer sk_test_xxx'},
    )
    data = response.json()
    ```
  </Tab>
</Tabs>

### Response

<ResponseField name="id" type="string">UUID del movimiento.</ResponseField>
<ResponseField name="type" type="string">Tipo de movimiento: `deposit` (entrada) o `withdraw` (salida).</ResponseField>
<ResponseField name="amount" type="number">Monto del movimiento en pesos (COP).</ResponseField>
<ResponseField name="amount_label" type="string">Monto formateado, por ejemplo `$50.000`.</ResponseField>
<ResponseField name="concept" type="string">Concepto del movimiento. Puede ser `null`.</ResponseField>
<ResponseField name="description" type="string">Descripción legible del movimiento. Puede ser `null`.</ResponseField>
<ResponseField name="subtype" type="string">Código del tipo de movimiento (ver [tabla de valores](/client/movimientos/list#valores-de-subtype)).</ResponseField>
<ResponseField name="subtype_label" type="string">Etiqueta legible del `subtype`.</ResponseField>
<ResponseField name="confirmed" type="boolean">`true` si el movimiento está confirmado; `false` si está reservado o pendiente.</ResponseField>
<ResponseField name="accredited_at" type="string">Fecha (ISO 8601) en que el saldo se acredita al balance. Puede ser `null`.</ResponseField>
<ResponseField name="created_at" type="string">Fecha de creación en formato ISO 8601.</ResponseField>
<ResponseField name="external_id" type="string">Identificador externo asociado al movimiento, si existe. Puede ser `null`.</ResponseField>

<ResponseField name="node_type" type="string">
  Tipo del nodo de origen del movimiento, por ejemplo `Payment` o `CashoutLine`. Es `null` cuando el movimiento no tiene un origen asociado.
</ResponseField>

<ResponseField name="node_id" type="string">UUID del nodo de origen. Es `null` cuando no aplica.</ResponseField>

<ResponseField name="node" type="object">
  Objeto con el origen del movimiento. Su forma depende de `node_type`:

  * `Payment`: el pago asociado (mismo formato que el [detalle de pago](/client/payments/detail)).
  * `CashoutLine`: la línea de dispersión asociada.
  * Otros tipos: `null`.
</ResponseField>

### Ejemplo de respuesta

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "0194b42f-5515-7245-b9f4-193c92f37b8c",
    "type": "deposit",
    "amount": 50000,
    "amount_label": "$50.000",
    "concept": "Pago recibido",
    "description": "Pago recibido: f37b8c",
    "subtype": "PAYIN",
    "subtype_label": "Pago",
    "confirmed": true,
    "accredited_at": null,
    "created_at": "2025-01-29T22:29:48.000000Z",
    "external_id": "ORD-9912",
    "node_type": "Payment",
    "node_id": "9e16627d-1eb9-46c4-ba19-b229ea77d68e",
    "node": {
      "id": "9e16627d-1eb9-46c4-ba19-b229ea77d68e",
      "source": "Pago de pedido ORD-9912",
      "currency": "COP",
      "amount": 50000,
      "amount_label": "$50.000",
      "title": "Pago de pedido ORD-9912",
      "status": "approved",
      "is_test": false,
      "external_id": "ORD-9912",
      "created_at": "2025-01-29T22:29:48.000000Z",
      "paid_at": "2025-01-29T22:29:48.000000Z",
      "payment_link": "https://checkout.onepay.la/9e16627d-1eb9-46c4-ba19-b229ea77d68e"
    }
  }
  ```

  ```json 404 theme={null}
  {
    "message": "Registro no encontrado",
    "code": 10002,
    "code_name": "record_not_found"
  }
  ```
</ResponseExample>
