Fluxo de duas etapas
O fluxo de duas etapas (
initiate → process) oferece vantagens importantes:
Exiba a tarifa antes da confirmação
Permitir que o usuário revise a tarifa antes de confirmar evita surpresas e reduz reclamações.Exemplo de confirmação
Use a expiração a seu favor
A iniciação expira em 24 horas. Isso permite:- Salvar a intenção do usuário sem comprometer fundos
- Retomar o fluxo se o usuário abandonar a tela
- Validar dados sem impacto no saldo
Tratamento de horário
Valide o horário no cliente
Antes de chamar a API, verifique se está dentro do horário de funcionamento:Comunique claramente ao usuário
Se estiver fora do horário, informe quando a transferência poderá ser realizada:Considere feriados
O plugin não valida feriados bancários, por isso, mantenha um calendário atualizado:Idempotência
Use chaves de idempotência
Para operações de escrita, sempre envie o headerX-Idempotency-Key:
- Duplo clique do usuário
- Retry automático em caso de timeout
- Falhas de rede que mascaram respostas de sucesso
Gere chaves no cliente
Gere a chave de idempotência antes de fazer a requisição e armazene-a até confirmar o resultado:Tratamento de erros
Mapeie erros para mensagens amigáveis
Diferencie erros recuperáveis
| Código | Recuperável | Ação |
|---|---|---|
BTF-0001 | Não | Corrija os dados e reenvie |
BTF-0010 | Sim | Aguarde o horário de funcionamento |
BTF-0011 | Sim | Aguarde reset do limite (meia-noite) |
BTF-0012 | Não | Aguarde ou use outra combinação |
BTF-2001 | Sim | Deposite fundos e tente novamente |
BTF-1000 | Sim | Retry com backoff exponencial |
Implemente retry inteligente
Segurança
Criptografia em trânsito
Todas as comunicações utilizam TLS 1.3 ou superior:- JD Consultores SPB (SOAP sobre HTTPS)
- Midaz Ledger (gRPC com TLS)
- CRM e Plugin Fees (HTTPS)
- Webhooks (HTTPS obrigatório)
Criptografia em repouso
Dados sensíveis são criptografados com AES-256-GCM:- Credenciais da JD
- PII (nome, CPF/CNPJ, dados bancários)
- Segredos de webhook
Valide dados no servidor
Nunca confie apenas na validação do cliente:Proteja dados sensíveis
- Não logue CPF/CNPJ em texto claro
- Use hash (SHA-256) para identificação em logs
- Mascare dados na interface:
***.***.***-00
Valide webhooks
Sempre verifique a assinatura HMAC-SHA256 antes de processar:Prevenção de fraudes
Detecção de duplicados
O plugin implementa janela de deduplicação configurável (padrão: 60 segundos):- Chave:
SHA256(organizationId + senderAccountId + recipient + amount) - Armazenamento: Redis com TTL configurável
- Ação: Requisições duplicadas retornam
409 Conflict
Rate limiting
Proteção contra abuso por tenant:| Configuração | Valor padrão |
|---|---|
| Algoritmo | Token Bucket |
| Limite | 100 requisições/minuto por organização |
| Resposta | 429 Too Many Requests com header Retry-After |
Isolamento multi-tenant
Todas as consultas são filtradas pororganization_id, garantindo que um tenant nunca acesse dados de outro. O cache em Redis também utiliza prefixos por tenant.
Experiência do usuário
Mostre o progresso
Para TED OUT, mantenha o usuário informado:Use webhooks para atualização em tempo real
Configure webhooks e use WebSocket ou push notifications para atualizar a interface:Ofereça comprovante
Após a conclusão, permita download do comprovante com:- Data e hora da transferência
- Dados do remetente e destinatário
- Valor e tarifa
- Número de confirmação
- Código de controle (para TED)
Reconciliação
Use identificadores consistentes
| Campo | Uso |
|---|---|
transferId | Identificador interno (Lerian) |
confirmationNumber | Número legível para o usuário |
controlNumber | Rastreamento no SPB (JD) |
Mantenha histórico local
Sincronize periodicamente com a API para garantir consistência:Limites e quotas
Monitore o uso de limites
Consulte o uso atual antes de iniciar transferências:Comunique limites proativamente
Conformidade com BACEN
Horário de funcionamento
O sistema valida automaticamente o horário do BACEN para TED:- Dias úteis: Segunda a sexta-feira
- Horário: 06:30 às 17:00 (horário de Brasília, UTC-3)
- Feriados: Sistema consulta calendário de feriados nacionais
Transferências P2P não estão sujeitas a essa restrição e funcionam 24/7.
Limites de transferência
O plugin respeita os limites configurados por conta e por organização:- Limite por transação: Configurável por tenant (padrão: R$ 50.000)
- Limite diário: Soma de todas as transferências do dia
- Limite mensal: Controle de volume agregado
Auditoria e rastreabilidade
Toda mudança de estado é registrada na tabelaTransferStatusHistory:
- Status anterior e novo: Transição completa
- Timestamp: Data e hora exata da mudança
- Motivo: Razão da transição (especialmente para erros)
- Autor: Sistema, usuário ou administrador
Implemente audit trail
Registre todas as ações relacionadas a transferências:Conformidade com LGPD
Minimização de dados
Colete apenas dados estritamente necessários. CPF/CNPJ são criptografados e utilizados apenas para validação e conformidade.Direito ao esquecimento
Endpoint administrativo para anonimização de dados pessoais:Retenção limitada
| Tipo de dado | Período de retenção |
|---|---|
| Dados transacionais | 5 anos (requisito BACEN) |
| Logs de aplicação | 90 dias |
| Dados de auditoria | 5 anos (anonimizados após 2 anos) |
Certificações e padrões
O plugin foi desenvolvido seguindo as melhores práticas da indústria:
- OWASP Top 10: Mitigação de vulnerabilidades comuns
- CIS Benchmarks: Configuração segura de infraestrutura
- ISO 27001: Práticas de gestão de segurança da informação
- SOC 2 Type II: Controles de segurança, disponibilidade e confidencialidade
A Lerian mantém certificações SOC 2 Type II e ISO 27001, auditadas anualmente por terceiros independentes.

