- Reembolsos parciales distribuidos — devuelve un reembolso desde múltiples cuentas internas en una sola operación
- Desbloqueo — recupera un reembolso o una transferencia que está atascado en
PROCESSING
Reembolsos parciales distribuidos
Cuando un Pix recibido se distribuye internamente entre varias cuentas — por ejemplo, el monto principal a la cuenta del cliente y una tarifa a una cuenta de tarifas — un reembolso posterior por MED/fraude puede necesitar debitarse parcialmente de cada una de esas cuentas. El flujo estándar de reembolso debita desde una sola cuenta. Para dividir el débito, envía un array opcional
operations en el cuerpo de la solicitud. La presencia de operations es la única señal — no hay un nuevo endpoint, variable de entorno ni feature flag.
Solicitud
- Sin
operations→ el flujo actual de cuenta única se ejecuta sin cambios. - Con
operations→ el plugin debita cadaaccountAliaspor suamounten Midaz, y BTG recibe un único pacs.004 por el valor total del reembolso.
Reglas de validación
El endpoint, el flujo de BTG (pacs.004 con el valor total), la idempotencia y la autenticación son idénticos al reembolso estándar. Solo cambia la composición del débito interno en Midaz.
Ejemplo — Cappta
Un cash-in de R 49.000,00 a la cuenta del cliente y R 1.000,82, pero solo quedan R 0,82 de la cuenta del cliente y R 1.000,82 — sin necesidad de consolidación manual del libro mayor.
Desbloqueo de operaciones atascadas
Un reembolso o una transferencia cuya llamada de reversión a BTG expira antes de la confirmación puede quedar atascado en
PROCESSING, con la retención todavía aplicada en Midaz. Dos endpoints dedicados vuelven a consultar a BTG y llevan la operación a su estado terminal correcto.
Ambos requieren el encabezado
X-Account-Id.
Cómo funciona el desbloqueo
El plugin vuelve a consultar el estado de la reversión/transferencia en BTG y:
- Si BTG reporta
CONFIRMEDoERROR→ despacha la liquidación correspondiente y lleva la operación a su estado terminal. - Si BTG todavía reporta
INITIATED/PROCESSING→ devuelve HTTP 200 sin acción; reintenta más tarde.
entity, el returnIdentification o el originalEndToEndId de BTG difieren del registro local, evitando la liquidación contra la transacción equivocada.
refund actualizado, un message y el btgStatus.
Manejo de un 404 de BTG
Cuando BTG ya no tiene la reversión/transferencia (devuelve
404), el comportamiento depende del tipo de operación y del flag opcional allowNotFoundUnblock en el cuerpo de la solicitud:
La recuperación opcional ante un 404 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 consulta a BTG por el estado, lo cual no aplica a las transferencias intra-PSP (internas) — no hay transacción de BTG. Llamar al desbloqueo sobre una transferencia intra-PSP devuelve un error síncrono (
PIX-0418). La lógica adecuada de desbloqueo intra-PSP es una mejora futura. Consulta Transferencias intra-PSP.
Próximos pasos
- Transferencias intra-PSP — Transferencias y reembolsos P2P internos
- MED 2.0 — Recuperación de fondos — Recuperación de fraude entre cuentas
- Webhooks — Manejo de eventos de reembolso y transferencia
- Referencia de API — Documentación completa de la API

