Cuándo usar P2P
P2P es el tipo de transferencia correcto cuando tanto el remitente como el destinatario tienen cuentas en tu institución. Los escenarios comunes incluyen:
- Mover dinero entre las cuentas de un mismo cliente: un cliente que transfiere de su cuenta corriente a su cuenta de ahorro, o entre dos cuentas que administra.
- Pagar a otro cliente de la misma institución: un cliente que envía dinero a un amigo, un familiar o un negocio que también opera contigo.
- Movimientos internos de tesorería: repartir saldos entre cuentas corporativas de la misma organización.
- División de pagos: distribuir montos entre varias cuentas para nómina, gastos compartidos o cashback.
Ventajas principales
Cómo funciona
P2P reusa la misma API que TED OUT, así tu integración se mantiene consistente entre los tipos de transferencia. El proceso tiene dos pasos desde la perspectiva del cliente:
- Iniciar: el cliente envía los datos de la transferencia. El plugin valida al destinatario y calcula la comisión. El cliente ve el resumen de la transferencia antes de comprometerse.
- Confirmar: el cliente confirma. El plugin crea un débito + crédito atómico en Midaz. La transferencia se completa de inmediato.
Estados de la transferencia
El estado
PENDING no aplica a las transferencias P2P. TED OUT usa PENDING mientras el plugin prepara el mensaje para JD. La retención ya existe desde CREATED. P2P liquida por completo dentro de Midaz, así que la transferencia pasa de CREATED por PROCESSING a COMPLETED. Una transferencia P2P no se puede cancelar.Configuración de comisiones
El modo de comisión,
MIDAZ_FEE_MODE, decide quién cobra la comisión de una transferencia P2P. Consulta Configuración de TED.Validación del destinatario
El destinatario debe tener una cuenta en la misma institución. Cuando envías una transferencia, el plugin busca al destinatario en el CRM. Coteja los datos bancarios que entregas: ISPB, sucursal, cuenta y documento del titular. Si el plugin no encuentra al destinatario, rechaza la transferencia y no mueve fondos. El cliente debe revisar los datos de la cuenta e intentar de nuevo. Si las dos cuentas están en organizaciones de Midaz distintas, el plugin rechaza la transferencia con
422 BTF-0004. Rechaza dos ledgers distintos de la misma forma, a menos que el tenant permita transferencias entre ledgers.
Transferencias entre ledgers
Un P2P puede mover fondos entre dos ledgers de la misma organización de Midaz. Esto viene desactivado por defecto. Para activarlo para un tenant, define la política de tenant
p2p.cross_ledger_enabled en true a través de la Admin API. El plugin lee este ajuste solo cuando inicias una transferencia.
Una transferencia entre dos ledgers necesita todos estos elementos:
El plugin registra la transferencia como un solo grupo de ledgers de Midaz: ambos ledgers se mueven, o ninguno se mueve. La transferencia guarda el ledger del pagador en
ledgerId, el ledger del destinatario en recipientLedgerId y el grupo en ledgerGroupId.
Devolver una transferencia P2P
Puedes revertir una transferencia P2P completada con Return a Transfer. La solicitud necesita el permiso
transfers:return.
El ledger revierte la transacción original en la misma solicitud. La devolución es una nueva transferencia P2P que debita la cuenta que recibió la original y acredita la cuenta que la pagó. Su originalTransferId nombra la original, que sigue en COMPLETED. La respuesta es COMPLETED.
- Una devolución necesita Midaz 4.1.3 o posterior, o 4.2.0 o posterior entre dos ledgers.
- La cuenta que recibió la original debe tener el saldo para devolver.
- Un P2P tiene como máximo una devolución activa, y una devolución no puede devolverse.
- Si el resultado en el ledger es desconocido, la respuesta es
503 BTF-2000, y la devolución sigue enCREATED. Envía la misma solicitud de nuevo con una nueva claveX-Idempotency. Retoma esa devolución y nunca crea una segunda.
Integración técnica
P2P usa los mismos endpoints que TED OUT. No necesitas trabajo de integración extra más allá del flujo de transferencia saliente que ya construiste.
- Initiate Transfer: POST /v1/transfers/initiate
- Process Transfer: POST /v1/transfers/process
- Get Transfer: GET /v1/transfers/
El campo
type en la respuesta de la transferencia es P2P. Las transferencias P2P no tienen controlNumber, porque no pasan por JD SPB.Manejo de errores
Las transferencias P2P son atómicas. Si alguna parte falla, Midaz no aplica ninguna de las dos patas. Ningún estado intermedio mueve fondos de forma parcial ni deja una cuenta con saldo insuficiente. Si una transferencia falla, el cliente mantiene el mismo saldo y puede reintentar. Si
/process responde 500 BTF-9014, el dinero se movió, pero el plugin no registró la transferencia como completada. Lee la transferencia y envía de nuevo la misma solicitud /process con una nueva clave X-Idempotency. No inicies una nueva transferencia. Consulta la lista completa de errores para los códigos de error y la guía de recuperación.
