📄 NF-e - Nota Fiscal Eletrônica

Modelo 55 ICMS / IPI SEFAZ AJUSTE SINIEF 07/05

Documento fiscal digital que documenta operações de circulação de mercadorias (venda, transferência, devolução, importação, exportação) entre empresas. Principal documento fiscal eletrônico do Brasil.

📋 Visão Geral

🏷️ Modelo

55 (NF-e)

🎯 Finalidade

Circulação de mercadorias

👥 Público

B2B / B2G / B2C (interestadual)

💰 Impostos

ICMS, IPI, PIS, COFINS

🏛️ Autorizador

SEFAZ do estado emitente

📄 Documento Auxiliar

DANFE (Documento Auxiliar)

🔐 Assinatura

Certificado Digital ICP-Brasil (A1/A3)

📡 Transmissão

WebService SOAP (HTTPS)

📌 Base Legal: Ajuste SINIEF 07/2005 - instituiu a NF-e nacionalmente. Convênio ICMS 110/2007 - dispensa papel. CONFAZ

🔧 Estrutura do Schema XML (XSD)

🏗️ Árvore do Schema NF-e (versão 4.00)

<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
│
├── <infNFe> <!-- Informações da NF-e (obrigatório, 1 ocorrência) -->
│   │
│   ├── <ide> <!-- GRUPO A: Identificação da NF-e -->
│   │   ├── cUF          <!-- Código UF emitente (IBGE) -->
│   │   ├── cNF          <!-- Código numérico (8 dígitos, randômico) -->
│   │   ├── natOp        <!-- Natureza da operação (ex: "Venda de mercadoria") -->
│   │   ├── mod          <!-- 55 = NF-e -->
│   │   ├── serie        <!-- Série (0-999) -->
│   │   ├── nNF          <!-- Número (1-999999999) -->
│   │   ├── dhEmi        <!-- Data/hora emissão (formato ISO 8601) -->
│   │   ├── dhSaiEnt     <!-- Data/hora saída/entrada -->
│   │   ├── tpNF         <!-- 0=Entrada / 1=Saída -->
│   │   ├── idDest       <!-- 1=Interna / 2=Interestadual / 3=Exterior -->
│   │   ├── cMunFG       <!-- Código município ocorrência -->
│   │   ├── tpImp        <!-- 1=Retrato / 2=Paisagem / 4=DANFE NFC-e -->
│   │   ├── tpEmis       <!-- 1=Normal / 2=Contingência FS / 4=DPEC / etc -->
│   │   ├── tpAmb        <!-- 1=Produção / 2=Homologação -->
│   │   ├── finNFe       <!-- 1=Normal / 2=Complementar / 3=Ajuste / 4=Devolução -->
│   │   ├── indFinal     <!-- 0=Não / 1=Consumidor final -->
│   │   ├── indPres      <!-- 0=Não se aplica / 1=Presencial / 2=Internet / etc -->
│   │   ├── indIntermed  <!-- 0=Sem intermediador / 1=Com intermediador -->
│   │   ├── procEmi      <!-- 0=Emissão própria / 1=SEFAZ / 2=Fisco -->
│   │   └── verProc      <!-- Versão do aplicativo emissor -->
│   │
│   ├── <emit> <!-- GRUPO C: Emitente (CNPJ, IE, Razão Social, Endereço) -->
│   │
│   ├── <avulsa> <!-- GRUPO D: Avulsa (opcional, uso raro) -->
│   │
│   ├── <dest> <!-- GRUPO E: Destinatário (CNPJ/CPF, IE, Endereço) -->
│   │
│   ├── <retirada> <!-- GRUPO F: Local de Retirada (opcional) -->
│   │
│   ├── <entrega> <!-- GRUPO G: Local de Entrega (opcional) -->
│   │
│   ├── <autXML>[] <!-- GRUPO GA: Autorizados p/ download XML -->
│   │
│   ├── <det>[1..990] <!-- GRUPO H: DETALHE - Itens da NF-e -->
│   │   ├── @nItem       <!-- Número sequencial do item -->
│   │   ├── <prod> <!-- GRUPO I: Produto -->
│   │   │   ├── cProd    <!-- Código interno do produto -->
│   │   │   ├── cEAN     <!-- Código de barras GTIN -->
│   │   │   ├── xProd    <!-- Descrição do produto -->
│   │   │   ├── NCM      <!-- Nomenclatura Comum Mercosul -->
│   │   │   ├── CEST     <!-- Código Especificador ST -->
│   │   │   ├── CFOP     <!-- Código Fiscal de Operação -->
│   │   │   ├── uCom     <!-- Unidade comercial -->
│   │   │   ├── qCom     <!-- Quantidade comercial -->
│   │   │   ├── vUnCom   <!-- Valor unitário -->
│   │   │   └── vProd    <!-- Valor total do produto -->
│   │   │
│   │   ├── <imposto> <!-- GRUPO M: Impostos -->
│   │   │   ├── <ICMS> <!-- GRUPO N: ICMS (00,10,20,30,40,41,50,51,60,70,90,ST) -->
│   │   │   ├── <IPI> <!-- GRUPO O: IPI -->
│   │   │   ├── <II> <!-- GRUPO P: Imposto Importação -->
│   │   │   ├── <PIS> <!-- GRUPO Q: PIS -->
│   │   │   ├── <COFINS> <!-- GRUPO S: COFINS -->
│   │   │   └── <ISSQN> <!-- GRUPO U: ISSQN (raro em NF-e) -->
│   │   │
│   │   ├── <impostoDevol> <!-- GRUPO UA: Imposto Devolvido -->
│   │   └── <infAdProd> <!-- Informações adicionais do produto -->
│   │
│   ├── <total> <!-- GRUPO W: Totais da NF-e -->
│   │   ├── <ICMSTot> <!-- Totais de ICMS (vBC, vICMS, vProd, vNF, vDesc, etc) -->
│   │   ├── <ISSQNtot> <!-- Totais de ISSQN -->
│   │   └── <retTrib> <!-- Retenções Tributárias -->
│   │
│   ├── <transp> <!-- GRUPO X: Transporte -->
│   │   ├── <modFrete> <!-- 0=Emitente / 1=Destinatário / 2=Terceiros / etc -->
│   │   ├── <transporta> <!-- Transportadora -->
│   │   ├── <veicTransp> <!-- Veículo -->
│   │   └── <vol>[] <!-- Volumes (quantidade, espécie, peso) -->
│   │
│   ├── <cobr> <!-- GRUPO Y: Cobrança (Fatura, Duplicatas) -->
│   │
│   ├── <pag> <!-- GRUPO YA: Formas de Pagamento -->
│   │   └── <detPag>[] <!-- Detalhes (tPag, vPag, CNPJ, bandeira) -->
│   │
│   ├── <infIntermed> <!-- GRUPO YB: Intermediador transação -->
│   │
│   ├── <infAdic> <!-- GRUPO Z: Informações Adicionais -->
│   │   ├── infAdFisco  <!-- Info de interesse do Fisco -->
│   │   └── infCpl      <!-- Info complementar ao consumidor -->
│   │
│   ├── <exporta> <!-- GRUPO ZA: Exportação -->
│   │
│   ├── <compra> <!-- GRUPO ZB: Compra (nota de compra) -->
│   │
│   ├── <cana> <!-- GRUPO ZC: Cana-de-açúcar (setor sucroalcooleiro) -->
│   │
│   └── <infRespTec> <!-- GRUPO ZD: Responsável Técnico -->
│
└── <infNFeSupl> <!-- Informações Suplementares (QR Code) -->
📚 Schema XSD oficial: Portal NF-e - Schemas XML

📦 Grupos do XML (Ordem de preenchimento)

Grupo Nome Ocorrência Descrição
A ide 1-1 Identificação da NF-e (chave, série, número, data)
C emit 1-1 Emitente (CNPJ, IE, Razão Social, Endereço)
E dest 1-1 Destinatário (CNPJ/CPF, IE, Endereço)
H det 1-990 Detalhe dos produtos/serviços
I prod 1-1 Dados do produto (código, NCM, CFOP, valor)
M/N imposto/ICMS 1-1 Tributos por item (ICMS, IPI, PIS, COFINS)
W total 1-1 Totais da NF-e (vNF, vICMS, vProd, etc)
X transp 1-1 Dados de transporte (frete, veículo, volumes)
YA pag 1-100 Formas de pagamento (dinheiro, cartão, PIX, boleto)

✅ Principais Regras de Validação

🔑 Chave de Acesso (44 dígitos):

  • cUF: 2 dígitos (código IBGE do estado)
  • AAMM: 4 dígitos (ano e mês da emissão)
  • CNPJ: 14 dígitos do emitente
  • mod: 2 dígitos (55 = NF-e)
  • série: 3 dígitos
  • nNF: 9 dígitos (número da nota)
  • tpEmis: 1 dígito (forma de emissão)
  • cNF: 8 dígitos (código numérico aleatório)
  • DV: 1 dígito verificador (módulo 11)

📏 Regras de Tamanho:

  • XML sem assinatura: máximo 500KB
  • XML com assinatura: máximo 1MB
  • Máximo 990 itens por NF-e
  • Cada det pode ter até 500KB

📨 Exemplo de Requisição e Retorno

📤 XML de Envio - SOAP Envelope

Enviado via POST para o WebService da SEFAZ

<?xml version="1.0" encoding="UTF-8"?>
<soap12:Envelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4">
      
      <!-- XML da NF-e completo e ASSINADO -->
      <enviNFe versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe">
        <idLote>123456789012345</idLote>
        <indSinc>0</indSinc> <!-- 0=Assíncrono / 1=Síncrono -->
        
        <NFe>
          <!-- NF-e completa com assinatura XMLDSig -->
          <infNFe Id="NFe35240112345678901234550010000000011999999999" versao="4.00">
            <!-- ... dados completos da NF-e ... -->
          </infNFe>
          <Signature>...</Signature>
        </NFe>
      </enviNFe>
      
    </nfeDadosMsg>
  </soap12:Body>
</soap12:Envelope>

🔗 URLs dos WebServices (Ambiente de Produção):

São Paulo: https://nfe.fazenda.sp.gov.br/ws/NFeAutorizacao4.asmx

Minas Gerais: https://nfe.fazenda.mg.gov.br/ws/NFeAutorizacao4.asmx

Rio de Janeiro: https://nfe.fazenda.rj.gov.br/ws/NFeAutorizacao4.asmx

🔑 Ambiente Nacional (SVC): https://www.svc.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx

✅ Exemplo de Retorno - SUCESSO (Autorização de Uso)

<?xml version="1.0" encoding="UTF-8"?>
<retEnviNFe versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe">
  <tpAmb>1</tpAmb> <!-- 1=Produção / 2=Homologação -->
  <verAplic>SP_NFE_PL_009m</verAplic>
  <cStat>103</cStat> <!-- 103 = Lote recebido com sucesso -->
  <xMotivo>Lote recebido com sucesso</xMotivo>
  <cUF>35</cUF> <!-- SP -->
  
  <infRec>
    <nRec>123456789012345</nRec> <!-- NÚMERO DO RECIBO (GUARDAR!) -->
    <tMed>1</tMed> <!-- Tempo médio de resposta: 1 segundo -->
  </infRec>
</retEnviNFe>

=====================================================
APÓS CONSULTAR O RECIBO (nRec):
=====================================================

<retConsReciNFe versao="4.00">
  <tpAmb>1</tpAmb>
  <cStat>100</cStat> <!-- 100 = Autorizado o uso da NF-e -->
  <xMotivo>Autorizado o uso da NF-e</xMotivo>
  
  <protNFe versao="4.00">
    <infProt>
      <tpAmb>1</tpAmb>
      <verAplic>SP_NFE_PL_009m</verAplic>
      <chNFe>35240112345678901234550010000000011999999999</chNFe>
      <dhRecbto>2024-01-15T14:30:01-03:00</dhRecbto>
      <nProt>935240000012345</nProt> <!-- NÚMERO DO PROTOCOLO (DEFINITIVO) -->
      <digVal>abc123def456...</digVal>
      <cStat>100</cStat>
      <xMotivo>Autorizado o uso da NF-e</xMotivo>
    </infProt>
  </protNFe>
</retConsReciNFe>
Sucesso! cStat=100 significa que a NF-e foi AUTORIZADA. O protocolo (nProt) deve ser guardado permanentemente.

❌ Exemplo de Retorno - ERRO/REJEIÇÃO

<retEnviNFe versao="4.00">
  <tpAmb>1</tpAmb>
  <cStat>204</cStat> <!-- 204 = Rejeição: Duplicidade de NF-e -->
  <xMotivo>Rejeicao: Duplicidade de NF-e</xMotivo>
  <!-- A nota já foi emitida com mesma série/número -->
</retEnviNFe>

=====================================================
OUTROS CÓDIGOS COMUNS DE ERRO:
=====================================================

215 - Rejeição: Falha no schema XML (estrutura inválida)
218 - Rejeição: NF-e já está inutilizada
226 - Rejeição: CBP informado com erro
230 - Rejeição: IE do emitente não cadastrada
236 - Rejeição: Chave de Acesso com dígito verificador inválido
238 - Rejeição: Assinatura digital inválida
301 - Rejeição: Uso Denegado (irregularidade fiscal do emitente)
302 - Rejeição: Uso Denegado (irregularidade fiscal do destinatário)
501 - Rejeição: Prazo de cancelamento excedido (24h)
516 - Rejeição: CFOP inválido para operação interestadual
539 - Rejeição: Duplicidade de NF-e (mesmo número/série)
597 - Rejeição: CFOP incompatível com natureza da operação
⚠️ Lista completa: Portal NF-e - Tabela de Códigos

🔍 Consulta NF-e pela Chave

// REQUEST: Consulta NF-e pela Chave de Acesso
<consNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">
  <tpAmb>1</tpAmb>
  <xServ>CONSULTAR</xServ>
  <chNFe>35240112345678901234550010000000011999999999</chNFe>
</consNFe>

// RESPONSE: Retorno da consulta
<retConsNFe>
  <cStat>100</cStat>
  <xMotivo>Autorizado o uso da NF-e</xMotivo>
  <protNFe>
    <nProt>935240000012345</nProt>
    <dhRecbto>2024-01-15T14:30:01-03:00</dhRecbto>
  </protNFe>
</retConsNFe>

🛠️ Como Implementar a Emissão de NF-e

1
Certificado Digital

Obter A1 (arquivo) ou A3 (token/cartão) ICP-Brasil

2
Credenciamento

Cadastrar na SEFAZ do estado (IE ativa)

3
Software

Sistema emissor de NF-e (próprio ou terceiro)

4
Gerar XML

Montar XML conforme schema, validar, assinar

5
Transmitir

Enviar via SOAP para WebService da SEFAZ

Autorização

Receber protocolo (nProt) e guardar por 5 anos

📦 Bibliotecas para Implementação:

Linguagem Biblioteca Descrição
PHP NFePHP Mais completa, todos os documentos fiscais
C# DFe.NET ZeusDFe, OpenNFe, NFeSharp
Java NF-e-Java TecnoSpeed, NFeWS
Python PyNFe Emissor NF-e em Python
Node.js node-nfe NFe.io, NFeJS
Delphi ACBr Componente nacional mais usado
💡 Dica: Use ambiente de homologação para testes. As SEFAZ disponibilizam CNPJs de teste e ambiente separado.

📌 Eventos da NF-e

Evento Código Descrição Prazo
Carta de Correção 110110 Corrige dados não fiscais (endereço, transportadora) Até o cancelamento
Cancelamento 110111 Cancela a NF-e autorizada Até 24h após autorização
Manifestação Confirmada 210200 Destinatário confirma a operação 180 dias
Manifestação Desconhecida 210220 Destinatário desconhece a operação 180 dias
EPEC 110140 Emissão em contingência SVC Imediato