El plugin admite transferencias y devoluciones intra-PSP. Las liquida internamente e informa cada una a BACEN mediante TRCK002.
Detección
El plugin marca una transferencia como intra-PSP cuando el ISPB de destino coincide con el ISPB del pagador, el
bankingDetails.bankId de la cuenta alias del pagador en el CRM:
La detección es interna. La respuesta de iniciación y el estado del cashout coinciden con los de una transferencia externa. El plugin enruta una transferencia intra-PSP por la ruta de liquidación interna en lugar de BTG. Un cobro de Pix Saque o Pix Troco no puede liquidarse internamente: el plugin lo rechaza con
PIX-0497 (422).
Modelo de procesamiento
Una transferencia intra-PSP usa el mismo enrutamiento en Midaz que una transferencia externa, a través de la cuenta de tránsito
@external. El comportamiento del ledger es idéntico. El plugin liquida la transferencia de forma síncrona y no espera webhooks de BTG.
El plugin crea dos transacciones de Midaz por transferencia:
- Cashout:
source → @external(pending: false) - Cashin:
@external → destination(pending: false)
Flujo
El cashout responde con
PROCESSING, igual que un cashout externo que espera a BTG. El plugin entrega el estado final (COMPLETED o REJECTED) de forma asíncrona mediante un webhook saliente. El endpoint intra-PSP es idempotente, por lo que los reintentos del worker nunca duplican transacciones.Informes regulatorios TRCK002
El plugin informa cada transacción intra-PSP exitosa a BACEN mediante el endpoint TRCK002 de BTG.
- El envío de informes TRCK002 es no bloqueante. Una falla del informe nunca revierte la transacción de Midaz ni la finalización de la transferencia. El plugin reintenta un informe fallido.
- El plugin crea un informe de transacción por cada transacción. Después de que BTG acepta el envío, el estado del informe pasa a
PROCESSINGy lleva unpactualId. - BTG envía actualizaciones del estado del informe mediante un webhook CAMT025, con el tipo
PIX_INTERNAL_TRANSACTIONS_REPORT. El webhook lleva el informe aCONFIRMED(terminal) oERROR(recuperable). - También puedes consultar un informe por ID end-to-end o por identificación de devolución cuando un webhook no llega.
Devoluciones intra-PSP
El plugin también procesa una devolución internamente cuando el cash-in original fue intra-PSP:
- El plugin detecta intra-PSP a partir de la transferencia original, cuando su ISPB de origen y el de destino coinciden.
- Debita al solicitante de la devolución (
requester → @external). Luego entrega el cash-in de la devolución al remitente original mediante el mismo patrón de cola y endpoint. - El plugin informa la devolución a TRCK002 con un
returnIdentification. - El plugin envía un webhook
REFUND/CASHOUTpara el solicitante de la devolución y un webhookREFUND/CASHINpara el remitente original.
Próximos pasos
- Webhooks: Envelope del evento, reintentos y enrutamiento
- Operaciones de devolución: Devoluciones distribuidas y desbloqueo
- Configurar la integración: Configuración del ISPB y del worker
- Referencia de API: Documentación completa de la API

