> ## 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.

# Extracto mensual

> Solicita el extracto mensual de movimientos de la wallet de un cliente. Se envía por correo electrónico.

Solicita la generación del extracto mensual de movimientos de wallet para un cliente. El extracto se genera en formato PDF y se envía al correo electrónico del cliente.

<Note>
  El extracto no se retorna en la respuesta. Se genera de forma asíncrona y se envía al correo electrónico registrado del cliente. Incluye saldo inicial, créditos, débitos, saldo final y movimientos pendientes por acreditar.
</Note>

### Headers

<ParamField header="x-idempotency" type="string" required placeholder="Token único para garantizar la idempotencia de la petición">
  Token único para garantizar la idempotencia de la petición
</ParamField>

### Path Parameters

<ParamField path="customer_id" type="string" required placeholder="9dd4158b-0e45-42bc-b56f-a4c1f856814d">
  ID del cliente dueño de la billetera. [Crear cliente](/client/customers/create).
</ParamField>

<ParamField path="month" type="string" required placeholder="2026-02">
  Mes del extracto en formato `YYYY-MM`. No puede ser un mes futuro.
</ParamField>

### Response

<ResponseField name="message" type="string">
  Mensaje de confirmación indicando que el extracto será enviado por correo.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/statements/2026-02 \
    -H "Authorization: Bearer sk_test_xxx"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/statements/2026-02',
    {
      headers: {
        'Authorization': 'Bearer sk_test_xxx'
      }
    }
  );

  const data = await response.json();
  console.log(data.message); // "Tu extracto será enviado a tu correo electrónico."
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/statements/2026-02',
      headers={
          'Authorization': 'Bearer sk_test_xxx'
      }
  )

  data = response.json()
  print(data["message"])  # "Tu extracto será enviado a tu correo electrónico."
  ```

  ```php PHP theme={null}
  <?php
  $ch = curl_init();

  curl_setopt_array($ch, [
      CURLOPT_URL => "https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/statements/2026-02",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_HTTPHEADER => [
          "Authorization: Bearer sk_test_xxx"
      ]
  ]);

  $response = curl_exec($ch);
  $data = json_decode($response, true);

  echo $data["message"]; // "Tu extracto será enviado a tu correo electrónico."

  curl_close($ch);
  ?>
  ```
</RequestExample>

<ResponseExample>
  ```json 200 - Extracto solicitado theme={null}
  {
    "message": "Tu extracto será enviado a tu correo electrónico."
  }
  ```

  ```json 422 - Mes inválido theme={null}
  {
    "message": "Formato de mes inválido: 'invalid'. Use el formato YYYY-MM (ejemplo: 2026-02)."
  }
  ```

  ```json 422 - Mes futuro theme={null}
  {
    "message": "No es posible solicitar extractos de meses futuros."
  }
  ```

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