https://github.com/andreroggeri/pynubank
Acesse seus extratos do Nubank pelo Python
https://github.com/andreroggeri/pynubank
Last synced: about 1 year ago
JSON representation
Acesse seus extratos do Nubank pelo Python
- Host: GitHub
- URL: https://github.com/andreroggeri/pynubank
- Owner: andreroggeri
- License: mit
- Created: 2017-06-19T18:08:14.000Z (about 9 years ago)
- Default Branch: main
- Last Pushed: 2025-05-06T00:53:50.000Z (about 1 year ago)
- Last Synced: 2025-05-11T08:09:15.401Z (about 1 year ago)
- Language: Python
- Homepage:
- Size: 438 KB
- Stars: 1,213
- Watchers: 47
- Forks: 179
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-made-by-brazilians - pynubank
- starred-awesome - pynubank - Acesse seus extratos do Nubank pelo Python (Baseado na versão JS: https://github.com/Astrocoders/nubank-api) (Python)
- awesome-systools - pynubank
README
# pynubank
[](https://github.com/andreroggeri/pynubank/actions/workflows/build.yml)

[](https://badge.fury.io/py/pynubank)
[](https://coveralls.io/github/andreroggeri/pynubank?branch=master)
[](https://codeclimate.com/github/andreroggeri/pynubank/maintainability) [](https://gitter.im/pynubank/pynubank?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Acesse seus extratos do Nubank pelo Python ([Baseado na versão js](https://github.com/Astrocoders/nubank-api))
## ⚠️ Suporte descontinuado
Desde agosto de 2023 o Nubank passou a bloquear o acesso aos dados sem a verificação facial, o que acabou bloqueando o acesso do `pynubank` as APIs.
Devido a isso não é mais possível utilizar essa biblioteca. Esse tema foi [longamente discutido na issue 419](https://github.com/andreroggeri/pynubank/issues/419) com algumas soluções alternativas.
Por gentileza, não crie novas issues com erros iguais aos já reportados.
## Instalação
Disponível via pip
`pip install pynubank`
## Autenticação
Primeiro de tudo, precisamos nos autenticar.
Para isso, além do seu CPF e senha usuais, precisamos de um fator extra de autenticação.
Temos 3 opções disponíveis, com seus respectivos exemplos:
- [QR Code](https://github.com/andreroggeri/pynubank/blob/master/examples/login-qrcode.md) (assim como é feito no app web. Obs: permite somente acesso aos dados do cartão de crédito)
- [Certificado](https://github.com/andreroggeri/pynubank/blob/master/examples/login-certificate.md) (assim como é feito no app mobile)
- [Certificado e Refresh Token](https://github.com/andreroggeri/pynubank/blob/master/examples/login-refresh-token.md)
Tendo seguido com sucesso uma das opções, você pode tentar um dos exemplos a seguir!
## Exemplos
> :warning: **Atenção**: O Nubank pode bloquear a sua conta por 72 horas caso detecte algum comportamento anormal !
Por conta disso, **evite enviar muitas requisições**. Você também pode utilizar o MockHttpClient descrito abaixo.
### Realizando testes com dados falsos
Você pode utilizar este recurso para receber dados falsos para testar a sua solução sem correr riscos de ser bloqueado pelo Nubank e com tempo de resposta instantâneo. Para isso, utilize o exemplo a seguir:
```python
from pynubank import Nubank, MockHttpClient
nu = Nubank(MockHttpClient())
nu.authenticate_with_cert("qualquer-cpf", "qualquer-senha", "caminho/do_certificado.p12") # Essa linha funciona porque não estamos chamando o servidor do Nubank ;)
# Qualquer método chamado não passará pelo Nubank e terá o retorno instantâneo.
```
### Cartão de Crédito
```python
from pynubank import Nubank
nu = Nubank()
# Insira aqui o código para se autenticar!
# Veja a seção acima sobre autenticação para mais detalhes ;)
# Lista de dicionários contendo todas as transações de seu cartão de crédito
card_statements = nu.get_card_statements()
# Retorna um dicionário contendo os detalhes de uma transação retornada por get_card_statements()
# Contém as parcelas da transação
card_statement_details = nu.get_card_statement_details(card_statements[0])
# Soma de todas as compras
print(sum([t['amount'] for t in card_statements]))
# Lista de dicionários contendo todas as faturas do seu cartão de crédito
bills = nu.get_bills()
# Retorna um dicionário contendo os detalhes de uma fatura retornada por get_bills()
bill_details = nu.get_bill_details(bills[1])
```
### NuConta
```python
from pynubank import Nubank
nu = Nubank()
# Insira aqui o código para se autenticar!
# Veja a seção acima sobre autenticação para mais detalhes ;)
# Lista de dicionários contendo todas as transações de seu cartão de crédito
account_statements = nu.get_account_statements()
# Soma de todas as transações na NuConta
# Observacão: As transações de saída não possuem o valor negativo, então deve-se olhar a propriedade "__typename".
# TransferInEvent = Entrada
# TransferOutEvent = Saída
# TransferOutReversalEvent = Devolução
print(sum([t['amount'] for t in account_statements]))
# Saldo atual
print(nu.get_account_balance())
```
### Mais exemplos
A pasta [examples](./examples/) possui mais referencias de uso com autenticação e visualização dos dados.
## Testes
1. Instale os requirements
1. Execute o comando pytest
```
$ pip install -r requirements.txt
$ pip install -r requirements-test.txt
$ pytest
```
## Contribuindo
Envie sua PR para melhorar esse projeto ! 😋