O que o plugin resolve para você
- Envia TEDs de saída para qualquer banco brasileiro (TED OUT)
- Recebe e credita os TEDs de entrada (TED IN)
- Processa transferências internas instantâneas entre contas (P2P)
- Envia TEDs para o outro core da sua instituição, e recebe os TEDs dele, pelo JD Courier (TED entre cores)
- Detecta e bloqueia transferências duplicadas dentro de uma janela configurável
- Valida os dias úteis do BACEN contra o próprio calendário de feriados embutido, de 2026 a 2028
- Assina as mensagens com o certificado digital da sua instituição, como o BACEN exige
- Concilia com a JD as transferências cujo resultado é desconhecido
- Avisa o seu sistema por webhooks quando uma transferência muda de status
Como funciona o TED OUT
O TED OUT é um fluxo de confirmação prévia. O cliente revisa a tarifa antes de o plugin enviar a transferência.
Etapa 1: Iniciar
1
O seu sistema chama o plugin com os dados da transferência: valor, destinatário e conta do remetente.
2
O plugin valida a conta do remetente, verifica o horário de funcionamento e roda a detecção de duplicidade.
3
O plugin calcula a tarifa e retorna um
initiationId com os valores calculados.4
O seu sistema mostra a tarifa ao cliente para confirmação.
Etapa 2: Preparar a assinatura (opcional)
Use esta etapa apenas quando o seu tenant assina fora do plugin (modo de assinatura externa). O plugin congela o payload canônico do STR0008 e retorna os bytes exatos e o hash a assinar. O seu sistema assina o payload e passa a assinatura para a etapa de processamento. Quando o plugin assina com a sua chave local (o padrão), pule esta etapa.Etapa 3: Processar
1
O seu sistema chama o plugin com o
initiationId para confirmar.2
O plugin verifica os limites diário e mensal e o saldo disponível.
3
O plugin reserva os fundos no Midaz (uma retenção) e envia a mensagem assinada para a JD Consultores.
4
A JD roteia a transferência até o banco de destino pela rede do SPB.
5
O plugin recebe a confirmação de liquidação da JD e finaliza os registros.
6
O seu sistema lê o status final com Get Transfer. Veja Webhooks para os eventos do TED OUT.
Como funciona o TED IN
- Um banco externo envia um TED para a sua instituição pela JD Consultores.
- O plugin consulta a JD a cada 60 segundos (padrão) para detectar novas transferências de entrada.
- O plugin valida o destinatário no CRM para achar a conta correta.
- O plugin credita a conta no Midaz e cria um registro de transferência concluída.
- O seu sistema recebe um webhook que confirma o crédito.
O polling do TED IN vem desligado por padrão. Para ligá-lo, defina
JD_POLLING_ENABLED depois de configurar as credenciais da JD e o worker de polling.Como funciona o P2P
As transferências P2P movem fundos entre duas contas da mesma organização e do mesmo ledger do Midaz. Elas não usam a rede do SPB, e a liquidação é instantânea. O P2P entre dois ledgers vem desligado por padrão.
- O seu sistema chama o plugin com a conta do remetente, a conta do destinatário e o valor.
- O plugin calcula a tarifa, se houver configuração, e a mostra para confirmação.
- Depois da confirmação, o plugin roda a transferência no Midaz.
- As duas contas são atualizadas na hora, e o seu sistema recebe um webhook.
Modelos de deploy
O plugin TED roda em dois modelos de deploy. A variável de ambiente
DEPLOYMENT_MODE (byoc por padrão, ou saas) indica o modelo. No modo saas, o plugin se recusa a iniciar a menos que PostgreSQL, Redis, MongoDB, RabbitMQ e o broker de streaming usem TLS.
SaaS (gerenciado pela Lerian)
Em deploys SaaS, a Lerian gerencia a integração com a JD Consultores, incluindo a manutenção de credenciais e certificados. O seu time configura apenas as definições de negócio pela Admin API, como limites de transação, tarifas e webhooks. Você não gerencia infraestrutura nem conexões.BYOC (traga sua própria nuvem)
Em deploys BYOC, o plugin roda na sua própria infraestrutura. A sua instituição fornece as credenciais da JD Consultores e a chave privada RSA que assina as mensagens, e o seu time de DevOps as define por variáveis de ambiente. Você mantém o controle total da conexão com a JD.Resolução da organização
O plugin identifica a organização no Midaz pelo header obrigatórioX-Organization-Id nas rotas de API com escopo de organização.
Alguns processos em segundo plano não recebem headers de requisição, como o poller do TED IN e os workers de conciliação. Esses processos usam a variável de ambiente ORGANIZATION_ID.
Veja Configuração do TED para a lista completa de variáveis de ambiente aceitas.
Integração com o Midaz
Todas as movimentações financeiras passam pelo ledger do Midaz. O plugin cria uma transação no Midaz para cada transferência:
- TED OUT: o plugin retém os fundos na etapa de processamento (por
pending: true) e depois os debita quando a JD confirma a liquidação. - TED IN: o plugin credita os fundos quando o TED de entrada chega da JD.
- P2P: o plugin debita o remetente e credita o destinatário de forma atômica no Midaz.
midazTransactionId. Um chargeback de TED IN adiciona uma transação compensatória que carrega o mesmo ID de transferência. Veja Dados e relatórios do TED para os campos disponíveis para conciliação.
Para desenvolvedores
Arquitetura
O plugin usa uma arquitetura Hexagonal (Ports and Adapters) com CQRS. Esse desenho mantém a lógica de negócio separada da infraestrutura. Você pode adicionar um novo adaptador, como um provedor de SPB diferente, sem mudar o comportamento central.Detecção de duplicidade
O plugin monta um fingerprint de detecção de duplicidade para cada transferência. O fingerprint cobresenderAccountId, os dados do destinatário (ISPB, agência, conta, documento do titular), o valor e a finalidade. O plugin guarda o fingerprint no Redis por 300 segundos por padrão (chave do systemplane idempotency.duplicate_guard_ttl_seconds).
A organização não faz parte do fingerprint. O isolamento entre tenants vem do prefixo da chave no Redis. O plugin rejeita uma requisição duplicada dentro da janela com 409 Conflict e o código de erro BTF-0012.
Isolamento de dados por tenant
A Lerian isola os dados de cada tenant. O plugin lê otenantId da claim do JWT ou do contexto autenticado, nunca do X-Organization-Id. O cache do Redis usa prefixos de chave por tenant. As tabelas de negócio usam os campos de organização do Midaz apenas para autorização de escopo de negócio dentro do tenant.

