- Devoluciones parciales distribuidas: retorna una devolución desde varias cuentas internas en una sola operación
- Desbloqueo: recupera una devolución o transferencia atascada en
PROCESSING
Devoluciones parciales distribuidas
Un Pix recibido puede dividirse internamente entre varias cuentas. Por ejemplo, el monto principal va a la cuenta del cliente y una comisión va a una cuenta de comisiones. Una devolución posterior por MED o por fraude puede entonces debitar parte del monto de cada cuenta. El flujo de devolución estándar debita una cuenta. Para dividir el débito, envía un array
operations opcional en el cuerpo de la solicitud. El array operations es la única señal. No hay un endpoint, una variable de entorno ni un feature flag nuevos.
Solicitud
- Sin
operations→ se ejecuta sin cambios el flujo actual de una sola cuenta. - Con
operations→ el plugin debita cadaaccountAliaspor suamounten Midaz, y BTG recibe un único pacs.004 por el valor total de la devolución.
Reglas de validación
El endpoint, el flujo de BTG (pacs.004 con el valor total), la idempotencia y la autenticación coinciden con los de la devolución estándar. Solo cambia la composición del débito interno en Midaz.
Ejemplo: Cappta
El plugin dividió un cash-in de R 49,000.00 a la cuenta del cliente y R 1,000.82. Solo quedan R 0.82 de la cuenta del cliente y R 1,000.82 sin consolidación manual en el ledger.
Desbloquear operaciones atascadas
Una llamada de reversión a BTG puede agotar el timeout antes de que BTG la confirme. La devolución o la transferencia queda entonces atascada en
PROCESSING, y Midaz sigue reteniendo los fondos. Dos endpoints vuelven a consultar a BTG y llevan la operación a su estado terminal.
Ambos requieren el header
X-Account-Id.
Cómo funciona el desbloqueo
El plugin vuelve a consultar el estado de la reversión o de la transferencia en BTG y:
- Si BTG informa
CONFIRMEDoERROR→ despacha la liquidación correspondiente y lleva la operación a su estado terminal. - Si BTG sigue informando
INITIATED/PROCESSING→ devuelve HTTP 200 sin acción. Reintenta más tarde.
entity, el returnIdentification o el originalEndToEndId de BTG difieren del registro local. Esto evita liquidar contra la transacción equivocada.
refund actualizado, un message y el btgStatus.
Manejo de un 404 de BTG
BTG puede devolver
404 cuando ya no tiene la reversión o la transferencia. El resultado depende entonces del tipo de operación y del flag de activación explícita allowNotFoundUnblock en el cuerpo de la solicitud.
La recuperación de 404 por activación explícita aplica solo a operaciones
CASHOUT en PENDING/PROCESSING con un endToEndId no vacío. Los cash-ins y los estados terminales nunca entran en esta rama.Limitación intra-PSP
El flujo de desbloqueo de transferencias resuelve el estado consultando a BTG. No aplica a las transferencias intra-PSP (internas), que no tienen transacción en BTG. Consulta Transferencias intra-PSP.
Próximos pasos
- Transferencias intra-PSP: Transferencias y devoluciones P2P internas
- MED 2.0 — Recuperación de fondos: Recuperación de fraude entre cuentas
- Webhooks: Manejo de eventos de devolución y de transferencia
- Referencia de API: Documentación completa de la API

