Como funciona
- Um cliente de outro banco começa uma transferência TED para uma das contas da sua instituição
- Quando o polling do TED IN está ligado (
JD_POLLING_ENABLED), o plugin consulta a rede do JD SPB em busca de novas transferências de entrada a cada 60 segundos (padrãoJD_POLL_INTERVAL_SECONDS) - O plugin procura a conta do destinatário no seu CRM pelo número do documento que vem na mensagem da transferência
- O plugin credita a conta do destinatário, menos a tarifa de cashin, se você configurou uma. O plugin lança o crédito no ledger do destinatário no Midaz, conforme o roteamento do ledger daquela organização, daquele ledger e do tipo de transferência
Créditos ao cliente
O plugin também credita o destinatário em sete créditos ao cliente que o banco pagador envia como outras mensagens STR. Cada um tem o próprio tipo de transferência:
Cada um desses tipos precisa do próprio vínculo no roteamento do ledger. O plugin nunca os lança no vínculo de
TED_IN. Um STR0041R2 cuja tarifa bancária não é zero não é creditado: o plugin o retém com o motivo CLASSIFICATION_FAILED.
No modo de tarifa legacy, o plugin-fees calcula a tarifa de cada tipo pelo pacote de tarifas do próprio tipo, nunca pelo de TED_IN. Sem pacote para o tipo, o plugin credita o valor inteiro.
Linha do tempo de detecção e processamento
As etapas abaixo mostram o que acontece depois que o banco de origem envia a transferência:
Tempo típico: o crédito é concluído dentro de um ciclo de polling. Com o intervalo padrão de 60 segundos, os fundos chegam em cerca de um minuto.
Estados da transferência
Tarifa de recebimento (cashin)
A sua organização pode cobrar uma tarifa nas transferências de entrada. No modo de tarifa
legacy, o plugin desconta a tarifa do valor antes de creditar o destinatário, e o destinatário recebe o valor líquido. No modo de tarifa native, ele desconta apenas uma tarifa que o pacote de tarifas tira do valor. Você define o valor e a configuração da tarifa por organização pelo Fees Engine.
Fórmula, para uma tarifa descontada: credited amount = transfer amount − fee
Exemplo: uma transferência de R 2,50 credita R$ 997,50 na conta do destinatário. É o oposto do TED OUT, onde o plugin soma a tarifa por cima e o remetente paga mais.
O que acontece quando o destinatário não é encontrado
Se o plugin não consegue casar o número do documento da transferência recebida com uma conta no seu CRM, a política de tenant
jd_polling.auto_return_authorized decide o que acontece. Nos dois casos, o plugin não credita nada e não cria nenhum registro de transferência.
false(padrão): o plugin não devolve nada. Ele retém a mensagem com o motivoRECIPIENT_NOT_FOUND_RETURN_UNAUTHORIZED. Um operador liquida os fundos fora do plugin e depois registra o resultado com Fechar o crédito não liquidado do TED IN. O fechamento não move dinheiro.true: o plugin devolve a transferência ao banco de origem (devolução STR0010), e o cliente que enviou recebe o dinheiro de volta.
- A conta do destinatário não existe no ledger ou corresponde a mais de uma conta no seu CRM.
- O ledger recusa o crédito.
- A tarifa não pode ser resolvida e
fees.fail_closed_defaultétrue.
Consultar as transferências recebidas
Use o endpoint List Transfers para recuperar todas as transferências de entrada. Filtre por
type=TED_IN para ver os TEDs recebidos, por um tipo TED_IN_STR para ver um tipo de crédito ao cliente, e por ledgerId para ver as transferências de um ledger.
Endpoint: GET /v1/transfers
Resposta (campos principais):
Endpoints operacionais
Estes endpoints de operador controlam o laço de polling do TED IN. Eles servem a scripts e runbooks, não ao tráfego de usuário final.
Para o corpo da requisição, a resposta, os códigos de status e os códigos de erro, veja a especificação OpenAPI do TED.
Devolver uma transferência recebida
Você pode devolver um TED IN concluído ao banco pagador com Return a Transfer. A requisição precisa da permissão
transfers:return.
- O plugin coloca uma retenção do valor creditado na conta do destinatário.
- O plugin envia um STR0010 voluntário (código de motivo de devolução
70), que devolve o valor bruto do TED IN ao banco pagador. - Quando o STR liquida o STR0010, o plugin estorna o crédito original no ledger. A devolução passa a
COMPLETED.
REJECTED.
A devolução é uma nova transferência TED_OUT sem tarifa, e o originalTransferId dela nomeia o TED IN. Observe estas regras:
- Apenas um TED recebido como STR0008R2 pode ser devolvido. Um crédito ao cliente não pode, e um crédito entre cores também não (
422 BTF-0118). - Um TED IN tem no máximo uma devolução ativa.
- A devolução roda apenas dentro da janela de funcionamento. Em 24 de dezembro e no último dia útil do ano, a janela das devoluções fecha no máximo às 13:00.
- A devolução é lançada no vínculo de
TED_OUTdo ledger do TED IN. - Você não pode cancelar uma devolução.
Mensagens que aguardam um operador
Monitore cada uma destas filas separadamente. Elas não são intercambiáveis:
A DLQ de webhooks é um caminho diferente: ela guarda as entregas de webhook de saída que falharam, não as transferências de entrada. Veja Webhooks.
Webhooks
Configure um webhook para receber notificações em tempo real quando as transferências chegam. O evento
transfer_incoming.completed dispara assim que o plugin credita uma transferência. Veja Webhooks para a configuração e os detalhes do payload de cada evento.
Conciliação
Para a conciliação contábil e financeira, cada registro de transferência traz estes campos:
O plugin persiste os registros de transferência para conciliação e auditoria.
Garantias de processamento
- Sem créditos duplicados: o plugin guarda cada mensagem da JD uma vez, pelo número de sequência dela (
NumCabSeq). Ele também deduplica os créditos por número de controle, ISPB do remetente e valor. - Mensagem primeiro: o plugin guarda cada mensagem antes de processá-la. Uma mensagem que ele não consegue terminar continua não processada, e o próximo ciclo de polling a processa de novo.
- Filas de operador: uma mensagem que o plugin não consegue creditar nem devolver aguarda nas filas acima.

