As informações de retorno são informações sobre o status de processamento do documento. Todos os documentos processados em nossos integradores possuem um status que irá informar se o documento foi autorizado com sucesso ou não e o porque.
Estas informações são geradas no mesmo arquivo de integração que é gerado pelo sistema em uma nova linha que é adicionada no final do arquivo e que chamamos de Registro RP ou Registro MSG
Registro MSG:
O registro MSG é um registro de texto livre onde são adicionadas informações sobre problemas genéricos ocorridos durante o processamento do arquivo de integração, por exemplo, se ocorrer alguma falha de comunicação com a impressora, ou algum diretório não acessível ou arquivo de integração com layout não conhecido.

No caso citado acima está o arquivo de emissão está com um erro na estrutura, sendo a informação do campo xNome (linha C coluna 1) inserindo apenas um “ponto”.
o MSG é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
MSG|O campo ‘xNome’ foi preenchido incorretamente com o valor ‘.’ com tamanho = ‘1’. Este campo deve ser preenchido com letras ou numeros e conter no mínimo 2 e no máximo 60 caracteres.
MSG|O NFCe não será emitido pois possui dados inválidos.
- Registro Padrão: MSG
- Descrição do Retorno : O campo ‘xNome’ foi preenchido incorretamente com o valor ‘.’ com tamanho = ‘1’. Este campo deve ser preenchido com letras ou numeros e conter no minimo 2 e no maximo 60 caracteres
- Registro Padrão: MSG
- Descrição do Retorno: O NFCe nao sera emitido pois possui dados invalidos.
Registro RP:
O registro RP é utilizado para informações sobre o status de processamento do documento e possui informações que são necessárias para o gerenciamento deste documento. No RP são adicionadas informações que são geradas pelos nossos integradores como a chave de acesso, são adicionadas também informações retornadas pela Sefaz como o protocolo de autorização, o código de situação e a data e hora de autorização. Além disso são adicionadas também informações sobre a validação do documento, por exemplo se alguma informação do documento estiver inválida será gerado um registro RP com o código de situação de rejeição e o motivo pelo qual o documento foi rejeitado.
No caso de Rejeição da Nota:

No caso citado acima está o arquivo de emissão está com um Retorno da sefaz informando que a Inscrição Estadual do Emitente está incorreta (Linha C coluna 3)
o RP é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
RP|||209|Rejeicao: IE do emitente invalida|NFe43160707364617000135650000000047921000069902|||
- Registro Padrão: RP
- Protocolo de autorização:
- Digest Valor :
- Código do Retorno: 209
- Descrição do Retorno: Rejeicao: IE do emitente invalida
- Chave de Acesso: NFe43160707364617000135650000000047921000069902
- Serie da NFe:
- Numero da NFe:
- Data e hora da Autorização:
OBS: O Código do Retorno irá mudar de acordo com a rejeição. Acesso o link e veja possíveis rejeições com a solução: Rejeições Conhecidas NFC-e
No caso de Nota Autorizada com Sucesso:

No caso citado acima está o arquivo de emissão está com um Retorno da sefaz informando que a nota foi Autorizada com Sucesso.
o RP é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
RP|143160000738791|i+GK5K3etYYPJouzHD8kftH5Roc=|100|Autorizado o uso da NF-e|NFe43160707364617000135650000000047921000069902|0|4792|2016-07-05T09:07:40-03:00|https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx?chNFe=43160707364617000135650000000047921000069902&nVersao=100&tpAmb=2&dhEmi=323031362D30372D30355430393A30393A35302D30333A3030&vNF=1700.00&vICMS=0.00&digVal=692B474B354B3365745959504A6F757A4844386B66744835526F633D&cIdToken=000001&cHashQRCode=d3e3bfaaafafe8ae73c7b2861b164d7c57d81090|
- Registro Padrão: RP
- Protocolo de autorização:143160000738791
- Digest Valor : i+GK5K3etYYPJouzHD8kftH5Roc=
- Código do Retorno: 100
- Descrição do Retorno: Autorizado o uso da NF-e
- Chave de Acesso: NFe43160707364617000135650000000047921000069902
- Serie da NFe: 0
- Numero da NFe: 4792
- Data e hora da Autorização: 2016-07-05T09:07:40-03:00
- Link do QR Code: https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx?chNFe=43160707364617000135650000000047921000069902&nVersao=100&tpAmb=2&dhEmi=323031362D30372D30355430393A30393A35302D30333A3030&vNF=1700.00&vICMS=0.00&digVal=692B474B354B3365745959504A6F757A4844386B66744835526F633D&cIdToken=000001&cHashQRCode=d3e3bfaaafafe8ae73c7b2861b164d7c57d81090
OBS: O Código de NFC-e Autorizada será sempre 100 = Autorizado o uso da NF-e
Retorno do Evento de Cancelamento:
No caso de Rejeição do Evento:
Registro MSG:
Assim como na emissão da nota quando ocorre erro na estrutura retorna um Registro MSG, no Evento CCE ou Cancelamento também retorna este registro no caso de problema na estrutura.

No caso citado acima, o arquivo de emissão está com um erro na estrutura, não sendo informado o campo ‘nProt’ (coluna 2, linha E).
o MSG é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
MSG|nProt : cvc-pattern-valid: O valor ” não tem um aspecto válido em relação ao padrão ‘[0-9]{15}’ do tipo ‘TProt’.
- Registro Padrão: MSG
- Descrição do Retorno: nProt : cvc-pattern-valid: O valor ” não tem um aspecto válido em relação ao padrão ‘[0-9]{15}’ do tipo ‘TProt’.
- Registro Padrão: MSG
- Descrição do Retorno: O Cancelamento nao sera emitido pois possui dados invalidos
Registro RP:
Assim como na emissão da nota quando ocorre erro nas informações inseridas no arquivo txt de emissão retorna um RP da sefaz com o código da rejeição e o motivo da mesma.

No caso citado acima está o arquivo de emissão está com um erro na informação do protocolo da NF-e autorizada, que não corresponde a chave de acesso informada.
o RP é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
RP||222|Rejeicao: Protocolo de Autorizacao de Uso difere do cadastrado|||
- Registro Padrão: RP
- Protocolo de autorização:
- Código do Retorno: 222
- Descrição do Retorno: Rejeicao: Protocolo de Autorizacao de Uso difere do cadastrado
- Chave de Acesso da NF-e:
- Chave do Evento:
- Data e hora da Autorização:
No caso de Evento Autorizado:

No caso citado acima está o arquivo de emissão foi Autorizado com Sucesso, trazendo o código de Autorização do Evento juntamente com a chave de acesso, e protocolo.
o RP é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
RP|143160000738871|135|Evento registrado e vinculado a NF-e|43160707364617000135650000000047921000069902|1101114316070736461700013565000000004792100006990201|2016-07-05T09:22:38-03:00
- Registro Padrão: RP
- Protocolo de autorização: 143160000738871
- Código do Retorno: 135
- Descrição do Retorno: Evento registrado e vinculado a NF-e – Cancelamento
- Chave de Acesso da NF-e: 43160707364617000135650000000047921000069902
- Chave do Evento: 1101114316070736461700013565000000004792100006990201
- Data e hora da Autorização: 2016-07-05T09:22:38-03:00
Retorno do Evento de Inutilização:
Registro MSG:
Assim como na emissão da nota quando ocorre erro na estrutura ou na falha de comunicação retorna um Registro MSG, no Evento de Inutilização também retorna este registro:

No caso citado acima está o arquivo de emissão está com falha na comunicação devido o Código da UF informado ser inexistente. O Correto deveria ser 43 para a UF do RS.
o MSG é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
MSG|O campo ‘cUF’ foi preenchido incorretamente com o valor ’40’. Este campo deve ser preenchido com um dos seguintes valores:11, 12, 13, 14, 15, 16, 17, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 41, 42, 43, 50, 51, 52, 53
MSG|A inutilizacao nao sera realizada pois possui dados invalidos
- Registro Padrão: MSG
- Descrição do Retorno: O campo ‘cUF’ foi preenchido incorretamente com o valor ’40’. Este campo deve ser preenchido com um dos seguintes valores:11, 12, 13, 14, 15, 16, 17, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 41, 42, 43, 50, 51, 52, 53
- Registro Padrão: MSG
- Descrição do Retorno: A inutilizacao nao sera realizada pois possui dados invalidos
Registro RP:
Assim como na emissão da nota quando a Nota é Autorizada com sucesso retorna um Registro RP, no Evento de Inutilização também retorna este registro:

No caso citado acima está o arquivo de emissão de Inutilização foi Autorizado com Sucesso.
o RP é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
RP|102|Inutilizacao de numero homologado|2022-09-18T18:00:18-03:00|143220000711369|
- Registro Padrão: RP
- Descrição do Retorno: Inutilizacao de numero homologado
- Data e Hora da Autorização: 2022-09-18T18:00:18-03:00
- Protocolo da Autorização: 143220000711369
Retorno da Contingência Off-line:
Para saber mais sobre o que é e como funciona a Contingência Off-line acesso o link: Contingência Offline no NFCe Cloud
Retorno da nota emitida Off-line:
Este retorno é gerado ao final do arquivo txt, onde é composto pela CHAVE DE ACESSO e o retorno EMITIDO EM CONTINGÊNCIA. Esta chave deverá ser armazenada em um banco de dados para posteriormente poder ser comparada com a chave da nota já enviada para a sefaz.

Retorno do envio para a sefaz:
Após a nota ser enviada para a sefaz, o retorno do processamento do arquivo será gerado no txt CONTINGENCIA_RET gerado na pasta Processados/nsConcluídos, com o RP de Autorizado ou Rejeitado.
No caso de Rejeitada:
No caso da nota ter sido rejeitada, deverá ser obtido o Retorno da mesma forma para então poder ser ajustada e reenviada.

No caso citado acima está o arquivo de emissão foi rejeitado.
o RP é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
RP|||209|Rejeicao: IE do emitente invalida|NFe43220907364617000135650000002805139123456705|||
- Registro Padrão: RP
- Protocolo de autorização:
- Digest Value:
- Código do Retorno: 209
- Descrição do Retorno: Rejeicao: IE do emitente invalida
- Chave de Acesso da NF-e: NFe43220907364617000135650000002805139123456705
- Serie da Nota:
- Número da Nota:
- Data e hora da Autorização:
- Link do QR Code
No caso de Autorizada:

No caso citado acima está o arquivo de emissão foi Autorizado com Sucesso.
o RP é composto pelas seguintes colunas utilizando o exemplo do arquivo de emissão acima:
RP|143220000716100|rxCk9GYZcPSrTrUkzsTfeVFM5eo=|100|Autorizado o uso da NF-e|NFe43220907364617000135650000002805139123456705|0|280513|2022-09-30T15:01:45-03:00|https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx?p=43220907364617000135650000002805139123456705%7C2%7C2%7C30%7C11.20%7C7278436b3947595a635053725472556b7a7354666556464d35656f3d%7C1%7C35a08c8bbbfec3fa165f313fca7212d13315afff|NFe43220907364617000135650000002805139123456705
- Registro Padrão: RP
- Protocolo de autorização: 143220000716100
- Digest Value: rxCk9GYZcPSrTrUkzsTfeVFM5eo=
- Código do Retorno: 100
- Descrição do Retorno: Autorizado o uso da NF-e
- Chave de Acesso da NF-e: NFe43220907364617000135650000002805139123456705
- Serie da Nota: 0
- Número da Nota: 280513
- Data e hora da Autorização: 2022-09-30T15:01:45-03:00
- Link do QR Code: https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx?p=43220907364617000135650000002805139123456705%7C2%7C2%7C30%7C11.20%7C7278436b3947595a635053725472556b7a7354666556464d35656f3d%7C1%7C35a08c8bbbfec3fa165f313fca7212d13315afff
- Chave de Acesso Adiocional: NFe43220907364617000135650000002805139123456705
Como fazer a leitura do Retorno na linguagem do Desenvolvedor:
Independentemente da linguagem utilizada, os passos são os mesmos, tratando-se de leitura de retorno. O que varia são as funções e métodos de execução que serão utilizados. Todavia, para fazer a leitura do RP em seu sistema, devem ser seguidos os seguintes passos lógicos na implementação:
- Leia o conteúdo do arquivo TXT em uma variável (TextoArquivo) do tipo String;
- Crie um vetor(LinhasArquivo) do tipo String, sem tamanho pré-definido, e divida o conteúdo da variável ‘TextoArquivo’ por cada ocorrência de um “Enter” no arquivo texto;
- Após dividir, o conteúdo, procure pelo último índice do vetor e coloque em uma variável do tipo Inteiro (ultimo_indice). Porém, ao achá-lo, deve-se voltar um índice, pois, ao dividir o arquivo pelo “Enter” (char 13), o último índice será uma linha em branco. (Ex.: ultimo_indice – 1);
- Então, divida o vetor ‘LinhasArquivo’ no índice calculado em ‘ultimo_indice’ por ocorrências de um ” | “, ou seja, irá separar os campos do RP; “jogue” esses valores em um novo vetor (RP);
- Verifique se o primeiro índice no vetor RP é a string “RP” ou “MSG”;
Com os passos acima, você terá os campos e o tipo de retorno do RP. Os nomes dados às variáveis acima são meramente didáticos, afim de que fique mais fácil a visualização e interpretação. Assim, você pode trocar os nomes de acordo com sua preferência.