Resumo
Introdução
O XML é o formato de dados fundamental para a Nota Fiscal Eletrônica. Cada NF-e é representada por um documento XML que segue uma estrutura padronizada definida pela SEFAZ.
Neste guia, vamos detalhar cada parte da estrutura do XML de NF-e, explicando as tags obrigatórias, opcionais e suas finalidades.
Estrutura Geral
<?xml version="1.0" encoding="UTF-8"?> <NFe xmlns="http://www.portalfiscal.inf.br/nfe"> <infNFe Id="NFe12345678901234567890123456789012345678901234"> <ide>...</ide> <emit>...</emit> <dest>...</dest> <det NItem="1">...</det> <total>...</total> <transp>...</transp> <infAdic>...</infAdic> </infNFe> <Signature>...</Signature> </NFe>
Tags Principais
<NFe>
Tag raiz que contém todo o documento.
Atributos:
xmlns: Namespace do XML (obrigatório)
<infNFe>
Informações da NF-e.
Atributos:
Id: Chave de acesso (44 dígitos) + dígito verificador
<ide>
Identificação da NF-e.
Campos obrigatórios:
cUF: Código da UF (2 dígitos)cNF: Código numérico aleatório (8 dígitos)natOp: Natureza da operaçãomod: Modelo do documento (55 para NF-e, 65 para NFC-e)serie: Série do documentonNF: Número do documentotpEmis: Forma de emissãodhEmi: Data e hora de emissãotpAmb: Ambiente (1=Produção, 2=Homologação)finNF: Finalidade (1=Normal, 2=Complementar, 3=Ajuste)procEmi: Processo de emissãoverProc: Versão do processo
<emit>
Dados do emitente.
Campos obrigatórios:
CNPJ: CNPJ do emitentexNome: Razão socialxFant: Nome fantasiaenderEmit: Endereço do emitenteIE: Inscrição EstadualCRT: Código de Regime Tributário
<dest>
Dados do destinatário.
Campos obrigatórios (para NF-e):
CNPJouCPF: CNPJ ou CPF do destinatárioxNome: Razão social ou nomeenderDest: Endereço do destinatárioIE: Inscrição Estadual (obrigatório para CNPJ)
<det>
Detalhamento dos produtos/serviços.
Atributos:
NItem: Número do item (1, 2, 3, ...)
Subtags:
prod: Dados do produtoimposto: Dados do imposto
<prod>
Dados do produto.
Campos obrigatórios:
cProd: Código do produtocEAN: Código de barras (GTIN)xProd: Descrição do produtoNCM: Código NCMCFOP: Código CFOPuCom: Unidade de comercializaçãoqCom: QuantidadevUnCom: Valor unitáriovProd: Valor total do produto
<imposto>
Dados dos impostos.
Subtags comuns:
ICMS: Imposto sobre Circulação de MercadoriasIPI: Imposto sobre Produtos IndustrializadosPIS: Programa de Integração SocialCOFINS: Contribuição para Financiamento da Seguridade Social
<total>
Totais da NF-e.
Campos obrigatórios:
ICMSTot: Totais do ICMSvProd: Valor total dos produtosvFrete: Valor total do fretevSeg: Valor total do segurovDesc: Valor total do descontovII: Valor total do IIvIPI: Valor total do IPIvPIS: Valor total do PISvCOFINS: Valor total do COFINSvNF: Valor total da NF-e
<transp>
Dados do transporte.
Campos obrigatórios:
modFrete: Modalidade do frete (0=Por conta do emitente, 1=Por conta do destinatário)
<infAdic>
Informações adicionais.
Campos comuns:
infAdFisco: Informações ao fiscoinfCpl: Informações complementares ao contribuinte
Campos Opcionais Importantes
Dados do Destinatário Opcional
Para operações com consumidor final, o destinatário pode ser omitido ou conter apenas o CPF.
Informações de Transporte
modFrete: Obrigatório apenas para operações com transportetransporta: Dados da transportadoravol: Dados dos volumes transportados
Dados Adicionais
infAdFisco: Informações relevantes para o fiscoinfCpl: Informações complementares (até 5000 caracteres)
Validação do XML
Validação de Schema
Sempre valide o XML contra o schema XSD oficial:
# Usando xmllint xmllint --schema nfe_v4.00.xsd nfe.xml --noout
Validação de Regras de Negócio
Além do schema, valide:
- Tipos de dados: Datas, valores, CNPJ/CPF
- Regras de cálculo: Totais, impostos
- Combinações: CFOP com UF de origem/destino
- Obrigatoriedades: Campos condicionais
Exemplo Completo
<?xml version="1.0" encoding="UTF-8"?> <NFe xmlns="http://www.portalfiscal.inf.br/nfe"> <infNFe Id="NFe352404123456780001955500100000012312345678901234"> <ide> <cUF>35</cUF> <cNF>12345678</cNF> <natOp>VENDA</natOp> <mod>55</mod> <serie>1</serie> <nNF>123</nNF> <tpEmis>1</tpEmis> <dhEmi>2024-02-18T10:30:00-03:00</dhEmi> <tpAmb>1</tpAmb> <finNF>1</finNF> <procEmi>0</procEmi> <verProc>1.0</verProc> </ide> <emit> <CNPJ>12345678000195</CNPJ> <xNome>Empresa Teste LTDA</xNome> <enderEmit> <xLgr>Rua Teste</xLgr> <nro>123</nro> <xCpl>Sala 1</xCpl> <xBairro>Centro</xBairro> <cMun>3550308</cMun> <xMun>São Paulo</xMun> <UF>SP</UF> <CEP>01001000</CEP> </enderEmit> <IE>123456789012</IE> <CRT>1</CRT> </emit> <dest> <CNPJ>98765432000110</CNPJ> <xNome>Cliente Teste LTDA</xNome> <enderDest> <xLgr>Rua Cliente</xLgr> <nro>456</nro> <xBairro>Jardim</xBairro> <cMun>3550308</cMun> <xMun>São Paulo</xMun> <UF>SP</UF> <CEP>01002000</CEP> </enderDest> <IE>987654321098</IE> </dest> <det NItem="1"> <prod> <cProd>001</cProd> <cEAN>SEM GTIN</cEAN> <xProd>Produto Teste</xProd> <NCM>12345678</NCM> <CFOP>5102</CFOP> <uCom>UN</uCom> <qCom>10.0000</qCom> <vUnCom>100.00</vUnCom> <vProd>1000.00</vProd> </prod> <imposto> <ICMS> <ICMS00> <orig>0</orig> <CST>00</CST> <vBC>1000.00</vBC> <pICMS>18.00</pICMS> <vICMS>180.00</vICMS> </ICMS00> </ICMS> </imposto> </det> <total> <ICMSTot> <vProd>1000.00</vProd> <vFrete>0.00</vFrete> <vSeg>0.00</vSeg> <vDesc>0.00</vDesc> <vII>0.00</vII> <vIPI>0.00</vIPI> <vPIS>16.50</vPIS> <vCOFINS>76.00</vCOFINS> <vNF>1000.00</vNF> </ICMSTot> </total> <transp> <modFrete>0</modFrete> </transp> </infNFe> </NFe>
Boas Práticas
- Valide sempre: Use nosso Validador XML antes de enviar
- Mantenha o schema atualizado: Verifique versões na SEFAZ
- Use codificação UTF-8: Evite problemas de caracteres
- Documente campos customizados: Use
<infAdic>adequadamente - Teste em homologação: Nunca envie XMLs de teste para produção
Conclusão
Conhecer a estrutura do XML de NF-e é fundamental para desenvolvedores fiscais. Com essa compreensão, você pode criar, validar e depurar XMLs de forma eficiente.
Use nossas ferramentas para validar, formatar e assinar XMLs, economizando tempo e evitando erros.
Pronto para colocar em prática?
Use nossas ferramentas gratuitas para validar XMLs, gerenciar certificados e muito mais. Tudo processado localmente no seu navegador.
Explorar ferramentasArtigos Relacionados
Como Resolver Erros Comuns de Validação XML na SEFAZ
Lista completa de erros de validação XML na SEFAZ com soluções práticas. Aprenda a identificar e corrigir os erros mais comuns.
Ler maisTutorial: Como Assinar XML para Envio de NF-e na SEFAZ
Guia passo a passo para assinar XMLs de NF-e usando certificado digital. Entenda XMLDSig, canonização e processos de assinatura.
Ler mais