pypix-api Documentation
Biblioteca em Python para comunicação com APIs bancárias focada na integração com o PIX.
Overview
pypix-api é uma biblioteca Python que simplifica a integração com APIs bancárias brasileiras para operações PIX. Atualmente suporta Banco do Brasil, Sicoob, Sicredi e Banco Inter, com planos de expansão para outros bancos.
Principais funcionalidades:
🏦 Bancos suportados: Banco do Brasil (001), Sicoob (756), Sicredi (748), Banco Inter (077)
🔐 Autenticação: OAuth2 com mTLS (PEM/PKCS#12) ou HTTP Basic (Sicredi) ou credenciais no corpo (Banco Inter)
💰 PIX: Cobranças imediatas, com vencimento e em lote
🔄 Recorrência: Pix Automático (COBR) e gestão de recorrências
🪝 Webhooks: Configuração e gerenciamento (Pix, COBR, REC)
🔍 Consultas: PIX, devoluções e locations
Quick Start
Installation
pip install pypix-api
Basic Usage
from pypix_api.auth.oauth2 import OAuth2Client
from pypix_api.banks.bb import BBPixAPI
# Configure OAuth2 authentication (token_url comes from the bank class)
oauth_client = OAuth2Client(
token_url=BBPixAPI.TOKEN_URL,
client_id='your-client-id',
cert_pfx='path/to/certificate.pfx',
pwd_pfx='cert-password',
)
# Create PIX API instance
api = BBPixAPI(oauth=oauth_client)
# Create a PIX charge
charge_data = {
'calendario': {'expiracao': 3600},
'devedor': {
'cpf': '12345678901',
'nome': 'João Silva'
},
'valor': {'original': '100.00'},
'chave': 'your-pix-key',
'solicitacaoPagador': 'Pagamento do produto X'
}
result = api.criar_cob('txid123', charge_data)
print(f"Charge created: {result}")
API Reference
Contents:
Authentication
- class pypix_api.auth.oauth2.OAuth2Client(token_url, client_id=None, cert=None, pvk=None, cert_pfx=None, pwd_pfx=None, sandbox_mode=False, client_secret=None, timeout=None, client_auth='basic')[source]
Bases:
objectCliente OAuth2 para autenticação com a API
- __init__(token_url, client_id=None, cert=None, pvk=None, cert_pfx=None, pwd_pfx=None, sandbox_mode=False, client_secret=None, timeout=None, client_auth='basic')[source]
Inicializa o cliente OAuth2
- Parameters:
token_url (
str) – URL de autenticação OAuth2cert_pfx (
str|bytes|BinaryIO|None) – Path ou dados do certificado PFX (opcional)sandbox_mode (
bool) – Se True, não requer certificado (default: False)client_secret (
str|None) – Client Secret para autenticação via HTTP Basic (opcional). Quando informado, o token é solicitado com o headerAuthorization: Basic base64(client_id:client_secret), como exigido por PSPs como o Sicredi. Quando omitido, mantém o fluxo padrão (client_id no corpo, autenticação de cliente via mTLS). Mantido como último parâmetro para preservar a ordem posicional histórica da assinatura.timeout (
float|tuple[float,float] |tuple[float,None] |None) – Tempo limite da requisição de token, no formato aceito pelorequests: um número ou a tupla(conexão, leitura).NoneusaDEFAULT_TIMEOUT. Para leitura sem limite, use(5.0, None).client_auth (
str) – Como oclient_secreté apresentado ao PSP, quando informado.'basic'(padrão) usa o headerAuthorization: Basic(Sicredi);'body'enviaclient_ideclient_secretno corpo do form, como exige o Banco Inter. Semclient_secret, não tem efeito.
- Raises:
ValueError – Se
client_authnão for'basic'nem'body'
- get_token(scope=None)[source]
Obtém ou renova o token de acesso para o escopo especificado
- Parameters:
scope (
str|None) – Escopo(s) necessário(s) para a API. Exemplos: - Cobrança por Boleto: “boletos_inclusao boletos_consulta boletos_alteracao webhooks_alteracao webhooks_consulta webhooks_inclusao” - Conta Corrente: “cco_consulta cco_transferencias openid” - Recebimento no PIX: “cob.write cob.read cobv.write cobv.read lotecobv.write lotecobv.read pix.write pix.read webhook.read webhook.write payloadlocation.write payloadlocation.read”- Returns:
Token de acesso válido para o escopo solicitado
- Return type:
Banks
Banco do Brasil
- class pypix_api.banks.bb.BBPixAPI(oauth, sandbox_mode=False, timeout=None, scopes=None)[source]
Bases:
PixBBMethods,BankPixAPIBaseImplementação da API PIX do Banco do Brasil.
- Parameters:
oauth (
OAuth2Client) – Instância configurada de OAuth2Client para autenticaçãosandbox_mode (
bool) – Se True, usa ambiente de sandbox (default: False)
- BASE_URL
URL da API de produção
- SANDBOX_BASE_URL
URL da API de sandbox
- TOKEN_URL
URL para obtenção de token OAuth2
- SCOPES
Scopes necessários para autenticação
- SANDBOX_BASE_URL = 'https://api-pix.hm.bb.com.br/pix/v2'
Sicoob
- class pypix_api.banks.sicoob.SicoobPixAPI(oauth, sandbox_mode=False, timeout=None, scopes=None)[source]
Bases:
BankPixAPIBaseImplementação da API PIX do Sicoob.
- Parameters:
oauth (
OAuth2Client) – Instância configurada de OAuth2Client para autenticaçãosandbox_mode (
bool) – Se True, usa ambiente de sandbox (default: False)
- BASE_URL
URL da API de produção
- SANDBOX_BASE_URL
URL da API de sandbox
- TOKEN_URL
URL para obtenção de token OAuth2
- SCOPES
Scopes necessários para autenticação
- SANDBOX_BASE_URL = 'https://sandbox.sicoob.com.br/sicoob/sandbox/pix/api/v2'
Sicredi
- class pypix_api.banks.sicredi.SicrediPixAPI(oauth, sandbox_mode=False, timeout=None, scopes=None)[source]
Bases:
BankPixAPIBaseImplementação da API PIX do Sicredi.
Diferentemente de BB e Sicoob, a API Pix do Sicredi usa o prefixo
/apicom versionamento por recurso: a cobrança imediata por identificador (/cob/{txid}) está emv3, os demais recursos do Pix comum (cobv,pix,webhook,loc,lotecobv) emv2e todo o Pix Automático (cobr,rec,locrec,solicrec,webhookcobr,webhookrec) emv1. Por issoBASE_URLaponta apenas para a raiz/apie a versão é injetada em_endpoint_url.A autenticação exige mTLS + OAuth2
client_credentialscomAuthorization: Basic base64(client_id:client_secret). Passe oclient_secretao construir oOAuth2Clientpara ativar o fluxo Basic (verOAuth2Client).- Parameters:
oauth (
OAuth2Client) – Instância configurada de OAuth2Client para autenticaçãosandbox_mode (
bool) – Se True, usa ambiente de sandbox (default: False)
- BASE_URL
Raiz da API de produção (sem versão)
- SANDBOX_BASE_URL
Raiz da API de homologação (sem versão)
- TOKEN_URL
URL para obtenção de token OAuth2 (produção)
- SANDBOX_TOKEN_URL
URL para obtenção de token OAuth2 (homologação)
Note
O
sandbox_modeda biblioteca usa token fixo e não faz mTLS. A homologação real do Sicredi exige mTLS + OAuth; para testá-la, usesandbox_mode=Falsecomtoken_url=SicrediPixAPI.SANDBOX_TOKEN_URLe o certificado de homologação.- SANDBOX_BASE_URL = 'https://api-pix-h.sicredi.com.br/api'
- SANDBOX_TOKEN_URL = 'https://api-pix-h.sicredi.com.br/oauth/token'
- RESOURCE_VERSIONS: ClassVar[dict[str, str]] = {'cob': 'v2', 'cobr': 'v1', 'cobv': 'v2', 'loc': 'v2', 'locrec': 'v1', 'lotecobv': 'v2', 'pix': 'v2', 'rec': 'v1', 'solicrec': 'v1', 'webhook': 'v2', 'webhookcobr': 'v1', 'webhookrec': 'v1'}
- DEFAULT_VERSION = 'v2'
Banco Inter
- class pypix_api.banks.inter.InterPixAPI(oauth, sandbox_mode=False, timeout=None, scopes=None, *, conta_corrente=None, homologacao=False)[source]
Bases:
PixInterMethods,BankPixAPIBaseImplementação da API PIX do Banco Inter.
Uma única versão (
/pix/v2) cobre o Pix comum e o Pix Automático. A autenticação exige mTLS + OAuth2client_credentialscomclient_ideclient_secretno corpo do form — construa oOAuth2Clientcomclient_secreteclient_auth='body'.- Parameters:
oauth (
OAuth2Client) – Instância configurada de OAuth2Client para autenticaçãosandbox_mode (
bool) – Se True, usa as URLs do Sandbox com token fixo, sem OAuth — útil só para testes locais; o Sandbox do Inter recusa o token fixo. Para o Sandbox real, usehomologacao(default: False)timeout (
float|tuple[float,float] |tuple[float,None] |None) – Tempo limite das requisições (verBankPixAPIBase)scopes (
str|ScopeGroup|list[str|ScopeGroup] |None) – Escopos OAuth2 a solicitar (verBankPixAPIBase)conta_corrente (
str|int|None) – Conta corrente da operação, enviada no headerx-conta-corrente. Necessária só quando a integração estiver associada a mais de uma conta. Apenas números, incluindo o dígito; hífen, ponto, espaços e zeros à esquerda são removidoshomologacao (
bool) – Se True, usa as URLs do Sandbox do Inter com OAuth e mTLS reais — o Sandbox do Inter exige certificado e credenciais da integração de testes. Use comtoken_url=InterPixAPI.SANDBOX_TOKEN_URL. Libera os métodossandbox_*(default: False)
- BASE_URL
URL da API de produção
- SANDBOX_BASE_URL
URL da API do Sandbox
- TOKEN_URL
URL para obtenção de token OAuth2 (produção)
- SANDBOX_TOKEN_URL
URL para obtenção de token OAuth2 (Sandbox)
- Raises:
ValueError – Se
conta_correntenão contiver um número válido
- SANDBOX_BASE_URL = 'https://cdpj-sandbox.partners.uatinter.co/pix/v2'
- SANDBOX_TOKEN_URL = 'https://cdpj-sandbox.partners.uatinter.co/oauth/v2/token'
- PARAM_TXID_CONSULTA_PIX = 'txId'
Nome do filtro de txid na query de
GET /pix. A especificação do BACEN usatxid; bancos que divergem (Inter:txId) sobrescrevem.
- __init__(oauth, sandbox_mode=False, timeout=None, scopes=None, *, conta_corrente=None, homologacao=False)[source]
Examples
Contributing
See our Contributing Guide for information on how to contribute to this project.
Security
For security vulnerabilities, please see our Security Policy.
Changelog
See the Changelog for a detailed history of changes.
License
This project is licensed under the MIT License - see the LICENSE file for details.