NF-e e CT-e
Como validar o XML do CT-e: schema, chave e autenticidade
Validar o XML do CT-e responde a três perguntas diferentes: o arquivo está bem formado, obedece ao schema da SEFAZ e corresponde a um documento realmente autorizado? Veja como checar cada uma.
"Validar o XML" parece uma coisa só, mas são três perguntas diferentes — e quem mistura as três procura resposta no lugar errado.
1. O arquivo está bem formado?
É a checagem de sintaxe: tags abertas e fechadas, aninhamento correto, encoding declarado batendo com o conteúdo. Abra o arquivo em qualquer editor que entenda XML — se ele reclama antes de você fazer qualquer coisa, o problema é este. Normalmente é encoding trocado (acentos corrompidos) ou arquivo truncado.
2. Obedece ao schema da SEFAZ?
Aqui entra o contrato do documento. O XSD do CT-e define quais campos existem, quais são obrigatórios, em que ordem aparecem e que formato cada um aceita. Quando a validação falha, a mensagem aponta a tag culpada — procure por trechos como cvc-complex-type (estrutura), cvc-datatype-valid (tipo errado) ou cvc-maxLength-valid (texto longo demais).
Valide sempre contra o XSD da versão correta. Boa parte dos falsos negativos vem de validar um XML novo contra um schema antigo — o arquivo está certo, o validador é que está desatualizado. Com os campos de IBS e CBS entrando no layout, isso ficou mais comum.
3. É um documento realmente autorizado?
Esta é a que mais importa para quem recebe CT-e de terceiros, e a única que o arquivo sozinho nunca responde. Um XML bem formado e válido pode representar um documento que nunca foi autorizado, ou que foi cancelado depois.
A prova está na consulta pela chave de acesso de 44 posições, no portal nacional do CT-e. Se o documento aparece autorizado, com os mesmos valores, ele existe. Se aparece cancelado ou denegado, você tem um problema real — e o XML continua "válido" do ponto de vista técnico.
Regra prática: schema responde "o arquivo está bem construído?". Só a consulta responde "o documento existe e está valendo?".
O atalho que dispensa as três
Existe um caminho que torna a validação desnecessária na maior parte dos casos: não receber o XML de terceiros — buscá-lo na fonte.
O serviço de Distribuição de DF-e da SEFAZ entrega os documentos diretamente ao CNPJ que participa da operação, autenticados pela origem. Um CT-e que veio de lá é, por construção, real, íntegro e no layout vigente. Não há o que validar.
O NFe/CTe Downloader consulta esse serviço com o seu certificado digital e devolve os XMLs autenticados de NF-e e CT-e, os PDFs (DANFE e DACTE) e uma planilha com uma linha por documento — incluindo a situação de cada um, com os eventos de cancelamento junto.
Erros comuns e o que significam
- Válido no portal mas falha ao importar — o sistema de destino usa layout antigo. Problema do fornecedor do software, não do arquivo.
- Acentos corrompidos — encoding. O arquivo foi salvo fora do UTF-8 declarado no cabeçalho.
- Chave não encontrada — chave digitada errada, ou documento que nunca foi autorizado.
- Autorizado mas cancelado depois — o XML segue íntegro; o que mudou foi a situação. Por isso a situação precisa entrar na conferência, e não só o valor.