Package com métodos úteis para a validação de todos os tipos de boleto

1. Recursos

  • x Validar boleto
  • x Identificar banco emissor do boleto
  • x Código de barras para linha digitável
  • x Linha digitável para código de barras
  • x Identificar tipo de boleto
  • x Identificar tipo de código
  • x Identificar valor do boleto
  • x Identificar data de vencimento
  • x Cálculo digito verificador módulo 10
  • x Cálculo digito verificador módulo 11

2. Métodos

Métodos Definição
TipoCodigo identificarTipoCodigo(String codigo) Verifica a numeração e retorna o tipo do código inserido. TipoCodigo.codigoDeBarra, TipoCodigo.linhaDigitavel ou TipoCodigo.invalido. Requer numeração completa (com ou sem formatação).
TipoBoleto? identificarTipoBoleto(String codigo) Verifica a numeração e retorna o tipo do boleto inserido. Se boleto bancário, convênio ou arrecadação. Requer numeração completa (com ou sem formatação).
DateTime identificarData({required String codigo, required TipoCodigo tipoCodigo} Verifica a numeração, o tipo de código inserido e o tipo de boleto e retorna a data de vencimento. Requer numeração completa (com ou sem formatação) e tipo de código que está sendo inserido (TipoCodigo.codigoDeBarra ou TipoCodigo.linhaDigitavel).
double identificarValor(String codigo) Verifica a numeração, o tipo de código inserido e o tipo de boleto e retorna o valor do título. Requer numeração completa (com ou sem formatação).
String codBarrasParaLinhaDigitavel({required String barcode, bool formatada = false}) Transforma a numeração no formato de código de barras em linha digitável. Requer numeração completa (com ou sem formatação) e valor true ou false que representam a forma em que o código convertido será exibido. Com (true) ou sem (false) formatação.
String linhaDigitavelParaCodBarras(String codigo) Transforma a numeração no formato linha digitável em código de barras. Requer numeração completa (com ou sem formatação).
String calculaDVCodBarras({required String codigo,required int posicaoCodigo, required int mod}) Verifica a numeração do código de barras, extrai o DV (dígito verificador) presente na posição indicada, realiza o cálculo do dígito utilizando o módulo indicado e retorna o dígito verificador. Serve para validar o código de barras. Requer numeração completa (com ou sem formatação), caracteres numéricos que representam a posição do dígito verificador no código de barras e caracteres numéricos que representam o módulo a ser usado (valores aceitos: 10 ou 11).
bool validarCodigoComDV({required String codigo, required TipoCodigo tipoCodigo}) Calcula o dígito verificador de toda a numeração do código de barras. Retorno true para numeração válida e false para inválida.
String calculaMod10(String numero) Realiza o cálculo Módulo 10 do número inserido.
String calculaMod11(String numero) Realiza o cálculo Módulo 11 do número inserido.
BoletoValidado validarBoleto(String codigo, {bool formatada = false}) Verifica a numeração e utiliza várias das funções acima para retornar um BoletoValidado contendo informações sobre a numeração inserida: Tipo de código inserido, Tipo de boleto inserido, Código de barras, Linha digitável, Vencimento e Valor.
BancoEmissor identificarBancoEmissor(String codigo) Verifica a numeração dos três primeiros digitos e retorna o BancoEmissor com número, nome do banco, ISPB, PDF com lista atualizada diariamente pelo Banco Central.

3. Regras de numeração dos boletos


4.1 BOLETO COBRANÇA

IMPORTANTE: As posições aqui mencionadas partem do número 0 e não do 1, a fim de facilitar o entendimento lógico


4.1.1 TIPO: CÓDIGO DE BARRAS (44 POSIÇÕES NUMÉRICAS)

EXEMPLO: 11123444455555555556666666666666666666666666

Bloco Posições Definição
1 0 a 2 Código do Banco na Câmara de Compensação
2 3 a 3 Código da Moeda = 9 (Real)
3 4 a 4 Digito Verificador (DV) do código de Barras
4 5 a 8 Fator de Vencimento
5 9 a 18 Valor com 2 casas de centavos
6 19 a 43 Campo Livre (De uso da instituição bancária)

4.1.2 TIPO: LINHA DIGITÁVEL (47 POSIÇÕES NUMÉRICAS)

EXEMPLO: AAABC.CCCCX DDDDD.DDDDDY EEEEE.EEEEEZ K UUUUVVVVVVVVVV

EXEMPLO: 11123444455555555556666666666666666666666666

Campo Posições linha dig Definição
A 0 a 2 (0 a 2 do cód. barras) Código do Banco na Câmara de compensação
B 3 a 3 (3 a 3 do cód. barras) Código da moeda
C 4 a 8 (19 a 23 do cód. barras) Campo Livre
X 9 a 9 Dígito verificador do Bloco 1 (Módulo 10)
D 10 a 19 (24 a 33 do cód. barras) Campo Livre
Y 20 a 20 Dígito verificador do Bloco 2 (Módulo 10)
E 21 a 30 (24 a 43 do cód. barras) Campo Livre
Z 31 a 31 Dígito verificador do Bloco 3 (Módulo 10)
K 32 a 32 (4 a 4 do cód. barras) Dígito verificador do código de barras
U 33 a 36 (5 a 8 do cód. barras) Fator de Vencimento
V 37 a 43 (9 a 18 do cód. barras) Valor

4.2 CONTA CONVÊNIO / ARRECADAÇÃO

4.2.1 TIPO: CÓDIGO DE BARRAS (44 POSIÇÕES NUMÉRICAS)


EXEMPLO: 12345555555555566667777777777777777777777777

Bloco Posições Definição
1 0 a 0 "8" Identificação da Arrecadação/convênio
2 1 a 1 Identificação do segmento
3 2 a 2 Identificação do valor real ou referência
4 3 a 3 Dígito verificador geral (módulo 10 ou 11)
5 4 a 14 Valor efetivo ou valor referência
6 15 a 18 Identificação da empresa/órgão
6 19 a 43 CCampo livre de utilização da empresa/órgão

4.2.2 TIPO: LINHA DIGITÁVEL (48 POSIÇÕES NUMÉRICAS)


EXEMPLO: ABCDEEEEEEE-W EEEEFFFFGGG-X GGGGGGGGGGG-Y GGGGGGGGGGG-Z

Campo Posições Definição
A 0 a 0 "8" Identificação da Arrecadação/convênio
B 1 a 1 Identificação do segmento
C 2 a 2 Identificação do valor real ou referência
D 3 a 3 Dígito verificador geral (módulo 10 ou 11)
E 1 A 14 Valor efetivo ou valor referência
W 11 a 11 Dígito verificador do Bloco 1
F 15 a 18 Identificação da empresa/órgão
G 19 a 43 Campo livre de utilização da empresa/órgão
X 23 a 23 Dígito verificador do Bloco 2
Y 35 a 35 Dígito verificador do Bloco 3
Z 47 a 47 Dígito verificador do Bloco 4

Libraries

boleto_utils