Prerrequisitos
Antes de iniciar una transferencia:
- La cuenta de origen debe estar registrada en el CRM
- El remitente debe tener saldo suficiente (valor + tarifa)
- La operación debe ocurrir en día hábil, entre 06:30 y 17:00 (Brasilia)
Etapa 1: Iniciar la transferencia
La primera etapa valida los datos, calcula la tarifa y crea una intención de transferencia válida por 24 horas. Ningún fondo es movido en esta etapa. Endpoint: POST /v1/transfers/initiate
Qué sucede
- El cliente envía los detalles de la transferencia (destinatario, valor)
- El sistema valida las reglas de negocio: horario de funcionamiento, límites y duplicidad
- El servicio de tarifas (
plugin-fees) calcula el costo de la transacción - Una entidad
PaymentInitiationes creada con expiración de 24 horas - El sistema retorna el
initiationIdjunto con los valores calculados
Headers
| Header | Obligatorio | Descripción |
|---|---|---|
X-Organization-Id | Sí | UUID de la organización |
Authorization | Condicional | Bearer token (si autenticación habilitada) |
X-Idempotency-Key | No | Clave de idempotencia (UUID v4 recomendado) |
Request body
Campos del recipient
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
ispb | String | Sí | Código ISPB del banco (8 dígitos) |
branch | String | Sí | Agencia (4 dígitos) |
account | String | Sí | Número de cuenta (1-20 dígitos) |
accountType | Enum | Sí | CACC, SLRY, SVGS, TRAN, OTHR (ISO 20022) |
holderDocument | String | Sí | CPF (11 dígitos) o CNPJ (14 dígitos) |
holderName | String | Sí | Nombre del titular (1-200 caracteres) |
Response (200 OK)
Etapa 2: Confirmar la transferencia
Después de que el usuario revise la tarifa, confirme la transferencia para iniciar el procesamiento. Endpoint: POST /v1/transfers/process
Qué sucede
- El sistema valida el
initiationIdy verifica que no haya expirado - Valida el saldo del remitente y aprovisiona los fondos (valor + tasa) en Midaz
- El mensaje
STR0008es enviado al sistema de JD Consultores con firma digital - El estado de la transferencia cambia a
PROCESSING - En segundo plano, el worker espera la confirmación (
STR0008R2) de JD
Request body
Response (200 OK)
Timeline
El flujo típico de una transferencia TED OUT:
Tratamiento de errores
4xx de JD (rechazo inmediato)
4xx de JD (rechazo inmediato)
CancelTransactioninmediato en Midaz (libera aprovisionamiento)- Estado actualizado a
REJECTED - Webhook
transfer.failedenviado - Reembolso automático (valor + tarifa)
5xx/Timeout (error transitorio)
5xx/Timeout (error transitorio)
- Retry automático: 5x (0s, 5s, 25s, 60s, 120s)
- Consulta
ConsultaNumCtrlIFpara verificar estado - Si aún incierto después de retries: reembolso fail-safe
Chargeback (STR0010R2)
Chargeback (STR0010R2)
- Mensaje de devolución recibido del banco destinatario
CancelTransactionoRevertTransactionen Midaz- Estado:
REJECTED - Reembolso automático con código de devolución
Códigos de error comunes
| Código | HTTP | Descripción |
|---|---|---|
BTF-0001 | 400 | Datos inválidos (ISPB, valor negativo) |
BTF-0010 | 403 | Fuera del horario de operación del BACEN |
BTF-0011 | 422 | Límite diario/mensual excedido |
BTF-0012 | 409 | Transferencia duplicada detectada |
BTF-2001 | 422 | Saldo insuficiente |
BTF-1000 | 503 | Servicio JD SPB no disponible |
Ejemplos de respuesta de error
Fuera del horario de funcionamiento (403):Consultar estado
Acompañe el progreso de la transferencia: Endpoint: GET /v1/transfers/
Response
Cancelar transferencia
Las transferencias pueden ser canceladas mientras estén en estado
CREATED o PENDING_CONFIRMATION.
Endpoint: POST /v1/transfers//cancel
Request body (opcional)
Response (200 OK)
Códigos ISPB comunes
| Banco | ISPB |
|---|---|
| Banco do Brasil | 00000000 |
| Bradesco | 60746948 |
| Itaú | 60701190 |
| Santander | 90400888 |
| Caixa Econômica | 00360305 |
| Nubank | 18236120 |
| Inter | 00416968 |

