Rejeição 588: Não é permitida a presença de caracteres de edição no início/fim da mensagem ou entre as tags da mensagem
Descrição oficial da SEFAZ: Não é permitida a presença de caracteres de edição no início/fim da mensagem ou entre as tags da mensagem
O que significa
A SEFAZ encontrou caracteres de edição — quebra de linha, tabulação, retorno de carro, espaços de indentação — no início, no fim ou entre as tags da mensagem. O XML transmitido tem que ser uma linha contínua, sem formatação.
Por que acontece
Quase sempre é XML "bonitinho" (pretty print / indentado) sendo enviado, porque alguém gravou o arquivo formatado para leitura humana e mandou esse mesmo conteúdo. Também ocorre com BOM no início do arquivo, ou com CR/LF sobrando ao concatenar o XML dentro do envelope SOAP.
Como resolver
Retire toda a formatação entre as tags e envie o XML em linha única, sem BOM e sem quebras no início/fim. Faça isso antes de assinar: se você minificar depois da assinatura, o digest não bate mais e a nota cai em erro de assinatura. Confira o conteúdo real que vai no envelope, não o arquivo salvo em disco para conferência.
Como evitar
Guarde o XML formatado só para leitura e mantenha o de transmissão sempre em linha única, gerado direto pela rotina de envio.