Qué datos se registran por transferencia
Ciclo de vida del estado de la transferencia
TED OUT
- Cliente confirmado (
CREATED) — el cliente confirmó la transferencia, ahora en cola para envío - Enviada a la red bancaria (
PENDING) — mensaje enviado a JD Consultores, esperando reconocimiento - Procesamiento bancario (
PROCESSING) — JD aceptó la transferencia y la enruta - Liquidada (
COMPLETED) — transferencia liquidada con éxito en el banco de destino - Rechazada (
REJECTED) — JD devolvió un error de negocio (por ejemplo, datos de cuenta inválidos) - Fallida (
FAILED) — falla técnica (timeout o indisponibilidad del servicio) - Cancelada (
CANCELLED) — el cliente canceló antes de que se enviara la transferencia
TED IN
- Transferencia detectada (
RECEIVED) — mensaje entrante persistido, pendiente de procesamiento interno - Destinatario validado (
PROCESSING) — el sistema acredita la cuenta del destinatario - Monto acreditado (
COMPLETED) — cuenta del destinatario acreditada con éxito
El banco remitente puede revertir una transferencia entrante ya liquidada. Para gestionar estos chargebacks, TED IN admite una transición
COMPLETED → FAILED.P2P
- Confirmada (
CREATED) — transferencia iniciada entre cuentas internas - Procesando (
PROCESSING) — transacción de Midaz en progreso - Liquidada (
COMPLETED) — ambas cuentas actualizadas con éxito - Fallida (
FAILED) — error de procesamiento - Cancelada (
CANCELLED) — cancelada antes de que comenzara el procesamiento
Revisión de tarifa antes de la confirmación (solo TED OUT)
Para TED OUT, los clientes pasan por un flujo de dos pasos:
- Pendiente de confirmación — el plugin calculó y presentó la tarifa. El cliente aún no la ha confirmado
- Procesada — el cliente confirmó y el plugin creó la transferencia
- Expirada — transcurrieron 24 horas sin confirmación
Historial de estados
El plugin registra cada transición de estado con una marca de tiempo, el estado anterior, el nuevo estado y un motivo para errores y cancelaciones. Esto te da un registro de auditoría completo de cada transferencia — quién cambió qué y cuándo. El campo
changedBy registra el actor que hizo la transición — por ejemplo, un proceso del sistema o un worker de reconciliación. Puede estar vacío.
Campos de reconciliación
Usa estos campos para relacionar los registros de transferencia con tus extractos bancarios:
Retención de datos
Consulta de tus datos
Usa Listar Transferencias para consultar transferencias con los siguientes filtros:
- Por rango de fechas — filtra por
createdAtocompletedAt - Por tipo — TED OUT, TED IN o P2P
- Por estado — por ejemplo, solo transferencias
COMPLETEDpara reconciliación, oFAILEDpara investigación
Para desarrolladores
Almacenamiento
El plugin almacena los datos de transferencia en PostgreSQL. El camporecipientDetails usa JSONB. Este campo contiene las diferentes estructuras de datos para los destinatarios de TED OUT, TED IN y P2P. El campo recipientAccountId referencia una cuenta de Midaz cuando el destinatario es interno.
Cada tenant tiene su propia base de datos, y la organización es el filtro principal dentro de un tenant. El plugin mantiene los siguientes índices para los patrones de consulta comunes:
(midaz_organization_id, created_at)para listados paginados.(midaz_organization_id, status, created_at)para filtros basados en estado.(control_number, date)(único) para búsquedas de reconciliación de JD.
transfer_status_history usa un índice para flujos de auditoría e investigación:
(transfer_id, changed_at DESC)para el historial a nivel de transferencia.
Deduplicación de TED IN entrante
Antes de procesar una transferencia TED IN, el plugin almacena el mensaje JD sin procesar en la tablaJDIncomingMessage. Esto permite que el plugin recupere las transferencias entrantes si el servicio falla durante el procesamiento.
Para prevenir el procesamiento duplicado, la tabla aplica una restricción única en sequenceNumber (el NumCabSeq de JD). Si JD reentrega el mismo mensaje, el plugin lo identifica automáticamente como duplicado y lo ignora.
Qué envía el plugin a Midaz
El plugin registra cada movimiento liquidado en Midaz como una transacción de ledger, pero Midaz guarda el asiento contable — no los detalles bancarios de la transferencia. La identidad de la contraparte (banco, sucursal, cuenta, nombre y documento del titular) y las referencias BACEN (controlNumber, clearingControlNumber) viven solo en el registro Transfer del plugin. En una TED IN, el crédito entra al ledger desde la cuenta @external/BRL; la identidad del remitente no se codifica en la transacción de Midaz.
Lo que la transacción de Midaz lleva son metadatos de correlación:
Un crédito de devolución lleva adicionalmente
refundKind, originalTransferId, devolutionCode y los números de control originales.
La correlación funciona en ambos sentidos:
- El registro de la transferencia almacena el
midazTransactionId, así que Consultar Transferencia devuelve el detalle bancario completo de cualquier asiento del ledger. - La transacción de Midaz almacena el
transferIden sus metadatos, así que puedes listar transacciones de Midaz filtrando pormetadata.transferIdpara encontrar el asiento de una transferencia.
transferId, transferType e initiationId son reservadas — los valores del plugin siempre prevalecen.
Relaciones entre entidades
El modelo de dominio de TED sigue estas relaciones:- Cada
Transferpertenece a una única organización y puede tener múltiples registros deTransferStatusHistory. - Las transferencias TED OUT pueden originarse desde una
PaymentInitiationen el flujo de transferencia de dos pasos. - Cada
JDIncomingMessagepuede crear como máximo unTransferde tipoTED_IN.

