Cuentas bancarias
Endpoints para listar bancos, tipos de documento, crear y listar cuentas bancarias de terceros asociadas al usuario. Estas cuentas se usan en Retiros y en Exchange (FX) para dispersión.
Todos los endpoints requieren autenticación con Authorization: Bearer [TOKEN] y x-api-key.
Resumen de endpoints
| Endpoint | Método | Descripción |
|---|---|---|
/bank_list_third_party_withdraw/ | GET | Listar bancos disponibles por país |
/base/document_type/ | GET | Listar tipos de documento |
/create_third_party_banks/ | POST | Crear cuenta bancaria |
/list_third_party_banks/ | GET | Listar cuentas del usuario (filtro por país) |
/api/v1/thirdpartybank/thirdpartybank | PUT | Actualizar cuenta USD: nombre o desactivar |
/api/v1/usd/accounts | GET | Listar cuentas USD del usuario |
Las cuentas Third Party (CO, MX, BR, US clásicas) son inmutables: no hay endpoints para modificar ni eliminar. Las cuentas en USD (identificadas por ID alfanumérico) sí permiten actualizar el alias y desactivar (ocultar).
Países y tipos de cuenta
El sistema soporta Colombia (CO), Estados Unidos (US), México (MX) y Brasil (BR). Cada país tiene tipos de cuenta y validaciones propias.
Tipos de cuenta por país
| País | account_type | Descripción |
|---|---|---|
| CO, US | 0 | Ahorros |
| CO, US | 1 | Corriente |
| MX | 2 | CLABE (18 dígitos) |
| BR | 3 | PIX Email |
| BR | 4 | PIX CPF (11 dígitos) |
| BR | 5 | PIX CNPJ (14 dígitos) |
| BR | 6 | PIX Teléfono (10-11 dígitos) |
| BR | 7 | PIX Aleatorio (1-37 caracteres) |
Cuentas USA: campos obligatorios
Para country_registered: "US" son obligatorios: wire, routing_number, address y nickname.
Listar bancos disponibles
Obtiene la lista de bancos disponibles para retiros/transferencias según el país.
Endpoint
GET /bank_list_third_party_withdraw/Headers
Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Accept: application/jsonRespuesta (200)
[
{ "id": 0, "name": "Bancolombia" },
{ "id": 1, "name": "Banco de Bogota" },
{ "id": 2, "name": "Davivienda" },
{ "id": 3, "name": "BBVA Colombia" }
]Usa el id del banco en bank_name al crear la cuenta. El sistema soporta 35+ bancos en Colombia, 50+ en USA, y bancos en México (CLABE) y Brasil (PIX).
Listar tipos de documento
Obtiene los tipos de documento de identidad válidos para el titular de la cuenta.
Endpoint
GET /base/document_type/Headers
Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Accept: application/jsonRespuesta (200)
[
{ "id": 0, "name": "CC" },
{ "id": 1, "name": "CE" },
{ "id": 2, "name": "NIT" },
{ "id": 3, "name": "TI" },
{ "id": 4, "name": "PPT" }
]El id se usa en account_holder_document_type. Los tipos válidos dependen del país.
Crear cuenta bancaria
Registra una cuenta bancaria de terceros asociada al usuario. La cuenta se usa luego en retiros o en movimientos Exchange (dispersión).
Endpoint
POST /create_third_party_banks/Headers
Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Content-Type: application/jsonRequest (campos comunes y por país)
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
account_holder_name | string | ✅ | Nombre completo del titular |
account_type | int | ✅ | Ver tabla por país (0-1 CO/US, 2 MX, 3-7 BR) |
account_holder_document_type | int | ✅ | ID del tipo de documento |
account_holder_document | string | ✅ | Número de documento |
account_number | string | ✅ | Número de cuenta (formato según tipo) |
bank_name | int | ✅ | ID del banco |
country_registered | string | ✅ | CO, US, MX o BR |
nickname | string | ❌ | Alias (opcional en CO/MX/BR; obligatorio en US) |
wire | string | ❌ | Nombre del banco para SWIFT (obligatorio en US) |
routing_number | string | ❌ | Routing/ABA (obligatorio en US) |
address | string | ❌ | Dirección del banco (obligatorio en US) |
Validaciones
- Banco por país:
bank_namedebe ser un banco válido paracountry_registered. - Tipo de cuenta por país:
account_typedebe ser uno de los permitidos para ese país. - Formato de cuenta: Para CLABE (MX) y PIX (BR) se valida el formato con regex (ej.: CLABE 18 dígitos, PIX CPF 11 dígitos).
- Tipo de documento por país: El tipo de documento debe ser válido para el país.
- Cuenta duplicada: No se permite registrar la misma cuenta (mismo número, documento, titular, tipo, país) dos veces.
- USA: Para
country_registered: "US"son obligatorioswire,routing_number,addressynickname.
Respuesta exitosa (200)
{
"code_transaction": "OK",
"data": {
"id": 85,
"account_holder_name": "Sofia Martin",
"account_type": 0,
"account_holder_document_type": 0,
"account_holder_document": "12345678",
"account_number": "58200011161",
"bank_name": 0,
"country_registered": "CO",
"wire": null,
"routing_number": null,
"address": null,
"nickname": "Cuenta Principal"
}
}Guarda el id (o data.id) para usarlo en retiros (third_party_bank_id) o en Exchange (bank_account_id).
Errores posibles
| Código | Causa |
|---|---|
400 | Banco no válido para el país indicado |
400 | Tipo de cuenta no válido para el país |
400 | Formato de número de cuenta inválido (CLABE, PIX, etc.) |
400 | Tipo de documento no válido para el país |
400 | ”La cuenta ya esta registrada en el sistema” |
400 | Para US: faltan wire, routing_number, address o nickname |
Listar cuentas bancarias del usuario
Lista las cuentas bancarias registradas por el usuario, con filtro opcional por país.
Endpoint
GET /list_third_party_banks/?country=COParámetros query
| Parámetro | Tipo | Descripción |
|---|---|---|
country | string | Opcional. Filtrar por país: CO, US, MX, BR |
Headers
Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Accept: application/jsonRespuesta (200)
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"pk": 85,
"account_holder_name": "Sofia Martin",
"account_type": 1,
"account_holder_document_type": 0,
"account_holder_document": "12345678",
"account_number": "58200011161",
"bank_name": 0,
"state": "Creada",
"country_registered": "CO",
"wire": null,
"routing_number": null
}
]
}Estados de cuenta
| state | Descripción |
|---|---|
| Creada | Cuenta recién registrada |
| En proceso de inscripción | En validación |
| Inscrita | Activa |
| Tiene un problema | Error |
Cuentas USD (ID alfanumérico)
Las cuentas en dólares (USD) que se identifican por ID alfanumérico permiten retiros y depósitos en USD. A diferencia de las cuentas Third Party (ID numérico), en estas cuentas sí puedes cambiar el nombre/alias y desactivar la cuenta (ocultarla).
Diferencias con Third Party Banks
| Third Party (CO, MX, BR, US) | Cuentas USD (ID alfanumérico) | |
|---|---|---|
| ID | Numérico (ej. 85) | Alfanumérico (ej. account_abc123) |
| Alias | Campo nickname (solo al crear) | Campo name (modificable con PUT) |
| Modificar / Desactivar | No disponible | Sí: PUT para cambiar name o status: DEACTIVATED |
Actualizar cuenta USD (cambiar nombre o desactivar)
Permite cambiar el alias (name) de la cuenta o desactivarla. No se puede desactivar y cambiar nombre en el mismo request.
Endpoint
PUT /api/v1/thirdpartybank/thirdpartybankHeaders
Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Content-Type: application/jsonRequest
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
bank_account_id | string | ✅ | ID de la cuenta USD (alfanumérico) |
name | string | ❌ | Nuevo alias/nombre de la cuenta |
status | string | ❌ | Solo valor permitido: DEACTIVATED (desactiva/oculta la cuenta) |
Reglas: En un mismo request solo se envía o bien name o bien status=DEACTIVATED, no ambos. El name debe ser único entre las cuentas del usuario.
{
"bank_account_id": "account_abc123",
"name": "Mi Cuenta Principal USD"
}Respuesta exitosa (200)
{
"code_transaction": "OK",
"result": "The bank account have been updated"
}Al desactivar (status: DEACTIVATED), el sistema actualiza el estado local y elimina la cuenta en el proveedor; la cuenta deja de aparecer en el listado.
Errores posibles
| Código | Causa |
|---|---|
400 | ”If client deactivated the account can not update the nickname” — Se enviaron name y status=DEACTIVATED juntos |
400 | ”The {status} is not allowed” — status distinto de DEACTIVATED |
400 | ”The {name} is already taken, please use another one” — Nombre ya usado por otra cuenta |
404 | Cuenta USD no encontrada |
Listar cuentas USD
Devuelve las cuentas en USD del usuario. Las cuentas desactivadas no se incluyen.
Endpoint
GET /api/v1/usd/accountsHeaders
Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Accept: application/jsonRespuesta (200)
{
"data": {
"payment_types": [
{
"id": 1,
"payment_method": "BANK_TRANSFER",
"account_id": "account_abc123",
"name": "Mi Cuenta Principal USD",
"routing": "021000021",
"account_number": "1234567890",
"status": "DEPOSIT_ONLY",
"type": "CHECKING",
"created_at": "2026-02-03T10:00:00Z"
}
]
},
"message": "ok"
}Usa el account_id de cada cuenta como bank_account_id en el PUT para actualizar o desactivar.
La desactivación es permanente. Solo se puede modificar el nombre (name) de la cuenta; no otros datos como routing o número de cuenta.
Uso de las cuentas
Una vez creada, la cuenta se usa en:
- Retiros bancarios:
POST /create/third_party_withdraw/con el campothird_party_bank_id(Colombia COP) o en flujos USD. - Exchange (FX):
POST /v2/exchange/initiate/con el campobank_account_idpara la dispersión automática al completar el movimiento.
El sistema valida que la cuenta pertenezca al usuario autenticado antes de ejecutar el retiro o el movimiento.
Para el flujo completo de retiros por país, consulta Retiros Bancarios. Para movimientos transfronterizos con dispersión, consulta Exchange (FX).