{"id":13773992,"url":"https://github.com/andreroggeri/pynubank","last_synced_at":"2025-05-14T01:11:05.548Z","repository":{"id":37979763,"uuid":"94806442","full_name":"andreroggeri/pynubank","owner":"andreroggeri","description":"Acesse seus extratos do Nubank pelo Python","archived":false,"fork":false,"pushed_at":"2025-05-06T00:53:50.000Z","size":448,"stargazers_count":1213,"open_issues_count":2,"forks_count":179,"subscribers_count":47,"default_branch":"main","last_synced_at":"2025-05-11T08:09:15.401Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andreroggeri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-19T18:08:14.000Z","updated_at":"2025-05-09T22:26:26.000Z","dependencies_parsed_at":"2023-10-20T17:10:05.717Z","dependency_job_id":"c6012887-57fd-4aa9-9d56-2c661d62568b","html_url":"https://github.com/andreroggeri/pynubank","commit_stats":{"total_commits":287,"total_committers":32,"mean_commits":8.96875,"dds":0.519163763066202,"last_synced_commit":"ca7e74f8dd20e3c91969e3c4819006b2dbfb174a"},"previous_names":[],"tags_count":61,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreroggeri%2Fpynubank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreroggeri%2Fpynubank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreroggeri%2Fpynubank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreroggeri%2Fpynubank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreroggeri","download_url":"https://codeload.github.com/andreroggeri/pynubank/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254049367,"owners_count":22006040,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T17:01:22.713Z","updated_at":"2025-05-14T01:11:05.510Z","avatar_url":"https://github.com/andreroggeri.png","language":"Python","funding_links":[],"categories":["Uncategorized","Python","Shell"],"sub_categories":["Uncategorized","Shell Utils"],"readme":"# pynubank\n[![Python package](https://github.com/andreroggeri/pynubank/actions/workflows/build.yml/badge.svg)](https://github.com/andreroggeri/pynubank/actions/workflows/build.yml)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pynubank)\n[![PyPI version](https://badge.fury.io/py/pynubank.svg)](https://badge.fury.io/py/pynubank)\n[![Coverage Status](https://coveralls.io/repos/github/andreroggeri/pynubank/badge.svg?branch=master)](https://coveralls.io/github/andreroggeri/pynubank?branch=master)\n[![Maintainability](https://api.codeclimate.com/v1/badges/e550387e85d315a212af/maintainability)](https://codeclimate.com/github/andreroggeri/pynubank/maintainability) [![Join the chat at https://gitter.im/pynubank/pynubank](https://badges.gitter.im/pynubank/pynubank.svg)](https://gitter.im/pynubank/pynubank?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nAcesse seus extratos do Nubank pelo Python ([Baseado na versão js](https://github.com/Astrocoders/nubank-api))\n\n## ⚠️ Suporte descontinuado\n\nDesde 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.\nDevido 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.\n\nPor gentileza, não crie novas issues com erros iguais aos já reportados.\n\n## Instalação\nDisponível via pip\n\n`pip install pynubank`\n\n\n## Autenticação\nPrimeiro de tudo, precisamos nos autenticar. \n\nPara isso, além do seu CPF e senha usuais, precisamos de um fator extra de autenticação.\n\nTemos 3 opções disponíveis, com seus respectivos exemplos:\n- [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) \n- [Certificado](https://github.com/andreroggeri/pynubank/blob/master/examples/login-certificate.md) (assim como é feito no app mobile)\n- [Certificado e Refresh Token](https://github.com/andreroggeri/pynubank/blob/master/examples/login-refresh-token.md)\n\nTendo seguido com sucesso uma das opções, você pode tentar um dos exemplos a seguir!\n\n## Exemplos\n\n\u003e :warning:  **Atenção**: O Nubank pode bloquear a sua conta por 72 horas caso detecte algum comportamento anormal !\nPor conta disso, **evite enviar muitas requisições**. Você também pode utilizar o MockHttpClient descrito abaixo.\n\n### Realizando testes com dados falsos\nVocê 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:\n\n```python\nfrom pynubank import Nubank, MockHttpClient\n\nnu = Nubank(MockHttpClient())\nnu.authenticate_with_cert(\"qualquer-cpf\", \"qualquer-senha\", \"caminho/do_certificado.p12\") # Essa linha funciona porque não estamos chamando o servidor do Nubank ;)\n\n# Qualquer método chamado não passará pelo Nubank e terá o retorno instantâneo.\n```\n\n\n### Cartão de Crédito\n```python\nfrom pynubank import Nubank\n\nnu = Nubank()\n\n# Insira aqui o código para se autenticar!\n# Veja a seção acima sobre autenticação para mais detalhes ;)\n\n# Lista de dicionários contendo todas as transações de seu cartão de crédito\ncard_statements = nu.get_card_statements()\n\n# Retorna um dicionário contendo os detalhes de uma transação retornada por get_card_statements()\n# Contém as parcelas da transação\ncard_statement_details = nu.get_card_statement_details(card_statements[0])\n\n# Soma de todas as compras\nprint(sum([t['amount'] for t in card_statements]))\n\n# Lista de dicionários contendo todas as faturas do seu cartão de crédito\nbills = nu.get_bills()\n\n# Retorna um dicionário contendo os detalhes de uma fatura retornada por get_bills()\nbill_details = nu.get_bill_details(bills[1])\n```\n\n### NuConta\n```python\nfrom pynubank import Nubank\n\nnu = Nubank()\n\n# Insira aqui o código para se autenticar!\n# Veja a seção acima sobre autenticação para mais detalhes ;)\n\n# Lista de dicionários contendo todas as transações de seu cartão de crédito\naccount_statements = nu.get_account_statements()\n\n# Soma de todas as transações na NuConta\n# Observacão: As transações de saída não possuem o valor negativo, então deve-se olhar a propriedade \"__typename\".\n# TransferInEvent = Entrada\n# TransferOutEvent = Saída\n# TransferOutReversalEvent = Devolução\nprint(sum([t['amount'] for t in account_statements]))\n\n# Saldo atual\nprint(nu.get_account_balance())\n```\n\n### Mais exemplos\nA pasta [examples](./examples/) possui mais referencias de uso com autenticação e visualização dos dados.\n\n## Testes\n1. Instale os requirements\n1. Execute o comando pytest\n\n```\n$ pip install -r requirements.txt\n$ pip install -r requirements-test.txt\n\n$ pytest\n```\n\n## Contribuindo\n\nEnvie sua PR para melhorar esse projeto ! 😋\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreroggeri%2Fpynubank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreroggeri%2Fpynubank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreroggeri%2Fpynubank/lists"}