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).
Un Pix a la cuenta del propio pagador se rechaza cuando lo procesas, con PIX-0460 (422). El destino es la cuenta del propio pagador cuando el documento del titular, la agencia y el número de cuenta coinciden. El plugin no crea el cashout y no llama a Midaz.
Modelo de procesamiento
Una transferencia intra-PSP se liquida en una sola transacción de Midaz. El plugin verifica primero al receptor. Una transacción de Midaz debita entonces al pagador y acredita al receptor y a las cuentas de tarifa. La transacción no tiene tramo
@external. El plugin liquida la transferencia dentro de la llamada de procesamiento y no espera webhooks de BTG.
Si el receptor es denegado, el plugin no debita nada. El cashout pasa a PROCESSING y luego a REJECTED.
Flujo
El cashout responde con
PROCESSING, igual que un cashout externo que espera a BTG. El plugin entrega el estado final (COMPLETED o REJECTED) mediante un webhook saliente.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 de destino coinciden.
- Verifica primero al pagador original. Si ese lado es denegado, el plugin no debita nada, y la devolución pasa a
PROCESSINGy luego aREJECTED. En caso contrario, una transacción de Midaz mueve la devolución del solicitante al pagador original. LlevaintraPsp: trueen sus metadatos. - El plugin informa la devolución a TRCK002 con una
returnIdentification. - El plugin envía un webhook
REFUND/CASHOUTpara el solicitante de la devolución y un webhookREFUND/CASHINpara el remitente original.
Operaciones intra-PSP atascadas
BTG nunca retiene un cashout ni una devolución intra-PSP, así que el desbloqueo los liquida solo en Midaz. El desbloqueo lee la transacción de la operación en Midaz:
- Si Midaz tiene la transacción, el desbloqueo registra ambos lados y completa la operación.
- Si Midaz muestra que la transacción fue revertida, el desbloqueo mueve la operación a
FAILED. - Si Midaz no tiene transacción, el desbloqueo responde
422PIX-0470. Una transacción ausente no prueba que el débito nunca entró. Para una operación parada enCREATED, abre una solicitud de soporte con Lerian e indica el id de la transferencia o de la devolución. - Un cashout o una devolución cuyo receptor o pagador fue denegado no tiene transacción en Midaz: el desbloqueo lo mueve a
REJECTED.
CREATED se acepta 65 minutos después de su creación, y uno en PENDING 65 minutos después de su último cambio. Una devolución se acepta 65 minutos después de su último cambio, mientras no es final. Consulta Operaciones de devolución.
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

