← Blog
NFS-e NacionalRejeiçãoXMLIntegração

Rejeição E1235 na NFS-e Nacional: o XML não passou no schema. Os formatos que mais derrubam

· atualizado em · 6 min de leitura

A E1235 é a rejeição de quem está integrando: o XML enviado não passou na validação do schema (XSD) do leiaute nacional. Não é regra de negócio, é forma: um elemento veio com formato, tamanho ou posição que o schema não aceita. A mensagem traz o detalhe técnico do validador, como Pattern constraint failed ou has invalid child element, e é ele que diz onde olhar. Abaixo, os casos que encontramos ao integrar com o Sistema Nacional de verdade, cada um confirmado pela resposta real.

1. Data e hora de emissão sem fuso, ou com milissegundos

O dhEmi exige data e hora com o deslocamento de fuso explícito, sem milissegundos e sem o Z de UTC: 2026-10-08T14:30:00-03:00. O formato que a maioria das linguagens produz por padrão (2026-10-08T17:30:00.000Z) é recusado. Gere a data já no fuso de Brasília, com o deslocamento.

2. Competência sem os traços

O dCompet vai como AAAA-MM-DD, com hífens. Há documentação de terceiros que sugere AAAAMMDD; o schema real recusa. Só o teste contra o Sistema Nacional revelou o formato certo.

3. Identificador com tamanho errado

Os identificadores (da DPS, dos eventos) têm tamanho e composição fixos. Num caso real, o identificador de um pedido de evento ganhava um sufixo sequencial a mais e ficava com 61 caracteres: E1235 por padrão. Monte o identificador exatamente como o leiaute descreve, e confira o comprimento.

4. Assinatura no lugar errado

Em NF-e e CT-e, é comum a assinatura ficar dentro do elemento assinado. Em alguns documentos do leiaute nacional da NFS-e, como o pedido de registro de evento, o schema espera a assinatura depois dele, como irmã, e a recusa vem como invalid child element Signature. Leia no XSD onde a Signature entra em cada documento.

5. Campo faltando ou fora de ordem

Cada grupo da DPS tem uma sequência fixa de campos no schema. Quando falta um obrigatório, ou um campo vem antes do lugar dele, a mensagem do validador nomeia o campo seguinte, não o que falta: sem o tribISSQN, por exemplo, a recusa diz que o tpRetISSQN"não era esperado". É por isso que esse erro confunde tanto. A leitura certa é: o schema esperava outro campo antes daquele. No grupo tribMun, a ordem é tribISSQN, cPaisResult, tpImunidade, exigSusp, BM, tpRetISSQN e pAliq, e só o primeiro e o tpRetISSQN são obrigatórios.

Como depurar uma E1235

  • Leia o detalhe da mensagem: ele nomeia o elemento e o tipo do XSD que falhou.
  • Valide o XML contra o XSD oficial antes de enviar, no mesmo build que gera o XML, ou cole no validador de XML da DPS, que mostra o grupo onde está o erro, a ordem dos campos dele e os valores aceitos. Veja como ler o resultado.
  • Compare com um XML de exemplo autorizado, elemento a elemento, na ordem do schema.
  • Teste na produção restrita: é o único validador que diz a verdade sobre o schema em uso.
Passou da E1235 e veio outro código? Daí em diante são regras de negócio, explicadas uma a uma na consulta de rejeições da NFS-e Nacional.

Perguntas frequentes

O que é a rejeição E1235?

É a recusa por falha de schema: algum elemento do XML veio num formato, tamanho ou posição que o XSD do leiaute nacional não aceita. A mensagem traz o detalhe técnico, como Pattern constraint failed ou invalid child element.

Por que a E1235 aponta um campo que está certo?

Porque, quando falta um campo obrigatório ou outro vem fora de ordem, o validador do schema reclama do campo que apareceu no lugar errado, e não do que faltou. Confira a ordem do grupo e o campo que deveria vir antes.

Qual o formato de data e hora da DPS?

Data e hora com o fuso explícito, como 2026-10-08T14:30:00-03:00, sem milissegundos e sem o Z de UTC. A data de competência vai como AAAA-MM-DD.

Prefere não montar XML? A API de emissão da Sudrel recebe JSON, monta e assina a DPS e devolve a rejeição do Sistema Nacional explicada em português.

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