Jump to content

Estrutura do XML da NF-e


Postagens Recomendadas

Olá pessoal, tudo bem?

Neste tópico vamos mostrar a estrutura básica do XML da Nota Fiscal Eletrônica - NF-e.

 

Segundo o manual do contribuinte o conceito de NF-e é:

"A Nota Fiscal Eletrônica (NF-e) é um documento de existência exclusivamente digital, emitido
e armazenado eletronicamente, com o intuito de documentar uma operação de circulação de
mercadorias ou prestação de serviços, no campo de incidência do ICMS, cuja validade jurídica
é garantida por duas condições necessárias: a assinatura digital do emitente e a Autorização
de Uso fornecida pela administração tributária do domicílio do contribuinte."

 

O padrão de documento digital adotado pela SEFAZ foi o XML (eXtensible Markup Language) que foi projetado para armazenar e transportar dados e para ser legível por humanos e por máquinas.

 

Um XML é formado por TAGS que são elementos de marcação que possuem nomes específicos e onde os valores de cada elemento ficam armazenados entre as TAGS, abaixo um exemplo da TAG "preco" cujo valor é "29.99".

<preco>29.99</preco>

 

Para saber mais sobre as TAGS e outros elementos representes em um arquivo XML recomendo o tutorial da W3Schools.

 

Abaixo vamos mostrar cada parte que compõe um XML de NF-e, e ao final o exemplo do XML completo.

 

Todo XML de NF-e é composto por duas TAGS principais:

<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
  <infNFe Id="NFe41220661409790000158551220000095681046404143" versao="4.00">
    // Aqui dentro as demais Tags com as informações gerais da NFe
  </infNFe>
</NFe>  

 A TAG <NFe> é a tag principal e a TAG <infNFe> possui o ID da NF-e e todas as demais TAGS com toda a informação da NF-e.

 

Informações de identificação da NF-e:

Possui os dados básicos de identificação da nota fiscal eletrônica, série, número, data de emissão, tipo da nota fiscal, natureza da operação entre outros campos necessários para seu processamento.

<ide>
	<cUF>41</cUF>
	<cNF>04640414</cNF>
	<natOp>VENDA DE MERCADORIA ADQ. DE TERCEIRO - PF E PJ NAO CONTRIBUI</natOp>
	<mod>55</mod>
	<serie>122</serie>
	<nNF>9568</nNF>
	<dhEmi>2022-06-11T10:29:51-03:00</dhEmi>
	<dhSaiEnt>2022-06-11T10:29:51-03:00</dhSaiEnt>
	<tpNF>1</tpNF>
	<idDest>2</idDest>
	<cMunFG>4115200</cMunFG>
	<tpImp>1</tpImp>
	<tpEmis>1</tpEmis>
	<cDV>3</cDV>
	<tpAmb>2</tpAmb>
	<finNFe>1</finNFe>
	<indFinal>1</indFinal>
	<indPres>2</indPres>
	<indIntermed>1</indIntermed>
	<procEmi>0</procEmi>
	<verProc>TestesTecno</verProc>
</ide>

 

Dados do Emitente:

Possui os dados de identificação relativos a empresa emitente da NF-e.

<emit>
	<CNPJ>61409790000158</CNPJ>
	<xNome>TECNOSPEED TECNOLOGIA</xNome>
	<xFant>TECNOSPEED TECNOLOGIA</xFant>
	<enderEmit>
		<xLgr>RUA DO POVO</xLgr>
		<nro>711</nro>
		<xBairro>parque petrobras</xBairro>
		<cMun>4115200</cMun>
		<xMun>MARINGA</xMun>
		<UF>PR</UF>
		<CEP>87020015</CEP>
		<cPais>1058</cPais>
		<xPais>BRASIL</xPais>
		<fone>4432222222</fone>
	</enderEmit>
	<IE>5144917698</IE>
	<CRT>3</CRT>
</emit>

 

Dados do Destinatário:

Possui os dados de identificação relativos ao destinatário da NF-e, ou seja, para quem está sendo emitida a nota.

<dest>
	<CPF>65667239434</CPF>
	<xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome>
	<enderDest>
		<xLgr>TRAV VICENTE SILVEIRA</xLgr>
		<nro>N 40</nro>
		<xBairro>CENTRO</xBairro>
		<cMun>4308607</cMun>
		<xMun>GARIBALDI</xMun>
		<UF>RS</UF>
		<CEP>95720000</CEP>
		<cPais>1058</cPais>
		<xPais>BRASIL</xPais>
		<fone>5432222222</fone>
	</enderDest>
	<indIEDest>9</indIEDest>
</dest>

 

Produtos e Impostos:

Possui os dados detalhados dos produtos e impostos que estão na NF-e. Esse grupo possui 3 TAGS principais que descrevem:

  1. o número de itens:  TAG <det nItem="1"> (máximo de 990 segundo manual do contribuinte) 
  2. produtos: TAG <prod>
  3. impostos: TAG <imposto> (que fica dentro da TAG <prod>)

 

<det nItem="1">
	<prod>
		<cProd>874748</cProd>
		<cEAN>SEM GTIN</cEAN>
		<cBarra>999999999999999999999999999999</cBarra>
		<xProd>Ravera</xProd>
		<NCM>21069030</NCM>
		<CFOP>6108</CFOP>
		<uCom>UN</uCom>
		<qCom>1</qCom>
		<vUnCom>98.50</vUnCom>
		<vProd>98.50</vProd>
		<cEANTrib>SEM GTIN</cEANTrib>
		<uTrib>UN</uTrib>
		<qTrib>1</qTrib>
		<vUnTrib>98.5000</vUnTrib>
		<indTot>1</indTot>
		<veicProd>
			<tpOp>0</tpOp>
			<chassi>12345678912345678</chassi>
			<cCor>251</cCor>
			<xCor>Prata</xCor>
			<pot>120</pot>
			<cilin>500</cilin>
			<pesoL>2.0000</pesoL>
			<pesoB>3.0000</pesoB>
			<nSerie>321</nSerie>
			<tpComb>16</tpComb>
			<nMotor>654321</nMotor>
			<CMT>8.0000</CMT>
			<dist>3</dist>
			<anoMod>2015</anoMod>
			<anoFab>2015</anoFab>
			<tpPint>A</tpPint>
			<tpVeic>1</tpVeic>
			<espVeic>1</espVeic>
			<VIN>N</VIN>
			<condVeic>1</condVeic>
			<cMod>061210</cMod>
			<cCorDENATRAN>10</cCorDENATRAN>
			<lota>5</lota>
			<tpRest>0</tpRest>
		</veicProd>
	</prod>
	<imposto>
		<ICMS>
			<ICMS51>
				<orig>0</orig>
				<CST>51</CST>
				<modBC>0</modBC>
				<vBC>98.50</vBC>
				<pICMS>7.00</pICMS>
				<vICMS>6.90</vICMS>
				<pFCPDif>0.00</pFCPDif>
				<vFCPDif>0.00</vFCPDif>
				<vFCPEfet>0.00</vFCPEfet>
			</ICMS51>
		</ICMS>
		<ISSQN>
			<vBC>0.01</vBC>
			<vAliq>12</vAliq>
			<vISSQN>0.01</vISSQN>
			<cMunFG>4115200</cMunFG>
			<cListServ>01.01</cListServ>
			<indISS>1</indISS>
			<indIncentivo>1</indIncentivo>
		</ISSQN>
		<PIS>
			<PISAliq>
				<CST>01</CST>
				<vBC>98.50</vBC>
				<pPIS>0.65</pPIS>
				<vPIS>6.90</vPIS>
			</PISAliq>
		</PIS>
		<COFINS>
			<COFINSAliq>
				<CST>01</CST>
				<vBC>98.50</vBC>
				<pCOFINS>3.00</pCOFINS>
				<vCOFINS>2.96</vCOFINS>
			</COFINSAliq>
		</COFINS>
		<ICMSUFDest>
			<vBCUFDest>98.50</vBCUFDest>
			<vBCFCPUFDest>98.50</vBCFCPUFDest>
			<pFCPUFDest>0.00</pFCPUFDest>
			<pICMSUFDest>17.00</pICMSUFDest>
			<pICMSInter>12.00</pICMSInter>
			<pICMSInterPart>100.00</pICMSInterPart>
			<vFCPUFDest>0.00</vFCPUFDest>
			<vICMSUFDest>9.85</vICMSUFDest>
			<vICMSUFRemet>0.00</vICMSUFRemet>
		</ICMSUFDest>
	</imposto>
</det>

 

Valores Totais:

Possui os dados totalizados relativos aos valores de todos os produtos e impostos da NF-e.

<total>
	<ICMSTot>
		<vBC>98.50</vBC>
		<vICMS>6.90</vICMS>
		<vICMSDeson>0.00</vICMSDeson>
		<vFCPUFDest>0.00</vFCPUFDest>
		<vICMSUFDest>9.85</vICMSUFDest>
		<vICMSUFRemet>0.00</vICMSUFRemet>
		<vFCP>0.00</vFCP>
		<vBCST>0.00</vBCST>
		<vST>0.00</vST>
		<vFCPST>0.00</vFCPST>
		<vFCPSTRet>0.00</vFCPSTRet>
		<vProd>98.50</vProd>
		<vFrete>0.00</vFrete>
		<vSeg>0.00</vSeg>
		<vDesc>0.00</vDesc>
		<vII>0.00</vII>
		<vIPI>0.00</vIPI>
		<vIPIDevol>0.00</vIPIDevol>
		<vPIS>6.90</vPIS>
		<vCOFINS>2.96</vCOFINS>
		<vOutro>0.00</vOutro>
		<vNF>98.50</vNF>
	</ICMSTot>
</total>

 

Informações do Transporte:

Possui os dados relativos ao transporte da NF-e.

<transp>
	<modFrete>9</modFrete>
	<transporta>
		<CNPJ>61409790000158</CNPJ>
	</transporta>
	<retTransp>
		<vServ>1.00</vServ>
		<vBCRet>1.00</vBCRet>
		<pICMSRet>1.00</pICMSRet>
		<vICMSRet>1.00</vICMSRet>
		<CFOP>5101</CFOP>
		<cMunFG>4115200</cMunFG>
	</retTransp>
	<veicTransp>
		<placa>XXXX999</placa>
		<UF>PR</UF>
	</veicTransp>
	<reboque>
		<placa>XXXX999</placa>
		<UF>PR</UF>
	</reboque>
</transp>

 

Formas de pagamento:

Possui os dados das formas de pagamento da NF-e.

<pag>
	<detPag>
		<indPag>0</indPag>
		<tPag>17</tPag>
		<vPag>98.50</vPag>
	</detPag>
</pag>

 

Informações Adicionais:

Possui um grupo onde é possível descrever informações adicionais e mensagens necessárias a emissão da NF-e.

<infAdic>
	<infCpl>IPI.ISENTO DO IPI CF.ART.81,INCISO III,DECR.N.7.212 DE 16/06/10-RIPI.COD.INSC.SUFRAMA:899999999.ICMS. </infCpl>
</infAdic>

 

Informações do Responsável Técnico:

Possui os dados do responsável técnico do sistema emissor da NF-e. 

<infRespTec>
	<CNPJ>61409790000158</CNPJ>
	<xContato>Nome do Contato</xContato>
	<email>email@empresaficticia.com.br</email>
	<fone>41999999999</fone>
	<idCSRT>01</idCSRT>
	<hashCSRT>QoasQ2FrsJ29onWrcNJ44pxDdmU=</hashCSRT>
</infRespTec>

 

Assinatura Digital:

Ao final do XML da NF-e temos a TAG <Signature> que possui a assinatura do XML da NF-e segundo o padrão XML Digital Signature definido no manual do contribuinte.

Abaixo a definição da assinatura segundo o manual do contribuinte:

"A assinatura do Contribuinte na NF-e será feita na TAG <infNFe> identificada pelo atributo Id,
cujo conteúdo deverá ser um identificador único (chave de acesso) precedido do literal ‘NFe’
para cada NF-e conforme leiaute descrito no Anexo I. O identificador único precedido do literal
‘#NFe’ deverá ser informado no atributo URI da TAG <Reference>. Para as demais
mensagens a serem assinadas, o processo é o mesmo mantendo sempre um identificador
único para o atributo Id na TAG a ser assinada."

Segue abaixo um exemplo da TAG a ser assinada:

<NFe xmlns="http://www.portalfiscal.inf.br/nfe" >
<infNFe Id="NFe41220661409790000158551220000095681046404143" versao="1.01">
...
</infNFe>

 

Abaixo a TAG de assinatura completa:

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
	<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
	<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
	<Reference URI="#NFe41220661409790000158551220000095681046404143">
		<Transforms>
			<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
			<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
		</Transforms>
		<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
		<DigestValue>XvTTNC3JNA+u2lf6dRh4EBFqClI=</DigestValue>
	</Reference>
</SignedInfo>
		<SignatureValue>KgBqaV1DaUl/h/4aTuuv/fgBXrL+ZE8S+qXir5s576/tpXfzVWswDIts/VqO/Xm6+RuQNwqFXd0SltHcreA52rU3h92LdauCpsS8oqKAjNL3W8i59/NjMO2IRWRXDg6HD8ZyGNa5CkSkUSNE9jZXUvJ0pBBZ2hK2XZRVbODgeIEBS3Tufs/lQnXe6cIKjmarD9chZFdPkpFCM7AagZFPXbJ3Eo4kaJaUFZLFn+RCsc2SqeYDFCtvakx+xw15rry+M1+nJQQ7Bqk1NCKDULBhMZg1Og2O0jIaNDTK6o9tjcUcVkj6D7qO8rABD5IurRZJ7DozM2++qj2MCKxlXSfX9g==</SignatureValue>
		<KeyInfo>
			<X509Data>
				<X509Certificate>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</X509Certificate>
			</X509Data>
		</KeyInfo>
</Signature>

 

Em anexo segue o exemplo da NF-e utilizada nesse post.

 

Chegamos ao final! Obrigado pessoal!

 

exemploEstruturaNFe.xml

  • Curtir 2
Link to comment
Compartilhe em outros sites

  • 5 months later...

Olá @everton.guelfi. Com relação a estrutura, tenho uma dúvida relacionada a um tópico especifico: informações adicionais.

Não consegui entender ainda completamente a aplicação dos campos xobs , infcpl e obsCont.

As informações que obtive foram superficiais e tenho receio de orientar o programador de forma equivocada.

1- Todos três pode ser usados em NFe e NFCe? O xOBS particularmente só achei exemplos em CT-e e me deixou na duvida se pode ser usado em outros documentos fiscais.

2- Os dois primeiros até onde entendi, são entradas únicas e o terceiro pode ter até 10 entradas, correto?

Mas quando usar o xOBS e o obsCont? 
O infCPL entendi que poderia ser usado para, por exemplo, enviar para o XML as informações de tributos e endereço do PROCON, mas apenas um campo com as informações.
Poderia usar o xobs então para entradas de informação mais eventuais que sejam necessárias no PDV, como um cliente pedir para colocar na nota fiscal dele o numero da conta da loja ou a chave PIX?

Agradeço a luz.

Saudações.

Luiz Dias

  • Curtir 1
Link to comment
Compartilhe em outros sites

Olá @Luiz Francisco Dias!

Vou tentar ajudar em relação as suas dúvidas abaixo:

1 - O campo "xOBS" não pode ser usado para NFe e NFCe, pois esse campo não consta no manual do contribuinte e nos esquemas .xsd. Para CTe o mesmo consta, acredito ser equivalente ao infCPL.

2 - O infCPL é de entrada única contendo até 5000 caracteres. O obsCont é um grupo que possui 10 entradas no máximo e é composto pelos campos (abaixo imagem do manual do contribuinte): xCampo e xTexto.

image.png

 Mas quando usar o xOBS e o obsCont?

Acredito não ter uma regra especifica, não fica claro no manual do contribuinte. O que já vi foi o uso do infCPL para descrição de regras tributárias (mensagens de isenção e etc), mas pode ser usado para observações da venda, de produtos, informações de entrega e condições de pagamento. Pois é um campo livre para o contribuinte.

O grupo obsCont onde o campo xCampo (identifica a informação) e o xTexto (o conteúdo da informação) já vi ser usado para Nome do vendedor, nome de filial ou qualquer informação que o contribuinte quer ou precise deixar informado na nota. Acredito que o PIX e PDV que você citou podem ser informados aqui também (e acredito que no infCPL também pode).

Vejo o grupo obsCont como sendo informações mais especificas e o infCPL mais gerais.

Espero ter ajudado.

Everton Guelfi

  • Ajudou! 1
Link to comment
Compartilhe em outros sites

Everton, MUITO obrigado pela resposta.

O infCPL pode ser usado para, como vc mencionou, dar informações de tributos. No caso do Rio, por exemplo, seria este texto, que já vi em XMLs:

<infCpl> Tributos Aproximados - Lei 12.741/2012 - R$

Uniao: R$ | Estado: R$ | Municipio: R$

PROCON: Av. Rio Branco, 25 | Tel. 21 151

ALERJ : Rua 1º Março, s/n | Tel. 2588-1418</infCpl>

Mas então, se no infCPL tenho informação como esta acima, que não são passíveis de usuário mudar, posso ter outro infCPL para informações gerais incluídas pelo usuário? Se sim, tem um limite para isso?

O campo xOBs teria sido  a saída mais logica, mas você confirmou que não posso usar em NFe / NFCe. 

Desde já, mais uma vez agradeço a sua atenção e disponibilidade em ajudar.

Abraço.

Luiz dias

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...