# Transferencias

TED externo, transferencia interna entre cuentas del socio, estado, favoritos y créditos de TED recibida con devolución comandada por el cliente. Valores de entrada en **centavos**.

## Enviar TED

```http
POST /api/partner/v1/transfers/ted
Authorization: Bearer {{access_token}}
Content-Type: application/json
Idempotency-Key: a13c...

{
  "account_id": 1042,
  "amount": 25000,
  "recipientBankCode": "12345678",
  "recipientName": "Beneficiario Ejemplo",
  "recipientDocument": "12345678901",
  "recipientBranch": "0001",
  "recipientAccount": "98765-4"
}
```

- **Alcance:** `transfer:write` · **Obligatorios:** `account_id`, `amount` (centavos) · `recipientBankCode` es el ISPB del banco destino.

**Respuesta `202`:**

```json
{ "status": "accepted", "transactionId": "...", "amount": 25000 }
```

## Transferencia interna

Mueve dinero entre dos cuentas del socio. Tanto el origen como el destino se autorizan contra el socio antes de la operación.

```http
POST /api/partner/v1/transfers/internal
Authorization: Bearer {{access_token}}
Content-Type: application/json

{ "account_id": 1042, "destination_account_id": 1099, "amount": 5000 }
```

- **Alcance:** `transfer:write` · **Obligatorios:** `account_id`, `destination_account_id`, `amount` (centavos)

## Estado de la transferencia

```http
GET /api/partner/v1/transfers/{id}
Authorization: Bearer {{access_token}}
```

- **Alcance:** `transfer:read`

## TED recibida (créditos)

Créditos de TED recibidos de otras instituciones, con devolución al remitente comandada por el cliente.

```http
GET  /api/partner/v1/ted/credits?account_id=1042        # listar (transfer:read)
POST /api/partner/v1/ted/credits/{id}/refund             # devolver (transfer:write)
Authorization: Bearer {{access_token}}
```

El listado devuelve `{ "data": { "credits": [ { id, numCtrlStr, amount, senderName, senderDocument, senderIspb, status, refundable, settlementDate, receivedAt } ], "total": 1 } }`, los más recientes primero (hasta 50), valores en **centavos**; filtro opcional `status`. `refundable` queda `true` mientras el crédito puede ser devuelto por el cliente.

La devolución comanda el retorno ÍNTEGRO del crédito al remitente por el mensaje STR0010 (sin valor parcial). Cuerpo: `{ "account_id": 1042, "reason": "70" }`; `reason` es opcional (por defecto `70`) y restringido a los códigos `1`, `2`, `3`, `4`, `5`, `9`, `31`, `70`, `72` y `84`. Respuesta `202` con `data` (`refundId`, `numCtrlStr`, `amount` en centavos, `status` `processing`). El importe queda reservado en la cuenta hasta el desenlace, que llega por los webhooks `ted.refund.requested`, `ted.refund.completed` y `ted.refund.failed`, descritos en [Webhooks](/es/endpoints/webhooks). Un crédito de otra cuenta o desconocido responde `404`; una devolución ya en curso, un crédito ya devuelto, un motivo inválido o saldo insuficiente responden `422`.

## Favoritos

```http
POST /api/partner/v1/transfers/favorites      # crear (transfer:write)
GET  /api/partner/v1/transfers/favorites       # listar (transfer:read)
DELETE /api/partner/v1/transfers/favorites/{id}  # eliminar (transfer:write)
```

Favorito de beneficiario acotado a una cuenta del socio. **Obligatorios al crear:** `account_id`, `name`.
