Este é um exemplo de retorno de consulta de RECIBO após o envio de uma NFe
<retConsReciNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<verAplic>PR-v3_8_0</verAplic>
<nRec>411110216106645</nRec>
<cStat>104</cStat>
<xMotivo>Lote processado</xMotivo>
<cUF>41</cUF>
<dhRecbto>2017-02-24T13:33:16-03:00</dhRecbto>
<protNFe versao="3.10">
<infProt>
<tpAmb>2</tpAmb>
<verAplic>PR-v3_8_0</verAplic>
<chNFe>41170208187168000160553420000044771416403143</chNFe>
<dhRecbto>2017-02-24T13:33:14-03:00</dhRecbto>
<nProt>141170000256266</nProt>
<digVal>PxoE8K9Qu9F7ROBwEPQtdc0nSQw=</digVal>
<cStat>100</cStat>
<xMotivo>Autorizado o uso da NF-e</xMotivo>
</infProt>
</protNFe>
</retConsReciNFe>
Veja que tem DOIS cStat. O primeiro sempre é a resposta da sua solicitação e pode ser uma AFIRMATIVA ou um ERRO
Esse primeiro cStat pode ser por exemplo
Erros (alguns apenas podem ter vários outros)
Se cStatus = 215, 516, 517 ou 545 significa que a mensagem de consulta é inválida.
Se cStatus = 225, 565. 567 ou 568, significa que o lote de NF-e consultado é inválido
Nestes casos (e em outros) a TAG protNFe Não SERÀ retornada
Eu mesmo verifico o primeiro cStat e a existência da TAG protNFe
SE cStat == 104 SUCESSO ==> verifica TAG protNFe se proNFe->infProt->cStat == 100 ou 150 ==> protocolar e gravar SUCESSO !!!
se proNFe->infProt->cStat != 100 ou a 150 ==> ERRO na NFe pegar xMotivo e acionar o usuário para correção
SE cStat == 105 AINDA EM PROCESSAMENTO ==> deixa para verificar novamente em alguns tempo
Caso contrario pegar o xMotivo e mostrar para o usuário (ou fazer algum outro tratamento, dependendo da resposta, são muitas possibilidades)
É por ai !
Roberto