Tempo de Leitura: 6 minutos

Atualmente a emissão de nota fiscal eletrônica tem se tornado cada vez mais comum nos estabelecimentos comerciais do nosso país. Esse cenário reflete no aumento da busca por softwares capazes de realizar a emissão de documentos fiscais.

Em meio a tantos contribuintes emitindo nota fiscal a todo momento, por mais que a sua aplicação seja robusta e consiga fazer as devidas validações, ainda existe a possibilidade de, ao enviar uma nota a SEFAZ, receber a rejeição com o motivo “Rejeição: Falha no Schema XML […]”.

Neste artigo, vamos te explicar o que é Schema XML e te ensinar como identificar os dados incorretos no XML para que a sua nota seja emitida com sucesso.

O que é Schema XML

XML Schema Definition, também conhecida como XSD, é uma linguagem utilizada para validar a estrutura de documentos com formato XML através de blocos ou nós. 

Utilizando o Schema XML, é possível definir quais atributos o documento poderá receber, em qual ordem os elementos devem estar, quais os tipos de dados serão permitidos, dentre outros. Dessa forma, é mais fácil verificar, por exemplo, se o conteúdo de um determinado campo está de acordo com o padrão predefinido ou se o tipo de dado está correto.

O objetivo da utilização da XSD é garantir a clareza e padronização dos dados, para que o entendimento do conteúdo seja mútuo entre remetente e destinatário.

Estrutura do XML da NFC-e

A NFC-e segue o mesmo conceito da uma NF-e e, por isso, é necessário respeitar os padrões previstos na legislação estadual e nacional.

Um ponto importante sobre esse tema, é que algumas validações da NFC-e ficam a critério do estado emitente, portanto, pode ocorrer a situação em que contribuintes que usam a mesma aplicação para emitir notas Estados diferentes, não obtenham o mesmo retorno.

Como funcionam as validações do XML

A comunicação com o Web Service da SEFAZ é feita através de arquivos no formato XML.

Ao tentar emitir uma nota fiscal eletrônica pela sua aplicação, o que está de fato acontece é:

  • A sua aplicação envia  uma requisição para o Web Service da SEFAZ, com um arquivo XML;
  • O Web Service irá validar se o XML está válido e dentro do padrão definido no Schema XML (XSD);
  • Se for encontrada alguma inconsistência na estrutura do arquivo, ele será rejeitado por falha no Schema XML.

Quando ocorre a falha no Schema em uma NF-e/NFC-e?

A falha no Schema XML pode ocorrer pelos seguinte motivos:

Valor informado inválido 

Acontece quando o valor de uma tag é informado fora do padrão aceitável.

Por exemplo: o campo cUF que se refere ao código da UF do emitente do documento fiscal recebe obrigatoriamente dois caracteres. Se o contribuinte enviar mais de dois caracteres, ou dois caracteres que não correspondam a uma UF válida, a nota será rejeitada.

Clique aqui para consultar a tabela de códigos das UFs de acordo com o Instituto Brasileiro de Geografia e Estatística – IBGE.

Não informar elemento (campo) obrigatório

Ocorre quando não é informado um elemento obrigatório dentro de um determinado nó.

Por exemplo: o campo nItem corresponde ao número do item, ele é um elemento filho obrigatório do grupo de Detalhamento de Produtos e Serviços da NFe. Se esse campo não for informado, será retornada a rejeição.

Informar elemento (campo) em bloco (nó) incorreto

Ocorre quando o campo pertence a um determinado bloco e foi informado em outro bloco no XML.

Por exemplo: o contribuinte utilizou o “Grupo Tributação do ICMS= 00” e informou o campo modBCST, que se refere a Modalidade de determinação da BC do ICMS ST. Porém, o grupo ICMS= 00 permite apenas os campos: 

  • orig (Origem da mercadoria); 
  • CST(Código de Situação Tributária);
  • modBC (Modalidade de determinação da BC do ICMS);
  • vBC (Valor da BC do ICMS);
  • pICMS (Alíquota do ICMS);
  • vICMS (Valor do ICMS);
  • pFCP (Percentual do ICMS relativo ao Fundo de Combate à Pobreza (FCP));
  • vFCP (Valor do Fundo de Combate à Pobreza (FCP)).

Onde encontrar as regras de validação da NF-e/NFC-e

Para identificar o padrão que a SEFAZ espera receber um arquivo XML de uma Nota Fiscal Eletrônica – NF-e (modelo 55) ou de uma Nota Fiscal do Consumidor Eletrônica – NFC-e (modelo 65), é necessário conhecer o Manual de Orientação ao Contribuinte e acompanhar as Notas Técnicas com as atualizações.

O manual do contribuinte contém uma visão geral do Sistema Nota Fiscal Eletrônica. Ele deve ser a fonte primária de consulta do contribuinte, porque é através dele que obtemos todas as informações relacionadas a validação, estrutura, fluxo, leiaute etc.

Quando a SEFAZ deseja alterar ou criar uma nova regra, ela publica uma Nota Técnica sobre o tema e disponibiliza um novo pacote de liberação de esquemas com as informações atualizadas.

Essas documentações são encontradas no Portal da Nota Fiscal Eletrônica, na aba Documentos.

Como validar o XML

Se você teve uma Nota Fiscal Eletrônica – NF-e (modelo 55) rejeitada por falha no Schema XML, você pode validar o XML da nota no validador da SEFAZ RS (Validador de Mensagens do Projeto NF-e) ou no Auditor Fiscal da Tecnospeed, para identificar o que originou a rejeição. Dessa forma, será possível identificar o que está incorreto com mais rapidez.

É importante citar que o validador da SEFAZ pode ser utilizado tanto para NF-e quanto para NFC-e.

Utilizaremos a seguir o mesmo XML de uma NF-e rejeitada por falha no Schema, validando-o nas duas aplicações para que consiga visualizar a diferença entre os retornos.

Auditor Fiscal da Tecnospeed

O Auditor Fiscal da Tecnospeed tem um certo cuidado ao retornar a mensagem de erro tratada, para que o usuário consiga identificar com maior facilidade a falha ocorrida no XML. 

  • Cole o XML da nota;
  • Clique na opção Validar.
    Do lado direito, no Resultado, será apresentada a mensagem explicativa sobre o erro encontrado no XML, conforme o exemplo na imagem abaixo:

Validador de Mensagens do Projeto NF-e

O Validador de Mensagens do Projeto NF-e retorna os erros no idioma inglês, o que pode ser uma barreira para o entendimento do usuário. Segue o passo a passo para utilizá-lo:


  • Cole o XML da nota;
  • Clique na opção Validar.
    Logo abaixo do campo onde foi colado o XML, será retornado o Resultado da Validação do Schema e de Regras de Negócio com os erros encontrados, conforme a imagem abaixo.

Como interpretar as mensagens e corrigir os erros de falha no Schema por não informar elemento obrigatório ou informar elemento em nó incorreto

Usaremos como exemplo o XML validado nos dois passos anteriores. Para facilitar a nossa análise, destacamos aqui os elementos citados nos retornos e vamos utilizar apenas o nó do XML abaixo para identificar onde está o erro:

           <total>

                <ICMSTot>

                    <vBC>0.00</vBC>

                    <vICMS>0.00</vICMS>

                    <vBCST>0.00</vBCST>

                    <vST>0.00</vST>

                    <vProd>5160.00</vProd>

                    <vFrete>0.00</vFrete>

                    <vSeg>0.00</vSeg>

                    <vDesc>0.00</vDesc>

                    <vII>1.00</vII>

                    <vIPI>0.00</vIPI>

                    <vPIS>32.00</vPIS>

                    <vOutro>0.00</vOutro>

                    <vNF>5200.00</vNF>

                </ICMSTot>

            </total>

O Auditor Fiscal retornou: 

Falha de Esquema: O elemento pai: ‘ICMSTot’ não estava esperando o elemento ‘vOutro’. O elemento esperado é: ‘vCOFINS’.”. 

O Validador de Mensagens do Projeto NF-e retornou: 

“Schema XML: The element ‘ICMSTot’ in namespace ‘http://www.portalfiscal.inf.br/nfe’ has invalid child element ‘vOutro’ in namespace ‘http://www.portalfiscal.inf.br/nfe’. List of possible elements expected: ‘vCOFINS’ in namespace ‘http://www.portalfiscal.inf.br/nfe‘. Caminho: nfeProc/NFe[1]/infNFe/total/ICMSTot/vOutro/”.

 

Os dois retornos, tanto o do Auditor Fiscal quanto o do Validador de Mensagens do Projeto NF-e, estão citando os elementos ICMSTot, vOutro e vCOFINS. Porém, o elemento vCOFINS não foi informado no nó ICMSTot.

Dessa forma, vamos verificar no XML se o nó ICMSTot está correto, de acordo com o Manual de Orientação ao Contribuinte:

O Manual de Orientação ao Contribuinte indica que a ordem dos elementos no XML deve ser: vPIS, vCOFINS e vOutro, conforme a imagem abaixo:

Como podemos ver, no XML não foi informado o campo vCOFINS. Então, para resolver esse problema, basta adicioná-lo. Assim, a estrutura correta ficaria da seguinte maneira:

          <total>

                <ICMSTot>

                    <vBC>0.00</vBC>

                    <vICMS>0.00</vICMS>

                    <vBCST>0.00</vBCST>

                    <vST>0.00</vST>

                    <vProd>5160.00</vProd>

                    <vFrete>0.00</vFrete>

                    <vSeg>0.00</vSeg>

                    <vDesc>0.00</vDesc>

                    <vII>1.00</vII>

                    <vIPI>0.00</vIPI>

                    <vPIS>32.00</vPIS>

         <vCOFINS>0.00</vCOFINS>

                    <vOutro>0.00</vOutro>

                    <vNF>5200.00</vNF>

                </ICMSTot>

            </total>

Como interpretar as mensagens e corrigir os erros de falha no schema por informar valor inválido

Se enviarmos o mesmo XML com o  <vCOFINS>0.000</vCOFINS>, a nota será rejeitada, porque esse campo recebe até 13 caracteres antes da vírgula e 2 após a vírgula (13v2). Validando o XML, obtemos os seguintes retornos:

O Auditor Fiscal retornou: 

Falha de Esquema: Campo ‘vCOFINS’ possui valor inválido: ‘0.000’. O campo deve de Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais separadas por ‘.’. Exemplo: ‘10.00’.

O Validador de Mensagens do Projeto NF-e retornou: 

The ‘http://www.portalfiscal.inf.br/nfe:vCOFINS’ element is invalid – The value ‘0.000’ is invalid according to its datatype ‘http://www.portalfiscal.inf.br/nfe:TDec_1302’ – The Pattern constraint failed.

Caminho: nfeProc/NFe[1]/infNFe/total/ICMSTot/vCOFINS/

 

Para corrigir o erro, basta alterar o valor para que atenda o padrão de validação, que ficaria desta forma: <vCOFINS>0.00</vCOFINS> .

Porque é importante que sua aplicação valide os campos antes de enviar uma nota para a SEFAZ?

As documentações disponibilizadas pela SEFAZ são claras em relação às regras de validação e de padronização. Isso permite que o desenvolvedor torne o seu software mais inteligente e contribui com a redução de custos de suporte aos usuários.

Se você deseja reduzir as rejeições por falha no esquema, pegue esta dica e implemente na sua aplicação: formate o tamanho do campo, defina quais elementos pertencem a um determinado nó e defina quais campos são obrigatórios. Assim, estará eliminando a possibilidade de o usuário errar.

Suite de Componentes

 

0 ComentáriosFechar comentários

Deixe um comentário

Localização

Tecnospeed ©  2022. Feito com ❤ pelo time Tecnospeed.