← Blog
NFS-e NacionalXMLValidadorRejeiçãoIntegração

Validador de XML da DPS: como ler o resultado e corrigir campo faltando, fora de ordem ou com valor errado

· 5 min de leitura

O validador de XML da DPS confere o XML de duas formas: contra o schema oficial da NFS-e Nacional (versão 1.01, com o grupo de IBS e CBS) e contra as regras de conteúdo que a Sefin mais rejeita. Este post mostra como ler cada parte do resultado e corrigir o XML sem precisar decifrar a mensagem técnica em inglês.

Pode colar a DPS ou a NFS-e já autorizada

A DPS é o XML que o seu sistema envia. A NFS-e é o que volta autorizado, com a DPS dentro. As duas servem: se você colar a NFS-e, o validador confere a DPS que está dentro dela, que é o que foi enviado ao Sistema Nacional, e avisa isso no topo do resultado. Útil para entender por que uma nota de outro sistema saiu de um jeito, ou para comparar uma nota autorizada com a que está sendo rejeitada.

Formato do XML: onde está o erro

Os erros de schema correspondem à rejeição E1235. Para cada um, o validador mostra:

  • Onde: o caminho do grupo, como infDPS › valores › trib › tribMun. Numa NFS-e de uma linha só, com CNPJ no prestador, no tomador e no intermediário, é isso que diz qual dos três está errado.
  • O que fazer, em português: falta um campo, um campo não existe naquele grupo, está fora de ordem, ou o valor não é aceito.
  • Valores aceitos, quando o campo tem uma lista fechada, cada um com a descrição do leiaute.
  • A ordem dos campos do grupo, com o que já está no seu XML, o que falta e onde o validador parou.
  • A mensagem técnica original, recolhida, para quem quiser comparar com o log do sistema.

Exemplo: faltou o tribISSQN

Sem o campo tribISSQN, a mensagem técnica do schema diz só que o tpRetISSQN"não era esperado" ali. O validador traduz: falta o campo tribISSQN (tributação do ISSQN sobre o serviço prestado) dentro de tribMun, e no leiaute ele vem antes de tpRetISSQN. Os valores aceitos aparecem logo abaixo:

  • 1: operação tributável
  • 2: imunidade
  • 3: exportação de serviço
  • 4: não incidência

E a ordem do grupo tribMun, com o campo que falta marcado: tribISSQN (obrigatório), cPaisResult, tpImunidade, exigSusp, BM, tpRetISSQN (obrigatório) e pAliq. Os opcionais que não vieram aparecem esmaecidos.

Ordem importa. Cada grupo da DPS tem uma sequência fixa, e o mesmo campo, com o valor certo, é recusado se vier antes ou depois do lugar dele. Quando o validador diz "fora de ordem", o conteúdo pode estar certo: é a posição que está errada.

Regras do Sistema Nacional: o que o schema não pega

Um XML pode passar no schema e ainda ser rejeitado. A segunda parte do resultado confere regras de conteúdo que dá para decidir lendo o próprio XML, cada uma com o código de rejeição da Sefin:

  • Id da DPS coerente com município, inscrição, série e número.
  • Dígito verificador de CNPJ (inclusive o alfanumérico) e de CPF, a E0188.
  • Tomador igual ao prestador, a E0202.
  • Regime do Simples Nacional e regime de apuração (E0166, E0162).
  • Alíquota do ISS nos casos que não dependem do convênio do município, como a E0625.
  • Percentual aproximado de tributos (E0713) e NBS com IBS e CBS (E0322).
  • DPS sem assinatura, como aviso.

"Atenção" é diferente de "Erro": são casos que dependem de algo fora do XML, como o convênio do município com o Sistema Nacional, e que você precisa conferir. O código de cada achado leva à explicação completa na consulta de rejeições da NFS-e Nacional.

O que nenhum validador consegue garantir

Algumas regras dependem do cadastro do município no Sistema Nacional: o código de serviço que a prefeitura administra (E0312), a inscrição municipal (E0116 e E0120) e o convênio que decide a alíquota do ISS. Essas só o próprio Sistema Nacional confere. Passar no validador tira do caminho os erros de forma e os de conteúdo mais comuns, mas não garante a autorização.

Perguntas frequentes

O validador guarda o meu XML?

Não. O XML é conferido no servidor do site e descartado em seguida, sem ser gravado nem registrado em log.

Posso validar a NFS-e autorizada em vez da DPS?

Pode. O validador encontra a DPS dentro da NFS-e e confere ela, que é o XML que foi enviado ao Sistema Nacional.

O que significa "fora de ordem" no resultado?

Que o campo existe no grupo, mas veio na posição errada. Cada grupo da DPS tem ordem fixa no schema, e o resultado mostra essa ordem com o que está no seu XML e o que falta.

Prefere não montar XML? Na API de emissão da Sudrel você manda JSON, e a DPS é montada, conferida, assinada e enviada pela plataforma.

Notas recebidas por API, sem montar o robô

API e webhook com as notas do Ambiente Nacional, e ambiente de teste para integrar sem risco. Teste grátis, sem cartão.

Criar conta e testar a API