📄 NF-e - Nota Fiscal Eletrônica
Modelo 55 ICMS / IPI SEFAZ AJUSTE SINIEF 07/05Documento 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)
🔧 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) -->
📦 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>
❌ 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
🔍 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
Obter A1 (arquivo) ou A3 (token/cartão) ICP-Brasil
Cadastrar na SEFAZ do estado (IE ativa)
Sistema emissor de NF-e (próprio ou terceiro)
Montar XML conforme schema, validar, assinar
Enviar via SOAP para WebService da SEFAZ
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 |
📌 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 |