Executando verificação de segurança...
6

Pitch: Resolvendo o "JSON sem Boleto": Como emitir e gerar boletos Itaú (mTLS) com TypeScript

Recentemente, precisei integrar a API de cash management (V2) do Itaú para emissão de boletos. Quem já passou por isso sabe que o processo é burocrático: exige autenticação via mTLS (certificados .crt e .key), gerenciamento rigoroso de tokens e, o principal "problema": a API do banco não gera o boleto visual (PDF/HTML). Ela retorna apenas a linha digitável e o código de barras, deixando o trabalho de renderização para o desenvolvedor.

Para resolver isso e facilitar a vida de quem usa Node.js/TypeScript, publiquei a biblioteca @willyantomaz/itau-payment-gateway.

O que esta biblioteca resolve?

  1. Abstração do mTLS: O HttpClient interno já lida com a leitura dos certificados e a comunicação segura com os endpoints de produção e sandbox.
  2. Gerenciamento de Token Automático: Você não precisa se preocupar em renovar o token; a lib verifica a expiração e solicita um novo antes da próxima chamada.
  3. Validação de Documentos: Possui utilitários robustos para validar CPF e CNPJ antes de enviar a requisição ao banco, evitando erros de API por dados mal formatados.
  4. Geração do Layout do Boleto: Diferente da API padrão, incluí um TemplateRenderer que utiliza um template HTML (baseado no padrão oficial do Itaú) para transformar os dados retornados em um boleto pronto para impressão ou envio ao cliente.

Exemplo Rápido


const credentials = {
  client_id: process.env.ITAU_CLIENT_ID,
  client_secret: process.env.ITAU_CLIENT_SECRET,
  cert_path: './certs/client.crt',
  key_path: './certs/client.key',
};

// 'false' para usar o ambiente de Sandbox (DEV)
const gateway = new gateway(credentials, false);

async function gerarCobranca() {
  try {
    const response = await gateway.createBillet(billetRequest);
    console.log('Boleto criado com sucesso!');
    console.log('Linha Digitável:', response.dados_individuais_boleto[0].numero_linha_digitavel);
  } catch (error) {
    console.error('Erro na emissão:', error.message);
  }
}

Por que usar?
Muitas empresas acabam usando intermediários e pagando taxas por boleto emitido apenas para não lidar com a complexidade da API direta do banco. Com essa lib, a ideia é dar autonomia para o desenvolvedor brasileiro integrar diretamente com o Itaú de forma gratuita e segura.

O projeto é open-source (MIT) e estou aberto a contribuições para adicionar suporte a Webhooks, cancelamento de boletos e PIX no futuro.

O que acham dessa abordagem de renderização no lado do cliente da lib? Alguma sugestão para melhorar a segurança no manejo dos certificados em produção?

Carregando publicação patrocinada...
1

Interessante. Eu nem sabia que o Itaú tinha API direta. Já fiz integração de boleto via arquivo CNAB pra vários bancos incluindo Itaú.
Pra ser sincero não olhei o projeto, mas nesse exemplo que vc postou me chamou a atenção a nomenclatura usada: billet.
Eu nunca tinha visto essa palavra e não achei nnenhuma definição que se encaixa como boleto (a mais próxima foi tradução de bilhete para o francês).
Eu acredito que a melhor tradução em inglês pra boleto seja bboleto mesmo já que esse é um conceito brasileiro, incomum em países anglófonos.
No mais parabéns por publicar como open source, esse tiponde integração gera muita dor de cabeça pra fazer do zero

1

muitas fintechs usam billet ou payment slip para o conceito de boleto

o termo billet pode ser considerado uma tradução forçada mas nao é incomum nesse área

1

Entendi.
É, eu já tinha procurado por traduções no passado e vi que não tinha nada que representa bem o conceito (payment slip até é uma boa, só é mais genérico).
Acho que esse billet é mais um dia termos que adotamos em inglês mas que não correspondem com o uso real por nativos.

Mas se já é comum no setor de fintechs, se torna uma boa opção pra usar na library mesmo

1