Pular para conteúdo

Itaú (341)

Manuais oficiais de referência: Especificação de Boleto de Cobrança (Itaú, mar/2015) · Layout Cobrança CNAB 400 bytes · Layout Cobrança CNAB 240 (cálculo de DAC e campo livre). Fontes e portal em fontes-oficiais.md — os PDFs não são redistribuídos, apenas citados.

Implementação: pycobranca/bancos/itau.py · Dígito do banco: 7 · PIX: ✅

Logo empacotado: disponível via logo_do_banco("341") — a marca é do banco (uso nominativo); ver render/logos/NOTICE.md.

Resumo

DACs por módulo 10 (um para agência/conta/carteira/nosso número e outro para agência/conta).

Campo livre (posições 20–44 do código de barras)

Posições Tam. Conteúdo
1–3 3 Carteira
4–11 8 Nosso número
12 1 DAC [agência/conta/carteira/nosso número] (módulo 10)
13–16 4 Agência
17–21 5 Conta
22 1 DAC [agência/conta] (módulo 10)
23–25 3 000

Dígitos verificadores

  • DAC conta: módulo 10 de agência(4) + conta(5).
  • DAC nosso número: módulo 10, e a composição muda conforme a carteira.

O manual (Cobrança CNAB 400, jan/2017, nota 23) manda usar agência(4) + conta(5) + carteira(3) + nosso número(8), "exceto as carteiras escriturais e na modalidade direta as carteiras 126, 131, 145, 150 e 168, cujo DAC do 'Nosso Número' é composto apenas dos campos: Carteira e Nosso Número".

Carteira Composição do DAC
112 carteira + nosso número
104, 109, 115, 175, 177, 188 agência + conta + carteira + nosso número

Corrigido na 1.1.1 — carteira 112

Até a 1.1.0 a composição longa valia para as sete carteiras. Na 112 isso produzia um código de barras estruturalmente válido com o dígito errado — o boleto imprime e passa em conferência estrutural, e a inconsistência pode permanecer invisível em validadores estruturais, só sendo detectada quando o título é validado segundo as regras específicas do Itaú. Reportado na issue #40, conferido contra boletos emitidos pelo próprio Itaú.

Por que só a 112

O manual se contradiz. A nota 23 excetua "as carteiras escriturais", e a tabela de carteiras (nota 5) classifica 104, 112, 115 e 188 como escriturais — o que colocaria as quatro na composição curta. Mas o anexo 4 do mesmo manual, que trata de "boletos emitidos pelo próprio cliente", omite a cláusula das escriturais e lista só as diretas. Ainda troca 145 por 146.

Diante da contradição, a decisão foi tomada por medição: os mesmos dados foram gerados em três outras implementações de cobrança, e o resultado comparado com as duas leituras do manual.

Carteira Nota 23 Anexo 4 Implementações que usam a composição curta Campo (Itaú real)
112 curto longo 2 de 3 curto (2 relatos)
104 curto longo 1 de 3 —
115 curto longo 0 de 3 —
188 curto longo 0 de 3 —

Só a 112 tem lastro: duas das três implementações a tratam assim, e dois relatos independentes a verificaram contra boletos emitidos pelo próprio Itaú — um deles a issue #40 deste repositório. Para 104, 115 e 188 há apenas a leitura de um trecho que o próprio manual contradiz, e mudar o código de barras delas por isso quebraria a paridade sem prova. Um vetor real dessas carteiras reabre a questão; sem ele, elas seguem na composição longa.

As sete carteiras são conferidas byte a byte contra vetores externos em tests/test_bancos_itau.py.

Carteiras suportadas

104, 109, 112, 115, 175, 177, 188. As carteiras de nosso número com 15 posições (107, 122, 142, 143, 196 e 198) têm código de barras próprio — fora do escopo atual.

Validação de campos (geração do boleto)

Tamanhos em dígitos (mín.–máx.); a máscara é descartada e o valor é preenchido com zero à esquerda. Violações vêm em BoletoInvalido.erros (lista) — ver o contrato de erros e a matriz completa.

Campo Regra
Agência 1–4 dígitos
Conta 1–5 dígitos
Nosso número 1–8 dígitos
Carteira conjunto: 104, 109, 112, 115, 175, 177, 188

Formatos de exibição

  • Nosso número: carteira/nosso_numero-DAC → 109/12345678-0
  • Agência/conta: 0057 / 12345-7

Exemplo validado (por vetores de referência ✓)

Entrada: agência 0057, conta 12345, carteira 109, nosso número 12345678, R$ 127,50, vencimento 15/08/2026.

Campo livre:     1091234567800057123457000
Código de barras: 34195153900000127501091234567800057123457000
Linha digitável:  34191.09123 34567.800056 71234.570001 5 15390000012750

Remessa CNAB 400 — implementada e validada byte a byte ✓

Implementação: pycobranca/cnab/cnab400/itau.py · fixture: tests/fixtures/remessa_itau_cnab400.rem

Estrutura do arquivo (registros de 400 posições, CRLF, maiúsculas sem acentos):

Registro Conteúdo principal
Header (01REMESSA01COBRANCA) agência + 00 + conta + DAC · empresa(30) · 341 + BANCO ITAU SA · data (DDMMAA)
Detalhe (tipo 1) tipo/CPF-CNPJ da empresa · agência/conta/DAC · uso da empresa(25) · nosso número(8) · carteira · código da carteira (I/U/1/E) · ocorrência · nº documento(10) · vencimento · valor(13) · espécie · aceite · emissão · instruções · mora/desconto/IOF/abatimento · sacado (doc/nome 30/endereço 40/bairro 12/CEP/cidade 15/UF) · avalista(30) · prazo de instrução
Trailer (tipo 9) 393 brancos + sequencial(6)

A geração é byte a byte idêntica aos vetores de referência para os mesmos dados (fixture congelada).