Skip to main content

brbank

Biblioteca Python assincrona para emitir e acompanhar boletos e cobrancas Pix em bancos brasileiros por uma interface unica. Nao importa nada do Odoo: o modulo l10n_br_payment_boleto e uma das faces possiveis.

Licenca MIT. Python 3.10+ (o 3.10 e o do Odoo 16.0; brbank._compat cobre o que so existe no 3.11) e cryptography>=38, para conviver com o pyOpenSSL da imagem do Odoo. Alfa: nenhum adapter foi validado em sandbox de banco (validado_sandbox = False); o contrato de cada banco vem da documentacao publica e de fontes de terceiros, com as duvidas em docs/<banco>-duvidas.md. Estado: primeira fatia (modelo canonico, contrato de adapter, transporte, autenticacao, orquestrador e os adapters da tabela abaixo).

Bancos suportados

Todos os adapters passam pela mesma suite de contrato (registrar, consultar, baixar) contra um servidor falso. "Origem" diz de onde veio o contrato: Odoo = portado de um modulo que ja roda em producao (o adapter da biblioteca ainda nao rodou contra o banco), ACBr = levantado por leitura do ACBr, usado so como documentacao, e de fontes de terceiros.

Banco Adapter (entry point) Produto Capacidades declaradas Origem
Inter (077) inter Cobranca v3, boleto hibrido hibrido, so hibrido, baixa, PDF, webhook Odoo
PinBank pinbank Boleto, envelope AES-CBC baixa Odoo
Sicoob (756) sicoob Cobranca v3, boleto hibrido hibrido, alteracao, baixa ACBr
Sicredi (748) sicredi Cobranca v2 hibrido, alteracao, baixa, webhook ACBr
Banco do Brasil (001) bb Cobranca v2 alteracao, baixa ACBr

Pix (BACEN /cob, /cobv, /webhook) por um adapter generico, pix_bacen, com um perfil por PSP (host, escopos, headers e quirks): Inter, Banco do Brasil, Sicoob, Sicredi, Itau, Bradesco, Santander e Efi. Capacidades: Pix cob e cobv, webhook, baixa.

Fora desta lista por enquanto: BNB (sem referencia de Pix confiavel), Caixa, Safra, Banrisul, Unicred, BTG e C6 (planejados), gateways como Mercado Pago, PagBank e Stone (sob demanda) e a variante ECOMM do Sicredi. Banco novo = um adapter com BankAdapter e um entry point em brbank.adapters; veja docs/ para o que cada banco ainda deixa em aberto.

Nenhum adapter da biblioteca foi validado em sandbox. Sicoob, Sicredi, Banco do Brasil e os perfis Pix trazem validado_sandbox = False no codigo e so passam a True depois de rodar contra o ambiente real do banco. Inter e PinBank herdam a logica de modulos Odoo em producao, mas o adapter da biblioteca tambem ainda nao rodou contra o banco.

Uso

from brbank import Orquestrador
from brbank.adapters.inter import InterAdapter, InterConfig

config = InterConfig(
    conta="matriz",
    client_id="...",
    client_secret="...",
    conta_corrente="123456",
    ambiente="sandbox",
    certificado_pem=cert_bytes,
    chave_pem=chave_bytes,  # vindos do cofre
)
adapter = InterAdapter(config)
orquestrador = Orquestrador(adapter, concorrencia=10)

registrado = await orquestrador.emitir(titulo)  # idempotente por chave
resultados = await orquestrador.emitir_em_varios(lote)  # falha isolada por titulo

Um banco novo e um pacote que registra o adapter no entry point brbank.adapters:

[project.entry-points."brbank.adapters"]
inter = "brbank.adapters.inter:InterAdapter"
pinbank = "brbank.adapters.pinbank:PinbankAdapter"
sicoob = "brbank.adapters.sicoob:SicoobAdapter"

sicredi = "brbank.adapters.sicredi:SicrediAdapter"

pix_bacen = "brbank.adapters.pix_bacen:PixBacenAdapter"

O PinbankAdapter usa OAuth2 password e payload cifrado AES-CBC (EnvelopeAesCbc), registra, consulta e baixa por NossoNumero, e nao tem webhook nem PDF. Contrato em aberto: docs/pinbank-duvidas.md.

O SicoobAdapter (Cobranca Bancaria v3, boleto hibrido) usa OAuth2 client_credentials sem client_secret (a identidade e o mTLS), header client_id, id do titulo = nosso numero, registra, consulta, baixa e envia instrucao (prorrogacao, abatimento, protesto). Sem PDF e sem webhook declarados. validado_sandbox = False: contrato montado de documentacao de terceiros, nunca executado contra o Sicoob. Duvidas: docs/sicoob-duvidas.md.

O BancoDoBrasilAdapter (bb, API Cobranca v2, convenio de 6 ou 7 digitos) usa OAuth2 client_credentials e a chave gw-dev-app-key em query param; registra, consulta, baixa, prorroga e abate, sem webhook nem PDF. Nasce com validado_sandbox = False: ver docs/bb-duvidas.md.

O SicrediAdapter (API de Cobranca v2, OAuth2 password) registra, consulta, baixa e altera (prorrogacao e abatimento); webhook sem assinatura exige reconsulta. Nasce com validado_sandbox = False; contrato em aberto: docs/sicredi-duvidas.md.

O PixBacenAdapter fala a API Pix do BACEN (/cob, /cobv, /webhook, devolucao) e muda de banco por PerfilPsp: inter, bb, sicoob, sicredi, itau, bradesco, santander e efi (BNB sem perfil). Todos com validado_sandbox = False ate rodar no sandbox. O txid vem da chave de idempotencia, o copia-e-cola e o txid chegam em TituloRegistrado, e CONCLUIDA sem Pix na consulta nao liquida. Duvidas e quirks: docs/pix-duvidas.md.

config = PixBacenConfig(
    perfil="sicoob",
    conta="matriz",
    chave_pix="...",
    client_id="...",
    ambiente="producao",
    certificado_pem=cert,
    chave_pem=chave,
)
adapter = PixBacenAdapter(config)

brbank.criar_adapter("inter", config) resolve pelo nome e adapter.suporta(Capacidade.PDF) consulta as capacidades em runtime.

Regras

  • Valores em Decimal (float e recusado). Percentuais em unidade de percentual.
  • Nome, documento e endereco ficam fora do repr; log, erro e resposta bruta passam por brbank.mascara.mascarar.
  • Retry so para 429, 5xx e erro de transporte. Status desconhecido no banco levanta erro, nunca vira "pago".
  • Webhook gera EventoCanonico e nao confirma nada: reconsulte antes de liquidar.

Metadata

Release files for brbank 0.0.2

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

Source distribution (sdist)

Source distribution for brbank 0.0.2
File Size Uploaded Provenance
brbank-0.0.2.tar.gz 128.2 kB With provenance Details

Built distribution (wheel)

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

Total release size: 181.1 kB

Release files / brbank-0.0.2.tar.gz

Download URL brbank-0.0.2.tar.gz
Size 128.2 kB
Tags Source
SHA-256 checksum
How to use checksums
38eb6da4745f3ff6228c6046f87a03fecc637fdbd97dbfaa3e633c24383c911b
BLAKE2b-256 checksum
How to use checksums
c466a3a96d019a0a18ef91fde7398da3621cf301e8fa8292df8c7415fe533b2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / brbank-0.0.2-py3-none-any.whl

Download URL brbank-0.0.2-py3-none-any.whl
Size 52.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
852385c72955cf1336f65f4133a1837e3e3be384909826e7989a356375f6b4f8
BLAKE2b-256 checksum
How to use checksums
c0c6e5b0a2e52558194610322d1bdf82a6225b3710901da47b3d90264276fc6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Security for brbank 0.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for brbank-0.0.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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