패키지, 저장소 및 앱 카테고리 검색

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 ↗