O boleto bancário é um dos meios de pagamento mais tradicionais e seguros do mercado brasileiro. Mas, por trás daquela sequência longa de números na linha digitável, existe uma arquitetura lógica e matemática complexa definida pela FEBRABAN (Federação Brasileira de Bancos).
Neste artigo, vamos dissecar o funcionamento da linha digitável e do código de barras de boletos, aprender a calcular a data de vencimento e o valor programaticamente e implementar rotinas de validação completas.
1. A Diferença entre Linha Digitável e Código de Barras
Embora representem o mesmo boleto, eles possuem estruturas diferentes:
- Código de Barras (44 dígitos): É a representação binária direta lida pelos scanners. Possui formato corrido.
- Linha Digitável (47 ou 48 dígitos): Criada para digitação manual quando a leitura óptica não funciona. Possui blocos divididos por pontos e inclui dígitos verificadores em cada bloco para evitar erros de digitação.
2. Anatomia do Boleto Comercial (47 dígitos)
Um boleto bancário tradicional de cobrança possui a seguinte divisão na linha digitável:
AAABC.CCDDX DDDDD.DDDDDY EEEEE.EEEEEZ K UUUUVVVVVVVVVV
- AAA (Banco Emissor): Os 3 primeiros dígitos indicam o código de compensação do banco (ex: 001 Banco do Brasil, 341 Itaú).
- B (Moeda): Indica a moeda do boleto (geralmente 9 para o Real).
- X, Y, Z (DVs dos Blocos): Dígitos verificadores para validação matemática de cada bloco usando o cálculo do Módulo 10.
- K (Dígito Verificador Geral): Localizado na 33ª posição da linha digitável. Valida toda a estrutura do código de barras de 44 dígitos usando o Módulo 11.
- UUUU (Fator de Vencimento): 4 dígitos que indicam quantos dias se passaram desde a data base FEBRABAN (07/10/1997).
- VVVVVVVVVV (Valor): Os últimos 10 dígitos indicam o valor do boleto com centavos (ex:
0000015000representa R$ 150,00).
3. Calculando o Vencimento e o Estouro do Fator
O fator de vencimento é uma contagem de dias iniciada em 07/10/1997. No entanto, o fator possui limite de 4 dígitos (máximo 9999). Em 22 de Fevereiro de 2025, a contagem atingiu o fator 9999 e estourou. Seguindo a regra oficial da FEBRABAN, o fator reiniciou em 1000 a partir de 23 de Fevereiro de 2025.
Para ler o vencimento de boletos em 2026 e anos seguintes, a sua rotina deve ajustar essa contagem de ciclos somando 9000 dias caso o fator resultante calcule uma data anterior ao estouro. Veja isso implementado no snippet de código a seguir.
4. Implementação Prática em JavaScript
Abaixo está um snippet completo de código em JavaScript para decodificar dados de um boleto de cobrança:
function decodificarBoletoComercial(linha) {
const cleaned = linha.replace(/\D/g, "");
if (cleaned.length !== 47) return null;
// Extrai o código do banco emissor
const banco = cleaned.substring(0, 3);
// Calcula a data de vencimento
const fator = parseInt(cleaned.substring(33, 37));
let vencimento = "Sem vencimento";
if (fator >= 1000) {
const dataBase = new Date(1997, 9, 7); // 07/10/1997
let dataVenc = new Date(dataBase.getTime() + fator * 24 * 60 * 60 * 1000);
// Ajuste de ciclo FEBRABAN pós-2025
const corteEstouro = new Date(2025, 1, 22);
if (dataVenc < corteEstouro) {
dataVenc = new Date(dataVenc.getTime() + 9000 * 24 * 60 * 60 * 1000);
}
vencimento = dataVenc.toLocaleDateString("pt-BR");
}
// Calcula o valor
const valorCentavos = parseInt(cleaned.substring(37, 47));
const valor = valorCentavos / 100;
return { banco, vencimento, valor };
}
5. Boletos de Concessionárias e Tributos (48 dígitos)
Os boletos de concessionárias (água, luz, telefone) e tributos (IPTU, IPVA, taxas de órgãos municipais/estaduais) seguem uma regra diferente. Eles começam com o dígito 8 e possuem 48 dígitos organizados em 4 blocos de 12. A validação de cada bloco pode ser feita por Módulo 10 ou Módulo 11 dependendo do terceiro dígito do código do boleto.
Erros Comuns na Validação de Boletos
- Não sanitizar strings: Pontos, hífens e espaços são incluídos apenas para legibilidade humana. Certifique-se de removê-los com regex (ex:
replace(/\D/g, "")) antes de processar o cálculo. - Ignorar o estouro do fator de vencimento: Rotinas antigas de e-commerce e ERP que não ajustam a regra de estouro de 2025 calcularão vencimentos errados em 2026. Mantenha seu backend atualizado.
- Confundir Módulo 10 e Módulo 11: Lembre-se que cada bloco da linha comercial usa Módulo 10, mas o DV Geral do código de barras de 44 dígitos usa Módulo 11.
🛠️ Experimente na prática
Use nossas ferramentas online gratuitas — sem cadastro, direto no navegador.
