# Retiros

Consulta los retiros de tu cuenta de cobro.

> [!WARNING]
> El SDK `vexor` de npm (Stripe, MercadoPago, PayPal, Square, Talo) está **deprecado**: ya no se mantiene y no debe usarse. vexorpay es hoy una **API REST de links de pago en USD, sin SDK oficial**. Migración: <https://developers.vexorpay.com/docs/migracion-desde-el-sdk>

Fuente: <https://developers.staging.vexorpay.com/docs/api/payouts>

El saldo disponible se retira desde el **portal de retiros** de tu cuenta de cobro (dashboard →
**Retirar**) a la cuenta bancaria (u otro medio de retiro) que configures
ahí, en tu moneda local según el país. Para retirar hace falta tener la **identidad verificada**.
Cada retiro puede tener una comisión que depende del medio y del país.

Por la API los retiros son de **sólo lectura**: no se crean retiros por API.

## Listar retiros

`GET /api/v1/payouts`

Lista tus retiros, del más nuevo al más viejo, incluidos los que hiciste desde el dashboard.
El entorno lo define la API key. Parámetros: `limit`, `starting_after` y `ending_before`.

**curl**

```bash
curl "https://api.vexorpay.com/api/v1/payouts?limit=10" \
  -H "Authorization: Bearer vxp_live_tu_clave"
```

**Node.js**

```js
const res = await fetch(
  'https://api.vexorpay.com/api/v1/payouts?limit=10',
  {
    headers: { Authorization: 'Bearer vxp_live_tu_clave' },
  },
)

const data = await res.json()
```

**PHP**

```php
<?php

$client = curl_init('https://api.vexorpay.com/api/v1/payouts?limit=10');
curl_setopt_array($client, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ['Authorization: Bearer vxp_live_tu_clave'],
]);

$data = json_decode(curl_exec($client), true);
```

**Python**

```python

response = requests.get(
    'https://api.vexorpay.com/api/v1/payouts',
    params={'limit': '10'},
    headers={'Authorization': 'Bearer vxp_live_tu_clave'},
)
data = response.json()
```

**Go**

```go
req, _ := http.NewRequest("GET", "https://api.vexorpay.com/api/v1/payouts?limit=10", nil)
req.Header.Set("Authorization", "Bearer vxp_live_tu_clave")

res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
```

### Respuesta exitosa

`200 OK`

```json
{
  "data": [
    {
      "id": "6a1d2e3f4b5c6d7e8f901234",
      "amountCents": 4462,
      "feeCents": 250,
      "currency": "usd",
      "status": "paid",
      "createdAt": "2026-10-31T12:00:00.000Z",
      "arrivalDate": "2026-11-02T09:30:00.000Z"
    }
  ],
  "has_more": false,
  "total_count": 1,
  "url": "/v1/payouts?limit=10"
}
```

| Campo | Qué es |
| --- | --- |
| `amountCents` | Monto del retiro, en centavos de USD. |
| `feeCents` | Comisión del retiro. |
| `status` | Estado del retiro (por ejemplo `pending`, `in_transit`, `paid`, `failed` o `canceled`). |
| `arrivalDate` | Fecha estimada (o efectiva) de acreditación. `null` si todavía no se conoce. |

La conversión a tu moneda local la hace el procesador de pagos al momento del retiro.

## Errores

| Error | HTTP | Causa |
| --- | --- | --- |
| `validation_error` | 400 | Cursor de paginación inválido. |
| `payment_account_not_ready` | 409 | Todavía no activaste tu cuenta de cobro. |
| `upstream_error` | 502 | El procesador de pagos no respondió. Reintentá en unos minutos. |
