NFSe Nacional
Biblioteca Python desenvolvida para facilitar o download e automação de Notas Fiscais de Serviço Eletrônicas (NFSe) diretamente do Ambiente de Dados Nacional (ADN).
Esta ferramenta foi projetada para interagir com a API oficial da Receita Federal, gerenciar certificados digitais A1 e organizar os arquivos XML baixados de forma estruturada.
Documentação Oficial ADN: https://adn.nfse.gov.br/contribuintes/docs/index.html
Funcionalidades
- Integração direta com o Ambiente de Dados Nacional (ADN).
- Conversão automática de certificados (.pfx) para formatos compatíveis com a API (.pem/.key).
- Download em lote de documentos fiscais a partir de um NSU (Número Sequencial Único).
- Organização automática dos arquivos XML baixados em diretórios por Ano e Mês (ex: 2024.01).
- Download de DANFSe através da chave de acesso.
Instalação
A biblioteca está disponível no PyPI e pode ser instalada utilizando o pip:
pip install dfe-nfse
Como Usar
Para utilizar a biblioteca, é necessário possuir um certificado digital modelo A1 válido e sua respectiva senha.
Exemplo Básico de Download XML
from nfse import download_nfse
# Configurações iniciais
cnpj_empresa = "00000000000000"
nsu_inicial = 100 # Último NSU processado ou 0 para o início
caminho_saida = "./documentos_fiscais"
caminho_certificado = "/caminho/para/seu/certificado.pfx"
senha_certificado = "sua_senha_segura"
# Executa o download
resultado = download_nfse(
cnpj=cnpj_empresa,
nsu=nsu_inicial,
output_path=caminho_saida,
cert_path=caminho_certificado,
cert_password=senha_certificado
)
print(f"Status da operação: {resultado}")
Detalhes dos Parâmetros
A função download_nfse aceita os seguintes argumentos:
- cnpj (str): O CNPJ da empresa contribuinte (apenas números ou com formatação padrão). A biblioteca normaliza automaticamente removendo pontuações.
- nsu (int): Número Sequencial Único a partir do qual a busca será realizada. Utilize este controle para baixar apenas notas novas.
- output_path (str): Diretório raiz onde os XMLs serão salvos. A estrutura interna será criada automaticamente no formato
Ano.Mes/ChaveAcesso.xml. - cert_path (str): Caminho absoluto ou relativo para o arquivo do certificado digital (.pfx).
- cert_password (str): Senha para descriptografar o certificado digital.
Exemplo Básico de Download danfse
from nfse import download_danfse
# Configurações iniciais
chave = "00000000000000000000000000000000000000000000000000"
caminho_saida = "./PDF"
caminho_certificado = "/caminho/para/seu/certificado.pfx"
senha_certificado = "sua_senha_segura"
# Executa o download
resultado = download_danfse(
chave=chave,
output_path=caminho_saida,
cert_path=caminho_certificado,
cert_password=senha_certificado
)
print(f"Status da operação: {resultado}")
Detalhes dos Parâmetros
A função download_nfse aceita os seguintes argumentos:
- chave (str): Chave de acesso do documento.
- output_path (str): Diretório raiz onde os XMLs serão salvos. O nome do arquivo sempre será a chave de acesso`.
- cert_path (str): Caminho absoluto ou relativo para o arquivo do certificado digital (.pfx).
- cert_password (str): Senha para descriptografar o certificado digital.
Retorno
A função retorna uma string com o resultado da operação, que pode ser:
- Confirmação de quantidade de documentos baixados.
- Mensagens de erro da API (404, 500, etc.).
- Exceções locais (arquivo não encontrado, senha incorreta).
Requisitos do Sistema
- Python 3.6 ou superior
- Biblioteca
requests - Biblioteca
cryptography
Estrutura de Arquivos
Após a execução, os arquivos serão organizados da seguinte forma no diretório de saída:
documentos_fiscais/
├── 2023.12/
│ ├── 35231200000000000000000000000000000000000001.xml
│ └── 35231200000000000000000000000000000000000002.xml
└── 2024.01/
├── 35240100000000000000000000000000000000000001.xml
└── ...
Licença
Distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais informações.
Metadata
Release files for dfe-nfse 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dfe_nfse-0.2.1.tar.gz | 5.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dfe_nfse-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.5 kB
Release files / dfe_nfse-0.2.1.tar.gz
| Download URL | dfe_nfse-0.2.1.tar.gz |
|---|---|
| Size | 5.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9de654c3ec82d072870bff85f47fd23170cd93803deb8384a33390a3d0a9be79
|
|
BLAKE2b-256 checksum How to use checksums |
70f2e0db45a4da9c831cc07bc9abcdf17e16c91af92af118f3e9889e1a438da9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / dfe_nfse-0.2.1-py3-none-any.whl
| Download URL | dfe_nfse-0.2.1-py3-none-any.whl |
|---|---|
| Size | 5.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c3d8d24816c69a510834bc1406077faebb4eedc496a8dabc189bbf4fa9738a0b
|
|
BLAKE2b-256 checksum How to use checksums |
74f0a6de45ef3ea4042911d7149c608c3a25cd6d25abab1a31c44abcfe3000f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|