OpenCNAB é uma biblioteca Python para trabalhar com arquivos CNAB, focada em CNAB 400 e suporte inicial ao banco BMP.
O projeto oferece utilitários para:
- gerar registros de remessa em formato CNAB 400
- formatar campos de data e valores para CNAB
- gerar "nosso número" com dígito verificador
- representar boletos e dados de cobrança
- Cabeçalho de remessa para BMP Money Plus (CNAB 400)
- Registro tipo 1 para BMP (CNAB 400)
- Geração de "nosso número" com cálculo do dígito verificador
- Modelos de boleto para uso interno
- Validação e formatação de campos CNAB
- Python 3.11 ou superior
Para instalar localmente:
git clone https://github.com/armelingu/opencnab.git
cd opencnab
pip install .Para instalar dependências de desenvolvimento:
pip install -e .[dev]from app.bancos.bmp.cnab_400.nosso_numero import gerar_nosso_numero
nosso_numero = gerar_nosso_numero("12345")
print(nosso_numero) # Ex: 00000012345-<digito>from datetime import date
from app.bancos.bmp.cnab_400.remessa import HeaderRemessaBMP
header = HeaderRemessaBMP(
codigo_empresa="123",
nome_empresa="EMPRESA TESTE",
data_geracao=date(2026, 6, 5),
sequencial_remessa=1
)
linha_header = header.gerar()
print(len(linha_header)) # 400from datetime import date
from app.bancos.bmp.cnab_400.registros import RegistroTipo1BMP
registro = RegistroTipo1BMP(
numero_documento="NF001",
valor=150.70,
vencimento=date(2026, 6, 30),
nome_pagador="CLIENTE TESTE",
documento_pagador="12345678901",
sequencial_registro=2
)
linha_registro = registro.gerar()
print(len(linha_registro)) # 400from datetime import date
from app.bancos.bmp.cnab_400.modelos import BoletoBMP
boleto = BoletoBMP(
numero_documento="NF001",
nosso_numero="0000000001",
valor=150.75,
vencimento=date(2026, 6, 30),
nome_pagador="CLIENTE TESTE",
documento_pagador="12345678901"
)
print(boleto.numero_documento)Execute a suíte de testes com:
pytestapp/bancos/bmp/cnab_400/- implementação de BMP CNAB 400app/boletos/- classes auxiliares para boletosapp/nucleo/- formatação de campos, datas, valores e validaçõestests/- casos de teste para as funcionalidades
Atualmente, o foco principal é o suporte a BMP no formato CNAB 400. O projeto pode ser ampliado para outros bancos e formatos em versões futuras.
Consulte o arquivo LICENSE para detalhes sobre a licença do projeto.