Skip to main content

GitHub Workflow Status codecov Sonarcloud Status SonarCloud Bugs SonarCloud Vulnerabilities

Discord

farialimer

Parser / Writer for Brazilian Finance Documents farialimer

Intro

Bem-vindo ao projeto de CNAB e IMBARQ! Este projeto tem como objetivo fornecer uma solução open source para processar e gerenciar arquivos de remessa e retorno de cobranças bancárias, de acordo com as normas CNAB e IMBARQ.

Chegou a hora de unificar nossos esforços e resolver de uma vez por todas essa implementação de layouts.

Nossa equipe acredita que a transparência e a colaboração são essenciais para o desenvolvimento de soluções financeiras eficientes e confiáveis. Nós convidamos a comunidade a participar deste projeto, compartilhar ideias, reportar bugs e contribuir com código. Juntos, podemos criar uma solução robusta e de alta qualidade para o setor financeiro.

Uso

Parsing (leitura de arquivos CNAB/IMBARQ)

from farialimer.parser.bradesco.folha_pagamento import FolhaPagamentoParser

parser = FolhaPagamentoParser("bradesco")
content = parser.read_file("caminho/do/arquivo.rem")
registros = parser.parse(content, "folha_pagamento")

for registro in registros:
    print(registro)
# OrderedDict([('codigo_banco', 237), ('lote_servico', 0), ...])

Gerador (escrita de arquivos CNAB)

O gerador recebe uma lista de tuplas (tipo_registro, dados) e produz linhas de largura fixa baseadas nas mesmas specs YAML usadas pelo parser.

from decimal import Decimal
from farialimer.generator.bradesco.folha_pagamento import FolhaPagamentoGenerator

generator = FolhaPagamentoGenerator()

registros = [
    ("0", {  # Header de Arquivo
        "codigo_banco": 237,
        "lote_servico": 0,
        "tipo_registro": 0,
        "tipo_inscricao_empresa": 2,
        "numero_inscricao_empresa": 12345678000190,
        "nome_empresa": "EMPRESA TESTE LTDA",
        "nome_banco": "BANCO BRADESCO SA",
        "codigo_remessa_retorno": 1,
        "data_geracao_arquivo": 23032026,
        "hora_geracao_arquivo": 143000,
        "numero_sequencial_arquivo": 1,
        "layout_arquivo": 80,
        "densidade_gravacao_arquivo": 1600,
    }),
    ("3A", {  # Detalhe - Segmento A
        "codigo_banco": 237,
        "lote_servico": 1,
        "tipo_registro": 3,
        "numero_registro": 1,
        "segmento": "A",
        "tipo_movimento": 0,
        "codigo_movimento": 0,
        "banco_favorecido": 237,
        "agencia_favorecido": 4567,
        "nome_favorecido": "JOAO DA SILVA",
        "data_pagamento": 23032026,
        "valor_pagamento": Decimal("1500.00"),
    }),
    ("9", {  # Trailer de Arquivo
        "codigo_banco": 237,
        "lote_servico": 9999,
        "tipo_registro": 9,
        "quantidade_lotes": 1,
        "quantidade_registros": 3,
        "quantidade_contas_conciliacao": 1,
    }),
]

# Gerar lista de linhas
linhas = generator.gerar(registros, "folha_pagamento")
# ['23700000         2123456780001900000000000...', ...]

# Ou gravar direto em arquivo
generator.gerar_arquivo(registros, "folha_pagamento", "saida.rem")

Cada linha gerada tem exatamente a largura definida pela spec (240 caracteres para CNAB, ate 1000 para B3). Campos nao informados sao preenchidos com zeros (numericos) ou espacos (texto). Campos com default na spec YAML sao aplicados automaticamente.

Geradores disponiveis

Banco Gerador Spec
Bradesco FolhaPagamentoGenerator folha_pagamento
Itau ItauFolhaPagamentoGenerator, ItauCobrancaGenerator folha_pagamento, cobranca_240
Banco do Brasil BBFolhaPagamentoGenerator folha_pagamento
Santander PagamentoFornecedoresGenerator pagamento_fornecedores
Caixa CaixaFolhaPagamentoGenerator folha_pagamento
Sicoob SicoobFolhaPagamentoGenerator folha_pagamento
Sicredi SicrediFolhaPagamentoGenerator, SicrediPagamentoFornecedoresGenerator folha_pagamento, pagamento_fornecedores
Unicred UnicredCobrancaGenerator cobranca
BTG BTGPagamentoGenerator pagamento
Banrisul BanrisulContasAPagarGenerator contas_a_pagar
B3 B3Generator imbarq001, imbarq002, ...

CNAB

CNAB significa "Centro Nacional de Automação Bancária". É um padrão de arquivo utilizado por bancos no Brasil para a transferência de informações financeiras, como cobranças, pagamentos, boletos bancários, entre outras. O CNAB é um padrão estabelecido pela Febraban (Federação Brasileira de Bancos) que padroniza a forma como os arquivos são estruturados, tornando mais fácil e ágil a integração entre sistemas de diferentes bancos. O uso do CNAB permite a automação de processos bancários, melhorando a eficiência e a segurança nas transações financeiras.

IMBARQ

IMBARQ significa "Interface para Movimentação Bancária de Retorno e Quitação". É um padrão de arquivo utilizado pela B3 (Bolsa Brasileira de Valores) para a transferência de informações financeiras entre instituições financeiras. O IMBARQ é utilizado para facilitar a integração de sistemas de diferentes bancos, permitindo a realização de operações bancárias de forma mais ágil e segura.

Outros Projetos

Uma lista com outros projetos que serviram de inspiração:

Metadata

Release files for farialimer 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for farialimer 0.2.1
File Size Uploaded
farialimer-0.2.1.tar.gz 134.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for farialimer 0.2.1
File Interpreter ABI Platform
farialimer-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 259.7 kB

Release files / farialimer-0.2.1.tar.gz

Download URL farialimer-0.2.1.tar.gz
Size 134.4 kB
Tags Source
SHA-256 checksum
How to use checksums
453e4a05a47614c37977aba7b409789de18781c0111169ed38d5cc6200036a78
BLAKE2b-256 checksum
How to use checksums
b51f54a516de325073a7210b37f0352b4f62777d50053b2a3ae233532fe46d0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / farialimer-0.2.1-py3-none-any.whl

Download URL farialimer-0.2.1-py3-none-any.whl
Size 125.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8b448a4a66c84c93f3bef6a642183e6dfda8a6ca1ffdc691bbab97bf1d5959ca
BLAKE2b-256 checksum
How to use checksums
e9c311421039b631cce43a5d23a1671b73387ac6b0ae05d7abf2b444ad3f1791
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page