Ramos da InformáticaPythonComo Emitir NF-e e NFC-e com Python: Guia Prático...

Como Emitir NF-e e NFC-e com Python: Guia Prático Usando PyNFe

-

Dominar a emissão de NF-e e NFC-e em Python é um requisito essencial para desenvolvedores que estão criando sistemas de ERP, PDV ou automatizando rotinas fiscais no backend. Entender as diferenças entre a Nota Fiscal Eletrônica (modelo 55) e a Nota Fiscal de Consumidor (modelo 65) é o primeiro passo. Neste guia, vamos descobrir os requisitos técnicos para emissão, o uso de certificados digitais e como adequar seu software às normas da SEFAZ utilizando a biblioteca PyNFe.

Características da Emissão de NF-e e NFC-e em Python

Entenda as diferenças entre NF-e e NFC-e e aprenda a implementar a emissão, consulta e validação de notas fiscais no seu backend Python usando a biblioteca PyNFe.

Projeto de biblioteca para fazer interface com o webservice de Nota Fiscal eletrônica para Python, disponível sob LGPL.

Biblioteca de interface com os webservices de Nota Fiscal Eletrônica (NF-e) e Nota Fiscal de Consumidor Eletrônico (NFC-e) da SEFAZ e Receita Federal do Brasil, Nota Fiscal de Serviço Eletrônica (NFS-e) para Prefeituras e Manifesto de Documentos Fiscais Eletrônicos (MDF-e).

  • Visto de NF-e substituir as notas fiscais séries 1 e 1A.
  • Visa NFC-e substituir as notas fiscais modelo 2 e cupom fiscal emitido por ECF.
  • NFS-e padrão Abrasf para autorizadores Ginfes e Betha.
  • O MDF-e no padrão nacional deverá ser emitido obrigatoriamente no transporte de mercadorias intermunicipais por empresas prestadoras de serviço de transporte ou por outras empresas cujas empresas o transporte seja realizado em veículos próprios, arrendados ou transportadores independentes.

Características

  • NF-e e NFCe:

    Dica de Leitura: Se você está trabalhando com o projeto de biblioteca para interface com o webservice de Nota Fiscal eletrônica para Python, é importante também estar por dentro das melhores práticas e dicas para entrevistas técnicas de Python, especialmente se você está desenvolvendo sua carreira na área. Leia nosso artigo sobre Entrevista Técnica Python: Não Trave na Hora do Live Coding para se preparar melhor.

    • Atualizado para a versão 4.00
    • Modelo de Documento Fiscal 55 e 65
    • Configuração para utilização em ambiente de produção e homologação (testes)
    • Emissão de notas fiscais normais e em contingência
    • Consultar Status do Serviço
    • Consultar Cadastro de Contribuintes
    • Consultar nota fiscal pela chave de acesso
    • Consultar protocolo
    • Evento de cancelamento de notas
    • Evento de carta de correção
    • Evento de inutilização de notas
    • Evento de manifestação do destinatário
    • Consultar Distribuição DF-e
  • NFS-e:

    • Emissão de nota fiscal de serviço eletrônico
    • Consultar pelo número da NFS-e
    • Consultar por RPS (recibo provisório de serviço)
    • Consultar Lote
    • Cancelar NFS-e
  • MDF-e:

    • Atualizado para a versão 3.00
    • Modelo de Documento 58
    • Emissão de Manifesto
    • Consultar Status do Serviço
    • Consulte MDF-e pela chave de acesso
    • Consultar MDF-es não encerrados
    • Consultar Receita
    • Evento de Cancelamento
    • Evento de Encerramento de viagem
    • Evento de Inclusão de Condutor
    • Evento de Inclusão de DF-e
    • Evento de Pagamento DF-e
  • CT-e:

    • Atualizado para a versão 3.00
    • Consultar Distribuição DF-e para CT-e
    • Emissão (A fazer)
    • Inutilização (A fazer)
    • Consultar CT-e pela chave de acesso (A fazer)
    • Consultar Status do Serviço (A fazer)
    • Eventos relacionados ao CT-e (A fazer)

Dependências

  • lxml
    • Biblioteca de leitura e gravação de arquivos XML, de alto desempenho e fácil de implementar.
  • sinalxml
    • Assinatura e validação do XML
  • pyopenssl
    • Biblioteca para referência do certificado digital
  • pedidos
    • Biblioteca para a comunicação com os webservices da SEFAZ
  • suds-jurko (*apenas para NFS-e)
    • Biblioteca para a comunicação com os webservices via wsdl
  • pyxb (*apenas para NFS-e)
    • Biblioteca para geração de ligações a partir do XML Schema(xsd)

Principais Operações Fiscais com PyNFe

Embora o exemplo acima mostre como consultar o status da SEFAZ, o poder do PyNFe vai muito além. Com base na documentação oficial, a biblioteca oferece suporte completo ao ciclo de vida das notas fiscais. Você pode implementar rapidamente no seu sistema os seguintes fluxos:

  • Emissão e Impressão: Além de gerar e assinar o XML da nota, a biblioteca possui suporte nativo para a Impressão da NF-e (DANFE) e NFC-e, facilitando a vida no ponto de venda (PDV).
  • Tratamento de Quedas de Conexão: O sistema suporta a Emissão de NF-e em Contingência, garantindo que o seu cliente não pare de faturar se a SEFAZ ficar offline.
  • Correções e Cancelamentos: Integração rápida para gerar Cartas de Correção (CC-e) e realizar a Inutilização de Numeração ou Manifestação do Destinatário.
🏢 Hardware PDV & Automação Fiscal

⚡ Hacks para Devs e Automação Fiscal:

  • Auto-Entrada de Estoque: Configure um fluxo no n8n para ler os XMLs das NFes recebidas por e-mail, fazer o parse e alimentar o banco de dados (ex: Supabase) automaticamente.
  • Offline-First: Em PDVs de NFCe, armazene as notas em IndexedDB para emitir em contingência quando a internet cair, sincronizando o lote depois via Service Workers.
  • Frontend Reativo: Substitua o “polling” na SEFAZ por Webhooks + WebSockets. O usuário não precisa atualizar a página; a tela pisca em verde assim que a SEFAZ autoriza o envio.

Ampliando para Logística (MDF-e e CT-e)

Se o seu software em Python atende transportadoras, o PyNFe já está atualizado para a versão 3.00 do MDF-e (Manifesto Eletrônico) e CT-e. Através dele, é possível automatizar desde a emissão do Manifesto até o encerramento da viagem e a inclusão de novos condutores de forma programática.

  • Instalação
pip install pynfe

Instalar versão de desenvolvimento:

pip install https://github.com/TadaSoftware/PyNFe/archive/refs/heads/main.zip

Opcional para NFS-e:

pip install --user -r https://github.com/TadaSoftware/PyNFe/blob/main/requirements-nfse.txt
Exemplos de uso
  • Status da consulta
from pynfe.processamento.comunicacao import ComunicacaoSefaz
certificado = "/home/user/certificado.pfx"
senha = 'senha'
uf = 'pr'
homologacao = True
con = ComunicacaoSefaz(uf, certificado, senha, homologacao)
xml = con.status_servico('nfe')
print(xml.text)

Mais exemplos no Wiki

Testes

python -m unittest
Fiapos

Instalação: pip install ruff Checar lint: ruff check . Formatar:ruff format .

Documentação

Suporte

Se você tiver qualquer problema ou sugestão, abra um problema aqui ou comece uma discussão sobre um assunto aqui .

Quem utiliza PyNFe

Lista de empresas/projetos que utilizam a lib PyNFe

  • Link da lista aqui .
  • Sinta-se livre para incluir o nome da empresa/projeto na lista.

Perguntas Frequentes (FAQ): NF-e vs NFC-e

Qual a diferença básica entre NF-e e NFC-e?

A NF-e (Nota Fiscal Eletrônica – Modelo 55) é usada principalmente para operações de compra e venda entre empresas (B2B), devoluções, exportações e transferências. Já a NFC-e (Nota Fiscal de Consumidor Eletrônica – Modelo 65) é voltada para a venda direta ao consumidor final (B2C) no varejo físico, substituindo o antigo cupom fiscal e o ECF.

Qual certificado digital devo usar no meu servidor de emissão?

Para sistemas automatizados (ERPs e APIs na nuvem), o Certificado A1 é o mais recomendado. Ele é um arquivo digital (geralmente .pfx) que pode ser instalado diretamente no servidor, permitindo assinaturas simultâneas e automáticas sem a necessidade de dispositivos físicos (tokens ou smartcards), ao contrário do modelo A3.

O que acontece se a internet cair durante uma venda com NFC-e?

Diferente da NF-e, a NFC-e permite a emissão em Contingência Offline. O software gera o documento, imprime o DANFE para o cliente e, assim que a conexão for restabelecida (geralmente em um prazo de 24h), o XML deve ser transmitido para a SEFAZ para autorização definitiva.

Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade dedicado a linguagens de programação, banco de dados, DevOps, Internet das Coisas (IoT), tecnologias da Indústria 4.0, cibersegurança e startups. Com curadoria de conteúdos de qualidade, o projeto é mantido por Ramos de Souza Janones.

Mais recentes

Como aprender a programar, um guia definitivo

Última atualização em 23/04/2026. Guia completo sobre: Como aprender a programar. Espero que este “guia” ou “manifesto”, como prefiro chamar, seja...

Stream Deck para Desenvolvedores: o Console de Comando do Futuro

Esqueça os streamers. Descubra como o Stream Deck se tornou o hardware essencial para Engenheiros de IA e Full...

Como Usar o Skills in Chrome no Brasil: Tutorial Completo de IA

A inteligência artificial já faz parte do nosso fluxo de trabalho, mas ter que reescrever os mesmos prompts repetidamente...

Context Engineering: Como Arquitetar Dados para LLMs e RAG

Na edição desta newsletter intitulada “Engenharia de Prompt: Não é só mais uma buzzword“: https://www.linkedin.com/pulse/engenharia-de-prompt-n%C3%A3o-%C3%A9-s%C3%B3-mais-uma-buzzword-de-souza-janones-tpkxf tratei sobre o tema...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

Aprender Idiomas com Google Tradutor: Na Prática

O Google está lançando um novo recurso experimental com tecnologia de IA no Google Tradutor, projetado para ajudar as...

Comunidades Internacionais de Desenvolvedores

Descubra as melhores comunidades internacionais de devs para 2026: GitHub, Stack Overflow, Discord e mais. Comparativo de salários Brasil vs. exterior e guia de carreira remota.

Mais Lidos

Aprenda a Programar Gratuitamente: Guia Definitivo

Antes de iniciar este artigo, é importante a leitura...

Comandos SQL: 21 Comandos Essenciais para Programadores

Selecionamos 21 comandos e instruções SQL essenciais o qual...

Guia de Boas Práticas no Node.js: Escreva Código Profissional

Quer elevar o nível do seu código? Aprenda as...

Validadores de Blockchain: Ferramentas de Suporte em Cloud

O novo serviço de Google Cloud parecia estar prestes...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

Você vai gostarrelacionados
Continue aprendendo

E-Zine Dev Ramos

Quer dominar arquitetura e IA?

Junte-se a +10.000 profissionais. Receba semanalmente estratégias de Node.js, React e IA que nunca publicamos no blog.

Assinar Gratuitamente Zero spam. Cancele quando quiser.