Skip to main content
El Plugin Pix Indirecto (BTG) procesa los reembolsos Pix (devoluções) a través del endpoint Reembolsar una transferencia Pix recibida. Dos capacidades extienden ese flujo para escenarios de MED y fraude:
  • 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


Un Pix recibido puede dividirse internamente entre varias cuentas. Por ejemplo, el monto principal va a la cuenta del cliente y una tarifa va a una cuenta de tarifas. Un reembolso posterior por MED o fraude puede entonces debitar parte del monto de cada cuenta. El flujo estándar de reembolso debita una sola cuenta. Para dividir el débito, envía un array opcional operations en el cuerpo de la solicitud. El array 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 cada accountAlias por su amount en 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 coinciden con el reembolso estándar. Solo cambia la composición del débito interno en Midaz.

Ejemplo — Cappta


El plugin dividió un cash-in de R50.000,00:R 50.000,00: R 49.000,00 a la cuenta del cliente y R1.000,00aunacuentadetarifas.Trasunfraude,elreembolsodebeserdeR 1.000,00 a una cuenta de tarifas. Tras un fraude, el reembolso debe ser de R 1.000,82. Solo quedan R0,82enlacuentadelcliente.ElarrayoperationsdebitaR 0,82 en la cuenta del cliente. El array `operations` debita R 0,82 de la cuenta del cliente y R1.000,00delacuentadetarifas.BTGrecibeunuˊnicoreembolsodeR 1.000,00 de la cuenta de tarifas. BTG recibe un único reembolso de R 1.000,82 sin consolidación manual del libro mayor.

Desbloqueo de operaciones atascadas


Una llamada de reversión a BTG puede expirar antes de que BTG la confirme. El reembolso o la transferencia queda entonces atascado en PROCESSING, y Midaz todavía retiene los fondos. Dos endpoints vuelven a consultar a BTG y llevan la operación a su estado terminal. Ambos requieren el encabezado X-Account-Id.

Cómo funciona el desbloqueo


El plugin vuelve a consultar el estado de la reversión o la transferencia en BTG y:
  • Si BTG reporta CONFIRMED o ERROR → 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.
Una protección de consistencia aborta la operación si el entity, el returnIdentification o el originalEndToEndId de BTG difieren del registro local. Esto evita la liquidación contra la transacción equivocada.
La respuesta incluye el 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 opcional allowNotFoundUnblock en el cuerpo de la solicitud.
allowNotFoundUnblock tiene por defecto false. Un cuerpo vacío o ausente, o false, preserva el comportamiento estricto. Un 404 de BTG devuelve entonces un error y nunca revierte la retención. Opta por activarlo solo cuando hayas confirmado que la operación debe liberarse.
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 resuelve el estado consultando a BTG. No aplica a las transferencias intra-PSP (internas), que no tienen transacción de BTG. Consulta Transferencias intra-PSP.

Próximos pasos