搜索插件、代码仓与 APP 分类

GitHub 代码仓Philippenau-Dev/boleto_utils

boleto_utils

Philippenau-Dev/boleto_utils open-source repository details.

boleto_utils 项目封面
星标
9
复刻
6
最近推送(UTC)
2026年8月25日
项目状态
未归档

原始 README

以下为英文项目原文快照,最新内容请访问 GitHub。

📘 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 (cobrança ou arrecadação com valor efetivo).
double identificarValorCodBarrasArrecadacao(...) Retorna o valor de boletos de arrecadação/convênio (água, luz, gás, IPTU, taxas).
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.

Philippe Nau GitHub avatar
GitHub 作者

Philippe Nau ↗

Flutter Developer

Blumenau/SC - Brasil
语言DartC++CMakeRubyHTMLCSwiftKotlinObjective-C

此仓库发布的插件

使用的依赖

依赖清单 3 项

  • flutter{"sdk":"flutter"}
  • flutter_test开发依赖{"sdk":"flutter"}
  • flutter_lints开发依赖^5.0.0

如何选择适合项目的代码仓?

先按使用场景筛选,再比较项目活跃情况,最后到原始仓库核对使用要求。

  1. 通过仓库名、作者或描述搜索,再按技术分类缩小范围。
  2. 结合星标、复刻与最近推送比较项目;星标反映社区关注,不代表质量保证。
  3. 使用前在 GitHub 核对 README、许可证与 Issues。

来源与维护

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗