Olá, pessoal!
Se você está implementando a NFSe no Padrão Nacional e está encontrando dificuldades para obter o XML da nota após o envio, este guia foi feito para você.
Muitas vezes, a confusão acontece porque o fluxo do Padrão Nacional exige a distinção clara entre o DPS e a NFSe. Abaixo, detalhamos o fluxo correto para consultar e baixar o XML definitivo.
O Fluxo de Consulta Correto
Diferente de outros provedores, no Padrão Nacional, o ideal é realizar uma "ponte" entre a Chave do DPS e a Chave da NFSe.
1. Consulta pela Chave do DPS (42 dígitos)
O segredo para o sucesso é utilizar a Chave do DPS. Essa chave possui 42 dígitos e o ideal é que você a tenha armazenado em seu banco de dados no momento da emissão.
Delphi/Lazarus
// LIdDPS deve conter a chave de 42 dígitos do DPS
ACBrNFSeX.ConsultarDPSPorChave(LIdDPS);
2. Obtenção da NFSe através do retorno
Se a consulta do DPS for bem-sucedida, o componente receberá o ID da Nota Fiscal. Com esse ID, fazemos a consulta final para obter o XML completo da NFSe:
Delphi/Lazarus
if ACBrNFSeX.WebService.ConsultaNFSeporRps.Sucesso then
begin
// Agora consultamos pela Chave da Nota retornada, e não mais pelo DPS
ACBrNFSeX.ConsultarNFSePorChave(ACBrNFSeX.WebService.ConsultaNFSeporRps.idNota);
// O XML da NFSe estará disponível aqui:
ShowMessage(ACBrNFSeX.NotasFiscais.Items[0].XmlNfse);
end;
Caso esteja validando um processo de emissão que foi interrompido e a consulta do DPS não foi realizada com sucesso você pode entender que o DPS não foi recebido e a nota não existe.
Observações Importantes
Diferença de Chaves: Não confunda a Chave do DPS (enviada) com a Chave da NFSe (gerada pelo governo). Ambas são importantes, mas para baixar o XML final, a consulta por chave de nota é a mais precisa.
Persistência de Dados: Salve sempre a chave de 42 dígitos do DPS no seu banco de dados. Ela é o seu "passaporte" para localizar a nota caso haja uma queda de conexão ou timeout.
Provedor Nacional: Este fluxo é o padrão esperado para prefeituras que aderiram ao convênio da NFSe Nacional via Ambiente de Dados Nacional (ADN).
Conclusão
Seguindo esses passos, você garante que sua aplicação consiga recuperar o XML da NFSe de forma consistente, evitando erros de "Nota não encontrada" ou retornos vazios. A chave é entender que o processo é uma escada: Dados do DPS -> Consulta Chave DPS -> Consulta Chave NFSe -> XML Final.
Esperamos que esta dica ajude a agilizar as implementações de vocês!
Créditos à comunidade ACBr e ao amigo @icozeira pelo compartilhamento de experiências!