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ável2: imunidade3: exportação de serviço4: 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.
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