O bloqueto de cobrana (ou boleto bancrio, ou boleto de cobrana, ou
bloqueto bancrio) representa um ttulo de cobrana pagvel em qualquer agncia bancria do territrio nacional, auto-atendimento, homebanking, casas lotricas, supermercados conveniados, etc, durante o perodo no qual o ttulo de cobrana ainda n!o venceu, ou se"a, at a data de vencimento# $ps a data de vencimento, o bloqueto somente poder ser pago em agncia do %anco que o emitiu# $ cobrana atravs de boleto bancrio necessita de trs elementos& %anco, 'acado e (edente# Banco )nstitui!o *inanceira que, atravs de contrato prprio *irmado com o cedente, *ica responsvel pela cobrana# O %anco receber o pagamento do re*erido documento de cobrana pago pelo sacado, e creditar a import+ncia paga na conta corrente do cedente# Sacado ,uem e*etua o pagamento do bloqueto# Cedente ,uem emite a cobrana ou se"a, aquele que ir receber a quantia cobrada# Observao& -ara emitir cobrana atravs de bloquetos bancrios necessrio que o cedente possua conta corrente em alguma institui!o *inanceira e que tal conta se"a devidamente habilitada para cobrana atravs de bloqueto# Partes do Boleto .m conson+ncia com o manual da /.%0$%$1 - /edera!o %rasileira das $ssocia2es de %ancos - o bloqueto deve conter duas partes& 0ecibo do 'acado e /icha de (ompensa!o# Recibo do Sacado O 0ecibo do 'acado *ica em poder do sacado para que ele possa, sempre que necessrio, comprovar o pagamento do seu documento de cobrana# O la3out e os dados a serem apresentados neste recibo ser!o de*inidos pelo cedente, salvo quando o mesmo *or pr-estabelecido pelo %anco# $pesar de o cedente poder utili4ar o la3out que dese"ar, os seguintes campos s!o obrigatrios no 0ecibo do 'acado& 1ome do (edente5 $gncia6(digo do (edente5 7alor do 8tulo5 7encimento5 1osso 19mero5 1ome do 'acado# 8ais in*orma2es devem ser as mesmas constantes na *icha de compensa!o# Ficha de Compensao $ *icha de compensa!o aquela parte do bloqueto que *ica em poder do banco quando o bloqueto pago, para que se"a encaminhada para a compensa!o bancria# $ *icha de compensa!o deve conter as seguintes dimens2es& $ltura - mnima de :;mm e m<ima de =>?mm5 @argura - recomendada a largura mnima de A=>mm (papel tipo $B), disponibili4ando espao su*iciente para autentica!o# $ largura m<ima permitida de A=Cmm (papel carta)# $ *icha de compensa!o sempre padroni4ada e deve obedecer as regras de cada %anco, cu"as dimens2es s!o D D6BE a B A6?E, e<ibindo o cdigo de barras e a linha digitvel que in*ormam os dados para a identi*ica!o automtica da conta para crdito a ser utili4ada na compensa!o bancria# =#-arte 'uperior- da esquerda pra direita nome do banco, podendo conter seu logotipo5 n9mero-cdigo e dgito veri*icador (dv) de compensa!o do banco cedente, em negrito# $ impress!o deve ser com caracter de ;mm e traos6*ios de =,Amm5 representa!o numrica do conte9do do cdigo de barras, com dimens2es de D,;mm a Bmm, e traos ou *ios de >,Dmm, distribuda em ; (cinco) campos, separados por espao equivalente a um caracter# $ disposi!o das in*orma2es est em ordem di*erente em rela!o ao cdigo de barras e com *ormata!o prpria# A# ,uadro de )mpress!o - deve conter diversos campos, tendo como campos de preenchimento obrigatrio& @ocal de pagamento5 Fata de vencimento5 (edente (nome)5 $gncia6(digo do cedente5 Fata do processamento5 1osso n9mero5 7alor do documento5 'acado (nome e endereo completo)# D#(digo de barras e autentica!o mec+nica (parte in*erior G da esquerda para a direita) campo destinado ao cdigo de barras5 campo destinado H autentica!o mec+nica# Feve constar a e<press!o I$utentica!o Jec+nica6/icha de (ompensa!oK, com dimens!o m<ima de Amm e traos de >,Dmm# !escre"endo as partes do Boleto Banc#rio $ Banco do Brasil %%&'( %%&()*+,-.. -)/%%*0/+,-( (0/-.*/(-++- & )/%-%%%%&/%%%% - 8emos aqui o nome ou o logotipo do banco e o n9mero de identi*ica!o do banco na c+mera de compensa!o interbancria ( cada banco possui um n9mero que o identi*ica& %%&' Banco do Brasil +,& ' Banco Ita1 , )+0' Bradesco , etc###) - O n9mero que voc v do lado direito a linha di2it#"el 5 ela utili4ada para identi*icar o boleto e deve ser digitada quando o cdigo de barras n!o pode ser lido ou quando voc vai *a4er o pagamento do boleto na internet#$ @inha digitvel tem o seguinte la3out& BBB3C*CCCCd CCCCC*CCCCCd CCCCC*CCCCCd ! 44444444444444 onde& B - n9mero do banco 3 - Joeda (sempre : - real) 4 - valor C - campo livre - depende do banco ! - Figito veri*icador do cdigo de barras d - digito veri*icados da linha digitveis $ssim para o Banco do Brasil a composi!o da linha di2it#"el deve seguir o seguinte composi!o& Linha di2it#"el$ Composio dos campos$ a) PRI3EIRO CA3PO - composto pelo cdigo do %anco (posi2es = a D do cdigo de barras), cdigo da moeda (posi!o B do cdigo de barras), as cinco primeiras posi2es do campo livre (posi2es A> a AB do cdigo de barras) e dgito veri*icador deste campo5 Obs& editar com ponto, con*orme e<emplo - >>=:A#DB;CC b) SE56N!O CA3PO - composto pelas posi2es C (se<ta) H =; (dcima quinta) do campo livre (posi2es A; a DB do cdigo de barras) e dgito veri*icador deste campo5 Obs& editar com ponto, con*orme e<emplo - ;A?>>#L?DB;: c) TERCEIRO CA3PO - composto pelas posi2es =C (dcima se<ta) H A; (vigsima quinta) do campo livre (posi2es D; a BB do cdigo de barras) e dgito veri*icador deste campo5 Obs& editar com ponto, con*orme e<emplo - :L?;C#?:;DD; d) 76ARTO CA3PO - Fgito 7eri*icador geral do (digo de %arras (posi!o ; do cdigo de barras)5 e) 76INTO CA3PO - composto pelo *ator de vencimento (posi2es C a : do cdigo de barras) e pelo valor nominal do documento (posi2es => a =: do cdigo de barras), com a indica!o de 4eros entre eles at compor as =B posi2es do campo e sem edi!o (sem ponto ou vrgula)# ,uando se tratar de bloqueto sem discrimina!o de valor no cdigo de barras a representa!o deve ser com 4eros5 *) editar os trs primeiros campos com um ponto5 g) entre cada campo dever haver espao equivalente a >= caracter5 h) a disposi!o dos dados na linha digitvel n!o se apresenta na mesma ordem encontrada no cdigo de barras5 i) os dgitos veri*icadores re*erentes aos -0)J.)0O, '.MN1FO e 8.0(.)0O campo n!o s!o representados no cdigo de barras# @ocal de -agamento& Pa2#"el em 89al89er a2:ncia banc#ria at; o "encimento 7encimento )/<%-<)%%& (edente6'acador =C3SOFT CONS6LTORIA LT!A $gncia6(digo (edente %%%-0',<%&&)00.-') ' $ seguir temos o local de -agamento , geralmente at o vencimento, o boleto pode ser pago em qualquer banco# - 8emos tambm a data de vencimento (quando o boleto vence) , o nome do (edente ($ empresa para quem estamos pagando o boleto) o n9mero da $gncia %ancria (>>;L-B) e o cdigo atribudo ao (edente pelo banco# Fata do documento )/<%,<)%%& 1o# do documento %%%%%%+& .spcie doc# RC $ceite N Fata -rocessamento )/<%,<)%%& 1osso 19mero %%&%%%%+%+,-- Nso do %anco
(arteira &/ .spcie Joeda R> ,uantidade
(<) 7alor
(O) 7alor do Focumento &/%?%% - 8emos aqui a data do documento (data de gera!o) o n9mero do documento , a espcie de documento ( podemos ter& FJ-Fuplicata Jercantil F'-Fuplicata de 'ervios 0(-0ecibo 1--1ota -romissria , etc##) - O (ampo $ceite , indicando se o comprador PaceitouP o ttulo , o indicativo da carteira ( cada banco usa de modo di*erente este campo& 1o %% temos carteira ==-cobrana simples =L-cobrana direta com registro =?-cobrana sem registro ) a espcie da moeda ( geralmente 0Q ) a quantidade e o 7alor do documento# - O 1osso 19mero o n9mero que identi*ica o ttulo perante o banco , geralmente possui =L posi2es e composto pelo n9mero do convnio ( seis posi2es ) Instr9@es ATeBto de responsabilidade do cedenteC $ps vencimento , multa de =>R Jora dia 0Q >,BD -rotestar aps o ;o dia 9til aps o vencimento (-) Fescontos6$batimento (-) Outras Fedu2es (S) Jora6Julta (S) Outros $crscimos (O) 7alor (obrado - Fepois temos uma rea reservada para que o cedente coloque instru2es relativas ao boleto# Meralmente in*orma2es sobre multa , desconto , protesto , etc### - Os valores para Fescontos6$batimentos e Outras Fedu2es 5 Jora6Julta e Outros $crscimos e o *inalmente o 7alor a ser cobrado do sacado# 'acado&$rnaldo @iso 0ua dos $ndradas B>= '!o -aulo - '- Ficha de Compensao - $gora temos o endereo do sacado e a identi*ica!o da via , no caso , /icha de (ompensa!o# - -or 9ltimo temos o cdigo de barras e o espao reservado para autentica!o mec+nica# %+* CDdi2o de Barras a) o (digo de %arras utili4ado do tipo )-A; - (A de ;) intercalado5 b) (A de ;) intercalado signi*ica que ; (cinco) barras de*inem >= (um) caracter, sendo que duas delas s!o barras largas5 c) intercalado signi*ica que os espaos entre as barras tambm tm signi*icado, de maneira anloga Hs barras5 d) deve ser observada a dist+ncia de =A mm desde a margem in*erior da /icha de (ompensa!o at o centro do (digo de %arras5 e) comprimento total igual a =>D (cento e trs) mm e altura total igual a =D (tre4e) mm5 *) dei<ar espao livre (4ona de silncio) de ;mm entre a margem esquerda do papel at o incio do (digo de %arras5 g) o cdigo de barras composto por dois campos& campo obrigatrio e campo livre5 h) o conte9do do campo obrigatrio determinado pelo %anco (entral do %rasil e comum a todos os bancos5 i) o conte9do do ((ampo @ivre) espec*ico para o %anco do %rasil5 O LaEo9t do CDdi2o de Barras$ A partir de %&*%(*)%%%? o leia9te do cDdi2o de barras passa a ser$ 1# -O')TU.' -)(8N0. N'$M. (O18.VFO %& %%& a %%+ (<%%+< !isplaE %%& %) %%, a %%, (<%%&< !isplaE ( ARealC aC %+ %%- a %%- (<%%&< !isplaE !4 AFC bC %, %%. a %%( (<%%,< !isplaE Fator de 4encimento %- %&% a %&( (<%%/<"(( !isplaE 4alor %. %)% a %,, (<%)-< !isplaE CA3PO LI4RE Obs& a) o dgito veri*icador da ; a (quinta) posi!o calculado atravs de mdulo == espec*ico
b) o *ator de vencimento calculado atravs de metodologia descrita no manual C#lc9lo do Gator de "encimento$ 3etodolo2ia de c#lc9lo para o Gator de "encimento -odem ser adotadas duas *rmulas para o clculo& a) data base de >L#=>#=::L, calculando o n9mero de dias entre essa data e a do vencimento (data de vencimento menos data base igual a *ator)& 7.1()J.18O - >B->L-A>>> F$8$ %$'. - >L-=>-=::L /$8O0 F. 7.1()J.18O =>>= b) tabela de correla!o data W *ator, iniciando pelo *ator =>>>, que corresponde H data de vencimento >D#>L#A>>>, e assim sucessivamente& FATOR 4ENCI3ENTO &%%% %+<%0<)%%% &%%) %-<%0<)%%% &..0 %&<%-<)%%) ,0-/ &0<&%<)%&% (((( )&<%)<)%)- .<emplo& ((((0*00)&+ << +%-+%*&-%%/) << &/(0-*%%%%%+ << + << &%%&%%%%%+-%%% &o campo << )o campo << +o campo << d" << Fator "enc<"alor Obs& quando a primeira posi!o do campo 66valor66 (*ator de vencimento mais valor) *or 4ero, signi*icar que esse ttulo n!o conter o *ator de vencimento no cdigo de barras6linha digitvel, tratando-se portanto as =B (cator4e) posi2es como valor# Calc9lo do !H2ito 4eriGicador do CDdi2o de Barras A89inta posioC - -ega-se as BD posi2es (BB menos a quinta)# - Jultiplica-se cada posi!o, a partir da 9ltima para a primeira, por A,D,B,;,C,L,? e : sucessivamente# - 'oma-se os resultados# - Jultiplica-se por =># - Fivide-se por ==# 'e o resto *or => ou >, o digito =# 'e n!o, o resto o digito# OBS& os dgitos veri*icadores dos campos agncia, cdigo do cedente e nosso-n9mero, calculados com base no mdulo == , s!o impressos nos bloquetos e n!o devem estar representados no cdigo de barras e linha digitvel# 3ontando o cDdi2o de barras e a linha !i2it#"el 7amos agora mostrar como montar o cdigo de barras e a linha digitvel# -ara comear teremos que usar *un2es para calcular o digito veri*icador ( F7 ) da agncia , do cdigo do cedente , do nosso-n9mero e da linha digitvel# F9no para calc9lar o !4 da a2:ncia ? cDdi2o do cedente e do nosso' n1mero* 3I!6LO && PARA CLC6LO !E !J5ITO 4ERIFICA!OR !E A5KNCIA? CI!I5O !E CE!ENTE E NOSSO'NL3ERO a) O mdulo == utili4ado para montagem dos campos nosso n9mero, cdigo do cedente e pre*i<o da agncia, que ser!o impressos no *ichamento de cobrana5 b) (ada algarismo que comp2e o nosso n9mero multiplicado pelo respectivo multiplicador (peso)# Os multiplicadores (pesos) variam de : a A, da direita para a esquerda5 c) O primeiro dgito da direita para a esquerda dever ser multiplicado por :, o segundo por ? e assim sucessivamente5 d) Os resultados das multiplica2es s!o somados& >> S LA S D;#### S ? S > (igual) =L:# O total da soma divido por on4e, con*orme segue& =L:6== resto igual a D# - se o resto *or menor que => (de4) o F7 ser igual ao resto5 - se o resto *or igual a => (de4) o F7 ser igual a W5 - se o resto *or igual a > (4ero) o F7 ser igual a >5 - no e<emplo acima o dgito veri*icador ser igual a D# O cdigo 7isual %asic para a *un!o para calcular esses F7 - 3Dd9lo && - pode ser o seguinte& F9nction Calc9loM!4&&AstrN9mero As Strin2C As Strin2 Pdeclara as variveis Fim int(ontador $s )nteger Fim int1umero $s )nteger Fim int8otal1umero $s )nteger Fim intJultiplicador $s )nteger Fim int0esto $s )nteger P se nao *or um valor numerico sai da *un!o )* 1ot )s1umeric(str1umero) 8hen (alculoXF7== O EE .<it /unction .nd )* Pinicia o multiplicador intJultiplicador O : Ppega cada caracter do numero a partir da direita /or intcontador O @en(str1umero) 8o = 'tep -= Pe<trai o caracter e multiplica prlo multiplicador intnumero O 7al(Jid(str1umero, intcontador, =)) Y intJultiplicador Psoma o resultado para totali4a!o int8otal1umero O int8otal1umero S intnumero Pse o multiplicador *or maior que A decrementa-o caso contrario atribuir valor padrao original intJultiplicador O ))*(intJultiplicador Z A, intJultiplicador - =, :) 1e<t Pcalcula o resto da divisao do total por == int0esto O int8otal1umero Jod == Pveri*ica as e<ce2es ( > -Z F7O> => -Z F7OW (para o %%) e retorna o F7 'elect (ase int0esto (ase > (alculoXF7== O E>E (ase => (alculoXF7== O EWE (ase .lse (alculoXF7== O str(int0esto) .nd 'elect End F9nction F9no para c#lc9lo do dH2ito "eriGicador da linha di2it#"el* a) o mdulo => dever ser utili4ado para calcular o F7 dos >D (trs) primeiros campos da linha digitvel5 b) os multiplicadores comeam com o n9mero A (dois), sempre pela direita, alternando-se = e A5 c) multiplicar cada algarismo que comp2e o n9mero pelo seu respectivo peso (multiplicador)5 d) caso o resultado da multiplica!o se"a maior que : (nove) dever!o ser somados os algarismos do produto, at redu4i-lo a um 9nico algarismo5 e) *a4er o somatrio dos resultados obtidos& no e<emplo a soma igual a A;5 *) subtrair o total apurado no item anterior, da de4ena imediatamente superior ao total apurado& D> - A; igual a ;5 g) o resultado obtido ser o dgito veri*icador do n9mero# F7 igual a ;5 h) se o resultado da subtra!o *or igual a => (de4), o dgito veri*icador ser igual a > (4ero)# O cdigo 7isual %asic para a *un!o para calcular esses F7 - 3Dd9lo &% - pode ser o seguinte& /unction (alculoXF7=>(str1umero $s 'tring) $s 'tring Pdeclara $s variveis Fim int(ontador $s )nteger Fim int1umero $s )nteger Fim int8otal1umero $s )nteger Fim intJultiplicador $s )nteger Fim int0esto $s )nteger P se nao *or um valor numerico sai da *un!o )* 1ot )s1umeric(str1umero) 8hen (alculoXF7=> O EE .<it /unction .nd )* Pinicia o multiplicador intJultiplicador O A Ppega cada caracter do numero a partir da direita /or int(ontador O @en(str1umero) 8o = 'tep -= Pe<trai o caracter e multiplica pelo multiplicador int1umero O 7al(Jid(str1umero, int(ontador, =)) Y intJultiplicador P se o resultado *or maior que nove soma os algarismos do resultado )* int1umero Z : 8hen int1umero O 7al(@e*t(int1umero, =)) S 7al(0ight(int1umero, =)) .nd )* Psoma o resultado para totali4a!o int8otal1umero O int8otal1umero S int1umero Pse o multiplicador *or igual a A atribuir valor = se *or = atribui A intJultiplicador O ))*(intJultiplicador O A, =, A) 1e<t Fim Fe4ena'uperior $s )nteger )* int8otal1umero [ => 8hen Fe4ena'uperior O => .lse Fe4ena'uperior O => Y (7al(@e*t(('tr(int8otal1umero), =)) S =) .nd )* int0esto O Fe4ena'uperior - int8otal1umero Pveri*ica as e<ce2es ( > -Z F7O> ) 'elect (ase int0esto (ase > (alculoXF7=> O E>E (ase .lse (alculoXF7=> O 'tr(int0esto) .nd 'elect .nd /unction O CDdi2o de Barras )remos montar o cdigo de barras para uma carteira =? (sem registro) com nosso n9mero de =L posi2es com *ator de vencimento# .squemati4ando teremos& =AD#B#;#CL?:>=ADB;CL?:#>=ADB;#CL?:>=ADB;CL?:>=A#DB %anco m dv *ator valor no#convenio nosso n9mero - =L posi2es tipo >>=#:#B#=>>>>>>>;BA>C?#>A>?CD#BL=D:=A>=>>>>ACL?#A= 8emos que calcular o F7 do cdigo de barras para isto usamos o seguinte algoritmo& a) o cdigo de barras possui BB (quarenta e quatro) posi2es, incluindo o F#7#5 b) para calcular o F#7# considerar BD posi2es do (digo de %arras, sendo& da posi!o = a B e da posi!o C a BB5 c) multiplicar cada algarismo que comp2e o n9mero pelo seu respectivo multiplicador (peso), iniciando-se pela BB posi!o e saltando a ; posi!o5 d) os multiplicadores (pesos) variam de A a :5 e) o primeiro dgito da direita para a esquerda dever ser multiplicado por A, o segundo por D e assim sucessivamente5 *) os resultados das multiplica2es devem ser somados# g) o total da soma dever ser dividido por == h) o resto da divis!o dever ser subtrado de == i) especi*icamente para o F#7# do (digo de %arras, considerar& ) - se o resultado da subtra!o *or& - igual a =>####################F#7# igual a =5 - igual a ==####################F#7# igual a =5 - di*erente de => e ==##########F#7# ser o prprio dgito# ))- o resultado deste clculo dever ser includo na ; a posi!o do (digo de %arras# $8.1T\O - 1!o ser admitido o dgito > (4ero) na quinta posi!o, pois indicaria que o cdigo de barras n!o possui dgito veri*icador5 ") nas posi2es BD a BB do cdigo de barras dever ser in*ormado, sempre, o tipo de servio )&* $ *un!o que iremos usar para montar o cdigo de barras dada a seguir& Pri"ate F9nction 3ontaMCodBarrasABanco As Strin2? 3oeda As Strin2? "alor As Sin2le? "encimento As !ate? Li"re As Strin2C Fim codigoXsequencia $s 'tring Fim database $s Fate Fim *ator $s )nteger Fim intFac $s )nteger Pdatabase para calculo do *ator database O (Fate(EL6=>6=::LE) *ator O FateFi**(EdE, database, /ormat(vencimento, Edd6mm63333E)) valor O )nt(valor Y =>>) @ivre O /ormat(@ivre, E>>>>>>>>>>>>>>>>>>>>>>>>>E) P sequencia sem o F7 codigoXsequencia O %anco ] Joeda ] *ator ] /ormat(valor, E>>>>>>>>>>E) ] @ivre P calculo do F7 intFac O calculaXF7X(od%arras(codigoXsequencia) P monta a sequencia para o codigo de barras com o F7 JontaX(od%arras O @e*t(codigoXsequencia, B) ] intFac ] 0ight(codigoXsequencia, D:) End F9nction $ *un!o que calcula o digito veri*icador do cdigo de barras dada abai<o& Pri"ate F9nction calc9laM!4MCodBarrasAse89encia As Strin2C As Inte2er Fim int(ontador, int1umero, int8otal1umero $s )nteger Fim intJultiplicador, int0esto, intresultado $s )nteger Fim caracter $s 'tring intJultiplicador O A /or int(ontador O = 8o BD caracter O Jid(0ight(sequencia, int(ontador), =, =) )* intJultiplicador Z : 8hen intJultiplicador O A int1umero O > .nd )* int1umero O caracter Y intJultiplicador int8otal1umero O int8otal1umero S int1umero intJultiplicador O intJultiplicador S = 1e<t int0esto O int8otal1umero Jod == intresultado O == - int0esto )* intresultado O => Or intresultado O == 8hen calculaXF7X(od%arras O = .lse calculaXF7X(od%arras O intresultado .nd )* End F9nction ReGer:ncias Biblio2r#Gicas http$<<NNN*bradesco*com*br<br<pO<conte9do<solMrec<pdG<man9altecnico*pdG