boleto_utils 1.1.1 copy "boleto_utils: ^1.1.1" to clipboard
boleto_utils: ^1.1.1 copied to clipboard

Package com métodos para a validação de todos os tipos de boleto do Brasil definidos pela FEBRABAN

📘 Sobre o pacote #

boleto_utils é um pacote Dart que fornece utilitários para validação, leitura e interpretação de boletos bancários e de arrecadação. Ele facilita a manipulação de códigos de barras e linhas digitáveis, extraindo informações como banco emissor, valor, vencimento e estrutura interna. Ideal para aplicações financeiras, ERPs, gateways de pagamento ou sistemas de automação que precisem interpretar boletos de forma precisa e eficiente.


✅ Recursos #

  • Validar boleto
  • Identificar banco emissor
  • Converter código de barras ⇄ linha digitável
  • Identificar tipo de boleto e tipo de código
  • Obter valor e vencimento (quando aplicável)
  • Cálculo dos dígitos verificadores (Mod10 e Mod11)
  • Compatível com fator de vencimento 2025+

🚀 Métodos disponíveis #

Método Descrição
TipoCodigo identificarTipoCodigo(String codigo) Retorna TipoCodigo.codigoDeBarra, TipoCodigo.linhaDigitavel ou TipoCodigo.invalido.
TipoBoleto? identificarTipoBoleto(String codigo) Retorna se o boleto é bancário, convênio ou arrecadação.
DateTime identificarData(...) Retorna a data de vencimento do boleto (exceto arrecadação).
DateTime identificarDataComNovoFator2025(...) Mesmo que o anterior, com base na nova referência de fator (22/02/2025).
double identificarValor(String codigo) Retorna o valor do boleto (com casas decimais corretas).
String codBarrasParaLinhaDigitavel(...) Converte código de barras para linha digitável.
String linhaDigitavelParaCodBarras(String codigo) Converte linha digitável para código de barras.
String calculaDVCodBarras(...) Calcula dígito verificador do código de barras usando módulo 10 ou 11.
bool validarCodigoComDV(...) Retorna se o código informado é válido com base no DV.
String calculaMod10(String numero) Cálculo manual de módulo 10.
String calculaMod11(String numero) Cálculo manual de módulo 11.
BoletoValidado validarBoleto(...) Retorna objeto com todos os dados analisados do boleto.
BancoEmissor identificarBancoEmissor(String codigo) Retorna nome, número e ISPB do banco emissor.

🧠 Estrutura dos Boletos #

🏦 Boleto Bancário #

Código de Barras (44 dígitos)

Bloco Posições Definição
1 0 a 2 Código do Banco
2 3 a 3 Código da Moeda
3 4 a 4 Dígito verificador geral
4 5 a 8 Fator de vencimento
5 9 a 18 Valor (com 2 casas decimais)
6 19 a 43 Campo livre

Linha Digitável (47 dígitos)

Campo Posições Descrição
A 0 a 2 Código do banco
B 3 a 3 Moeda
C 4 a 8 Campo livre
X 9 a 9 DV bloco 1
D 10 a 19 Campo livre
Y 20 a 20 DV bloco 2
E 21 a 30 Campo livre
Z 31 a 31 DV bloco 3
K 32 a 32 DV geral (mesmo do código de barras)
U 33 a 36 Fator de vencimento
V 37 a 43 Valor

🧾 Boleto de Arrecadação / Convênio #

Boletos iniciados com 8 (ex: conta de luz, telecom, água...)

Código de Barras (44 dígitos)

Bloco Posições Definição
1 0 a 0 "8" - Identificador de arrecadação
2 1 a 1 Segmento (veja abaixo)
3 2 a 2 Valor real ou referência
4 3 a 3 Dígito verificador geral
5 4 a 14 Valor (centavos)
6 15 a 43 Campo livre (instituição ou convênio)

Linha Digitável (48 dígitos)

Campo Posições Descrição
A 0 a 0 "8" Identificação
B 1 a 1 Segmento
C 2 a 2 Tipo de valor
D 3 a 3 DV geral
E 4 a 14 Valor (centavos)
F 15 a 18 Identificação do órgão
G 19 a 43 Campo livre
DV1 11 a 11 DV bloco 1
DV2 23 a 23 DV bloco 2
DV3 35 a 35 DV bloco 3
DV4 47 a 47 DV bloco 4

📚 Segmentos de arrecadação #

Dígito Segmento
1 Arrecadação municipal
2 Saneamento
3 Energia elétrica e gás
4 Telecomunicações
5 Órgãos governamentais
6 / 9 Outros
7 Multas de trânsito

💡 Observações importantes #

  • A data de vencimento só pode ser lida em boletos bancários (com fator de vencimento).
  • Boletos de arrecadação não contêm vencimento codificado — deve ser extraído manualmente ou de fontes externas.
  • O valor em boletos de arrecadação está sempre nas posições 5 a 15 do código de barras e representa centavos.
Exemplo:
Código de barras: 84660000001993000481000112208428092308214933
Valor extraído:   00000119300 → R$ 119,30

📦 Instalação #

dependencies:
  boleto_utils:

▶️ Exemplo rápido #

import 'package:boleto_utils/boleto_utils.dart';

void main() {
  final codigo = '34191790010104351004791020150008291070000005000';

  final boleto = BoletoUtils();
  final tipo = boleto.identificarTipoBoleto(codigo);
  final valor = boleto.identificarValor(codigo);
  final vencimento = boleto.identificarData(
    codigo: codigo,
    tipoCodigo: TipoCodigo.codigoDeBarras,
  );

  print('Tipo: $tipo');
  print('Valor: R\$ ${valor.toStringAsFixed(2)}');
  print('Vencimento: $vencimento');
}

👨‍💻 Contribuições #

Contribuições são bem-vindas! Relate issues ou envie PRs com melhorias e testes.


🤝 Contribuindo #

Este projeto é open source. Sinta-se à vontade para:

  • Reportar bugs
  • Sugerir funcionalidades
  • Enviar pull requests com correções ou melhorias
  • Criar issues com dúvidas ou ideias

📄 Licença #

Distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais informações.

28
likes
160
points
7.05k
downloads

Publisher

unverified uploader

Weekly Downloads

Package com métodos para a validação de todos os tipos de boleto do Brasil definidos pela FEBRABAN

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on boleto_utils