- Devoluções parciais distribuídas: devolva um valor a partir de várias contas internas em uma única operação
- Desbloqueio: recupere uma devolução ou transferência travada em
PROCESSING
Devoluções parciais distribuídas
Um Pix recebido pode ser dividido internamente entre várias contas. Por exemplo, o valor principal vai para a conta do cliente e uma tarifa vai para uma conta de tarifas. Uma devolução posterior de MED ou de fraude pode então debitar parte do valor de cada conta. O fluxo padrão de devolução debita uma conta. Para dividir o débito, envie um array
operations opcional no corpo da requisição. O array operations é o único sinal. Não há novo endpoint, variável de ambiente nem feature flag.
Requisição
- Sem
operations→ o fluxo atual de conta única roda sem mudança. - Com
operations→ o plugin debita cadaaccountAliaspelo seuamountno Midaz, e o BTG recebe um único pacs.004 com o valor total da devolução.
Regras de validação
O endpoint, o fluxo no BTG (pacs.004 com o valor total), a idempotência e a autenticação são iguais aos da devolução padrão. Apenas a composição do débito interno no Midaz muda.
Exemplo: Cappta
O plugin dividiu um cash-in de R 49.000,00 para a conta do cliente e R 1.000,82. Restam apenas R 0,82 da conta do cliente e R 1.000,82, sem consolidação manual no ledger.
Desbloqueio de operações travadas
Uma chamada de estorno ao BTG pode dar timeout antes de o BTG confirmá-la. A devolução ou a transferência fica então travada em
PROCESSING, e o Midaz continua retendo os fundos. Dois endpoints reconsultam o BTG e levam a operação ao seu estado terminal.
Os dois exigem o header
X-Account-Id.
Como o desbloqueio funciona
O plugin reconsulta o status do estorno ou da transferência no BTG e:
- Se o BTG informar
CONFIRMEDouERROR→ dispara a liquidação correspondente e move a operação para o estado terminal. - Se o BTG ainda informar
INITIATED/PROCESSING→ retorna HTTP 200 sem ação. Tente de novo mais tarde.
entity, returnIdentification ou originalEndToEndId do BTG divergirem do registro local. Isso evita a liquidação contra a transação errada.
refund atualizado, uma message e o btgStatus.
Como tratar um 404 do BTG
O BTG pode retornar
404 quando não tem mais o estorno ou a transferência. O resultado depende então do tipo da operação e da flag de adesão explícita allowNotFoundUnblock no corpo da requisição.
A recuperação de 404 por adesão explícita se aplica apenas a operações
CASHOUT em PENDING/PROCESSING com um endToEndId não vazio. Cash-ins e status terminais nunca entram nesse ramo.Limitação intra-PSP
O fluxo de desbloqueio de transferência resolve o estado consultando o BTG. Ele não se aplica a transferências intra-PSP (internas), que não têm transação no BTG. Veja Transferências intra-PSP.
Próximos passos
- Transferências intra-PSP: Transferências e devoluções P2P internas
- MED 2.0 — Recuperação de Fundos: Recuperação de fraude entre contas
- Webhooks: Tratamento de eventos de devolução e transferência
- Referência da API: Documentação completa da API

