De horas de conferência manual a 3 segundos.
Processa lotes de Notas Fiscais Eletrônicas (XML), valida cada uma automaticamente e gera um relatório Excel profissional — separando o que está OK do que tem problema.
Escritórios contábeis recebem centenas de XMLs de NF-e por mês e conferem na mão: nota duplicada, valor que não bate, chave inválida. Horas de trabalho repetitivo e sujeito a erro humano.
Este projeto resolve isso com 1 clique:
[pasta com XMLs] → validar → relatório Excel em segundos
Sem terminal, sem configuração. Abre o .exe, aponta a pasta, clica em processar.
- Gerar XMLs de demonstração diretamente pela interface
- Selecionar pasta com os XMLs reais
- Log colorido em tempo real com os resultados
- Abrir o Excel com um botão ao final
| # | Validação | Detalhe |
|---|---|---|
| 1 | Dígito verificador da chave de acesso | Módulo 11 com pesos 2–9, implementado do zero |
| 2 | CNPJ do emitente | Dois dígitos verificadores pelo algoritmo oficial |
| 3 | Consistência de valores | Soma dos itens × total da nota (tolerância R$ 0,01) |
| 4 | Chave duplicada no lote | Detecta a mesma nota enviada duas vezes |
| 5 | Data de emissão futura | Alerta notas com data inválida |
| 6 | Campos obrigatórios ausentes | CNPJ, número e valor total |
| 7 | XML malformado / corrompido | Isola o arquivo com erro sem travar o lote |
Aba Resumo
- Total de notas processadas, soma dos valores válidos, período do lote
- Top 5 emitentes por valor
Aba Notas
- Uma linha por nota com status ✔ / ✖
- Fundo verde para válidas, vermelho para erros
- Autofiltro, colunas ajustadas, valores em R$
Aba Erros
- Chave, arquivo e descrição legível de cada problema
- Ex: "Soma dos itens (R$ 1.230,00) difere do total da nota (R$ 1.320,00)"
pip install -r requirements.txt
python gui.py# Gerar XMLs de demonstração (40 notas, ~6 com defeito proposital)
python -m src.nfe_processor --gerar-fake 40
# Processar e gerar relatório
python -m src.nfe_processor --input samples/ --output output/Baixe o .exe na seção Releases e execute direto. Sem instalar Python.
nfe-batch-processor/
├── gui.py # Interface gráfica (tkinter)
├── requirements.txt
├── samples/ # XMLs sintéticos para demo
├── output/ # Relatórios gerados
└── src/
└── nfe_processor/
├── __main__.py # CLI
├── models.py # Dataclasses (NotaFiscal, ItemNota…)
├── reader.py # Leitura de pasta de XMLs
├── parser.py # XML → NotaFiscal (com namespace NF-e)
├── validators.py # Todas as regras de validação
├── report.py # Geração do Excel com openpyxl
└── fake_generator.py # Gerador de XMLs sintéticos para demo
pytest tests/ -v25 testes cobrindo: módulo 11, CNPJ, soma de itens, datas, duplicatas e parsing de XML.
| Tecnologia | Uso |
|---|---|
| Python 3.12+ | Linguagem principal |
openpyxl |
Geração do relatório Excel |
tkinter |
Interface gráfica (stdlib) |
xml.etree |
Parsing de XML (stdlib) |
decimal |
Cálculos monetários sem erro de ponto flutuante |
pytest |
Testes unitários |
Zero dependências pesadas. O núcleo do processamento roda só com stdlib.
Todos os XMLs em samples/ são 100% sintéticos, gerados pelo módulo fake_generator.py.
CNPJs e chaves de acesso são matematicamente válidos mas fictícios — nenhum dado real foi utilizado.
Construído como demonstração de automação fiscal com Python.
Baseado em experiência real automatizando o processamento de NF-e em escritório de assessoria contábil.
Feito com Python puro e muita atenção aos detalhes do layout 4.00 da NF-e.