fiscal-mcp / rejeições / 225
Falha no schema XML — o arquivo não obedece ao leiaute.
O XML não passou no XSD da versão declarada em infNFe/@versao. Isso é leiaute, não regra de negócio: elemento faltando, elemento fora da ordem que o schema exige, ou valor fora do tipo do campo. A mensagem completa da SEFAZ costuma trazer o elemento culpado — e é justamente a parte que muita integração descarta antes de gravar no log.
Valor monetário gravado sem as duas casas decimais que o tipo do campo exige. Passa no seu código, não passa no XSD.
o que foi transmitido
<prod>
<cProd>P001</cProd>
<xProd>Produto de exemplo</xProd>
<vUnCom>125.00</vUnCom>
<vProd>250</vProd>
</prod>
o que a SEFAZ aceita
<prod>
<cProd>P001</cProd>
<xProd>Produto de exemplo</xProd>
<vUnCom>125.00</vUnCom>
<vProd>250.00</vProd>
</prod>
Exemplo mínimo e fictício. Onde aparece CNPJ ou chave de acesso, o número não é de empresa nenhuma — nem passa no próprio dígito verificador.
Valide o XML contra o XSD da versão declarada antes de transmitir. A mensagem completa da SEFAZ costuma indicar o elemento culpado.
Tudo aqui roda na sua máquina, sem certificado e sem enviar nada para lugar nenhum.
# o que a SEFAZ quis dizer
fiscal-mcp rejeicao 225
{
"ok": true,
"codigo": "225",
"significa": "Falha no schema XML — o arquivo não obedece ao leiaute.",
"acao": "Valide o XML contra o XSD da versão declarada antes de transmitir. A mensagem completa da SEFAZ costuma indicar o elemento culpado.",
"reversivel": true
}
fiscal-mcp validar nota.xml
Pega parte dos casos — as regras de formato conferem os campos monetários. Validação completa por XSD ainda não está no pacote: está no roadmap, e até lá o XSD oficial do Portal da NF-e é a referência.
A mensagem que chega da SEFAZ muda de UF para UF e de versão para versão do Manual de Orientação do Contribuinte — o que não muda é o código. O texto acima é o significado consolidado no catálogo do fiscal-mcp, não a transcrição literal de uma resposta.
Se a sua veio diferente, ou se o campo que resolveu foi outro, abra uma issue — o catálogo é um YAML de umas poucas linhas, e é assim que ele fica melhor.