O que o plugin gerencia para você
- Envia TEDs de saída para qualquer banco brasileiro (TED OUT)
- Recebe e credita TEDs recebidos (TED IN)
- Processa transferências internas instantâneas entre contas (P2P)
- Calcula e aplica tarifas antes de o cliente confirmar
- Detecta e bloqueia transferências duplicadas dentro de uma janela configurável
- Valida dias úteis do BACEN contra o calendário
bacen_holidays(seed estática para 2026–2028, refresher em tempo real da ANBIMA pendente) - Assina mensagens com o certificado digital da sua instituição, conforme o BACEN exige
- Refaz operações com falha automaticamente
- Notifica seu sistema via webhooks quando uma transferência muda de status
Como o TED OUT funciona
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
Seu sistema chama o plugin com os detalhes da transferência: valor, destinatário e conta do remetente.
2
O plugin valida a conta do remetente, verifica os horários de funcionamento e executa a detecção de duplicatas.
3
O plugin calcula a tarifa e retorna um
initiationId com os valores calculados.4
Seu sistema exibe a tarifa ao cliente para confirmação.
Etapa 2 — Preparar assinatura (opcional)
Use esta etapa apenas quando seu tenant assina fora do plugin (modo de assinatura externa). O plugin congela o payload canônico STR0008 e retorna os bytes exatos e o hash a assinar. Seu sistema assina o payload e passa a assinatura para a etapa de processo. Quando o plugin assina com a sua chave local (o padrão), pule esta etapa.Etapa 3 — Processar
1
Seu sistema chama o plugin com o
initiationId para confirmar.2
O plugin verifica os limites diários e mensais e o saldo disponível.
3
O plugin reserva fundos no Midaz (um hold) e envia a mensagem assinada para a JD Consultores.
4
A JD encaminha a transferência para o banco de destino pela rede SPB.
5
O plugin recebe a confirmação de liquidação da JD e finaliza os registros.
6
Seu sistema recebe um webhook com o status final.
Como o TED IN funciona
- Um banco externo envia um TED para sua instituição por meio da JD Consultores.
- O plugin consulta a JD a cada 60 segundos (padrão) para detectar novas transferências recebidas.
- O plugin valida o destinatário no CRM para encontrar a conta correta.
- O plugin credita a conta no Midaz e cria um registro de transferência concluída.
- Seu sistema recebe um webhook que confirma o crédito.
O polling de TED IN está desativado por padrão. Para ativá-lo, defina
JD_POLLING_ENABLED depois de configurar as credenciais JD e o worker de polling.Como o P2P funciona
Transferências P2P movem fundos entre duas contas da mesma organização. Elas não usam a rede SPB, e a liquidação é instantânea.
- Seu sistema chama o plugin com a conta do remetente, a conta do destinatário e o valor.
- O plugin calcula a tarifa, se configurada, e a apresenta para confirmação.
- Após a confirmação, o plugin executa a transferência no Midaz.
- Ambas as contas são atualizadas imediatamente, e seu sistema recebe um webhook.
Modelos de deployment
O plugin TED suporta dois modelos de deployment. A variável de ambiente
DEPLOYMENT_MODE seleciona o modelo.
SaaS (gerenciado pela Lerian)
Nos deployments SaaS, a Lerian gerencia a integração com a JD Consultores, incluindo a manutenção de credenciais e certificados. Sua equipe configura apenas as definições em nível de negócio via Admin API, como limites de transação, tarifas e webhooks. Você não gerencia infraestrutura ou conexões. No modosaas, o plugin funciona como um serviço multi-tenant. O serviço da plataforma de multi-tenancy resolve a identidade do tenant, as credenciais JD, os segredos de webhook e determinadas definições em tempo de execução. Esse modo exige as variáveis MULTI_TENANT_* e AWS_REGION, e o plugin as usa ativamente.
BYOC (traga suas próprias credenciais)
Nos deployments BYOC, sua instituição fornece as credenciais da JD Consultores e a chave privada RSA que assina as mensagens. Sua equipe de DevOps define esses valores por meio de variáveis de ambiente. Você mantém controle total da conexão com a JD, e o plugin funciona inteiramente dentro da sua própria infraestrutura. BYOC é o modo de deployment padrão (byoc). O plugin carrega toda a configuração de variáveis de ambiente no boot, incluindo credenciais JD, segredos de webhook e definições de tarifas.
Resolução de organização
O plugin identifica a organização Midaz a partir do 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 de TED IN e os workers de reconciliação. Para esses, o plugin recorre à variável de ambiente ORGANIZATION_ID.
No modo
byoc, o plugin ignora as variáveis de multi-tenancy (MULTI_TENANT_*) e AWS_REGION.Integração com o Midaz
Todas as movimentações financeiras passam pelo ledger do Midaz. O plugin cria uma transação Midaz para cada transferência:
- TED OUT — o plugin retém os fundos na etapa de processo (via
pending: true), depois os debita quando a JD confirma a liquidação. - TED IN — o plugin credita os fundos depois que a JD valida e confirma a transferência.
- P2P — uma única transação Midaz debita o remetente e credita o destinatário atomicamente.
Para desenvolvedores
Arquitetura
O plugin usa uma arquitetura Hexagonal (Portas e Adaptadores) com CQRS. Esse design mantém a lógica de negócio separada da infraestrutura. Você pode adicionar um novo adaptador, como um provedor SPB diferente, sem uma mudança no comportamento central.Detecção de duplicatas
O plugin constrói um fingerprint de detecção de duplicatas 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 armazena o fingerprint no Redis com um TTL configurável (padrão 300 segundos, definido por DUPLICATE_GUARD_TTL_SEC).
A organização não faz parte do fingerprint. O isolamento de tenant vem do prefixo da chave 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 multi-tenant
O isolamento de tenant vem da resolução de banco de dados por tenant na plataforma de multi-tenancy. O plugin lê otenantId do claim JWT ou do contexto autenticado, nunca de X-Organization-Id. O cache Redis usa prefixos de chave por tenant (tenant:{tenantId}:{key}). As tabelas de negócio usam os campos de organização do Midaz apenas para a autorização de escopo de negócio dentro do tenant resolvido.

