O plugin aceita transferências e devoluções intra-PSP. Ele as liquida internamente e reporta cada uma ao BACEN pelo TRCK002.
Detecção
O plugin marca uma transferência como intra-PSP quando o ISPB de destino corresponde ao
PIX_ISPB que você configurou:
A detecção é interna. A resposta da iniciação e o status do cash-out são iguais aos de uma transferência externa. O plugin roteia uma transferência intra-PSP pelo caminho de liquidação interno em vez do BTG.
Modelo de processamento
Uma transferência intra-PSP usa o mesmo roteamento no Midaz que uma transferência externa, pela conta de trânsito
@external. O comportamento no ledger é idêntico. O plugin liquida a transferência de forma síncrona e não espera pelos webhooks do BTG.
O plugin cria duas transações no Midaz por transferência:
- Cashout:
source → @external(pending: false) - Cashin:
@external → destination(pending: false)
CashinApprovalCommand e CashinSettlementCommand de um cash-in externo. Esses pipelines fazem a validação de alias no CRM, checagens de saldo, posse da chave Pix, conclusão da cobrança e cálculo de tarifas.
Fluxo
O cash-out responde com
PROCESSING, como um cash-out externo que espera pelo BTG. O plugin entrega o status final (COMPLETED ou FAILED) de forma assíncrona por um webhook de saída. O endpoint intra-PSP é idempotente, então novas tentativas do worker nunca duplicam transações.Reporte regulatório TRCK002
O plugin reporta ao BACEN cada transação intra-PSP bem-sucedida pelo endpoint TRCK002 do BTG.
- O reporte TRCK002 é não bloqueante. Uma falha no reporte nunca reverte a transação no Midaz nem a conclusão da transferência. O plugin faz nova tentativa de um reporte que falhou.
- O plugin cria um
TransactionReportpara cada transação. Depois que o BTG aceita o envio, o status do relatório passa paraPROCESSINGe carrega umpactualId. - O BTG envia atualizações de status do relatório por um webhook CAMT025, do tipo
PIX_INTERNAL_TRANSACTIONS_REPORT. O webhook move o relatório paraCONFIRMED(terminal) ouERROR(recuperável). - Você também pode consultar um relatório pelo ID end-to-end ou pela identificação de devolução quando um webhook não chega.
Devoluções intra-PSP
O plugin também processa uma devolução internamente quando o cash-in original foi intra-PSP:
- O plugin detecta intra-PSP a partir da transferência original, quando o ISPB de origem e o de destino coincidem.
- Ele debita o solicitante da devolução (
requester → @external). Depois entrega o cash-in da devolução ao remetente original pelo mesmo padrão de fila e endpoint. - O plugin reporta a devolução ao TRCK002 com uma
returnIdentification. - O plugin persiste um webhook de saída
REFUND(fluxo DICT) para avisar o solicitante, e a liquidação do cash-in intra-PSP enfileiracashin.completedpara o remetente original.
Motivos de falha
O plugin entrega uma falha de validação de cash-in de forma assíncrona pelo webhook
cashout.failed. Em uma falha intra-PSP, o webhook carrega o motivo INTRA_PSP_REJECTED e uma mensagem sanitizada. Mensagens comuns:
Próximos passos
- Webhooks: Envelope de evento, novas tentativas e roteamento
- Operações de devolução: Devoluções distribuídas e desbloqueio
- Configurar a integração: Configuração de ISPB e do worker
- Referência da API: Documentação completa da API

