- 12.3. Cancelamento e Inutilização de NF-e [15-08-17]
12.3.1. CancelaNFEvento [15-08-17] - 12.3. Cancelamento e Inutilização de NF-e [15-08-17]
« Anterior - 12.3.2. InutilizaNroNF2G [15-08-17]
Próximo »
12.3.1. CancelaNFEvento [15-08-17]
Cancelamento de NF-e como Evento
CANCELAMENTO COMO EVENTO [18-11-12]
O Web Service de Cancelamento de NF-e será desativado no dia 01/12/2012, os pedidos de cancelamentos serão recepcionados pelo Web Service de Recepção de Eventos a partir desta data conforme divulgada na NT 2011/006.
FAQ - cancelamento como evento
qual será a data de desativação do WS de cancelamento? - o WS de cancelamento 2G será desativado em 01/12/2012, a partir desta data somente serão aceitos cancelamento como evento;
o que vai mudar? - a SEFAZ está padronizando a estrutura de eventos da NF-e e o cancelamento passa a ser tratado com um evento da NF-e, as alterações são as seguintes:
- alteração do WS - os pedidos de cancelamento serão recepcionados pelo WS de recepção de Eventos;
- alteração na estrutura do pedido de cancelamento - o pedido de cancelamento vai seguir a estrutura padrão Evento e o XML será alterado, mas cabe observar que as informações exigidas são mesmas, isto é: chave da NF-e objeto do cancelamento, número do protocolo de autorização de uso e justificativa do cancelamento;
- alteração na estrutura do resposta do WS - A mensagem de resposta do processamento do pedido de cancelamento será a resposta padrão do Web Service de Recepção de Evento;
- alteração no cStat do resultado do processamento - ao invés do cStat = "101" e xMotivo = "Cancelamento de NF-e homologado", passaremos a receber cStat = "135" e xMotivo = "Evento registrado e vinculado a NF-e".
Cabe ressaltar que a partir de 01/11/2012 poderemos ter o cStat = "151" (cancelamento normal) ou "155" (cancelamento por evento) com xMotivo = "Cancelamento de NF-e homologado fora de prazo" nas UF que permitem o cancelamento fora do prazo (o cancelamento fora do prazo é passível de multa).o que muda na DLL? - a DLL foi atualizada para suportar o cancelamento em forma de evento de duas formas:
- disponibilização da nova funcionalidade CancelaNFEvento - nova funcionalidade que permite o cancelamento por evento, necessário informar o parâmetro dhEvento;
- atualização da funcionalidade CancelaNF2G - a funcionalidade de cancelamento de NF-e existente foi atualizada para permitir o cancelamento por evento informando apenas "1.00" no parâmetro versao (é a opção mais simples de adequação).
- requer a atualização da versão DLL - apesar de tomarmos o cuidado para que as alterações sejam mínimas, será necessário atualizar a DLL para a versão 2Gv1.0a ou superior;
qual o reflexo para minha aplicação? - são necessárias as seguintes alterações:
- parâmetro versao - para realizar o cancelamento por evento, basta informar "1.00" no parâmetro versao, para utilizar o WS atual continue informando "2.00" neste parâmetro;
- parâmetro cStat - o código que identifica o cancelamento homologado é cStat = 135 ou 155 ao invés de cStat = 101 ou 151, não deixe de tratar o cStat = 151 e 155 que são novos códigos de homologação de cancelamento fora de prazo, a UF que permitir o cancelamento fora de prazo deve lançar uma multa, que pode surpreender o usuário mais tarde, o WS de recepção tem outros códigos de rejeição que não existiam no WS de Cancelamento da NF;
- retorno do WS - a mensagem de retorno do WS será o procEvento ao invés do procCancNFe;
o uso desta funcionalidade requer atualização onerosa? - o uso desta funcionalidade não requer atualização onerosa, somente será necessário atualizar a DLL. O uso das funcionalidades relacionadas com a Manifestação do Destinatário requer atualização onerosa, mas as demais funcionalidades podem ser utilizadas com a chave adquiridas até 29/02/2012.
Assinatura
string CancelaNFEvento(string siglaWS, int tipoAmbiente, string nomeCertificado, string versao, ref string msgDados, out string msgRetWS, out int cStat, out string msgResultado, string chaveNFe, string nProtocolo, string justificativa, string dhEvento, out string nProtocoloCanc, out string dProtocoloCanc, string proxy, string usuario, string senha, string licenca)
Descrição:
Funcionalidade para Cancelamento de NF-e como Evento.
Os principais parâmetros de cancelamento são:
- chave de acesso da NF-e;
- número do protocolo de autorização de uso da NF-e;
- justificativa do cancelamento com pelo menos 15 caracteres;
- data e hora do Evento;
A identificação do WS de acessado deverá ser informada no parâmetro siglaWS.
Os emissores localizados em UF usuárias da SEFAZ Virtual devem informar a sigla SVAN (MA, PA e PI) ou a sigla SVRS (AC, AL, AP, DF, ES, PB, RJ, RN, RO, RR, SC, SE e TO), ou informar a sigla da UF (AM, BA, CE, GO, MS, MT, MG, PE, PR, RS e SP) nos casos de UF que tenham aplicação própria. Em caso de emissão em contingência SCAN - Sistema de Contingência do Ambiente Nacional, informar a sigla SCAN.
Condições para Cancelamento
- NF-e autorizada, o usuário deve utilizar a inutilização de numeração se a NF-e não estiver autorizada;
- NF-e autorizada em até 24 horas, o prazo máximo é de até 2 horas em MT;
- Possuir o número do protocolo de autorização de uso;
- A mercadoria não pode ter circulado;
- A NF-e não pode ter registro de passagem na fiscalização de trânsito;
- A NF-e não pode ter a confirmação de recebimento;
Prazo de cancelamento
Em até 24 horas da autorização de uso da NF-e objeto do cancelamento, no MT o prazo de cancelamento é de 2 horas da autorização de uso. Algumas UF poderão aceitar o pedido de cancelamento após a expiração do prazo de 24 horas, mas o cancelamento vai constar como efetuado com atraso e estará sujeito a aplicação de multa. Algumas UF orientam o emissor para emitir uma NF-e de "estorno" para anular a operação, consulte o contador para obter a orientação adequado quando perder o prazo de cancelamento.
Número do Protocolo de Autorização de Uso
Alguns usuários confundem o número do recibo do envio do lote com o número da autorização de uso e não conseguem cancelar a NF-e.
Preenchimento do nomeCertificado
informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL, formas possíveis:
1. uso de certificado digital existente no repositório MY do CSP do usuário corrente (currentuser)
É a forma de mais comum de uso, cabe ressaltar que é a única forma de uso de certificado digital do tipo A3 que a DLL oferece.
O usuário deve passar como parâmetro o campo assunto do certificado no parâmetro NomeCertificado para que a DLL localize um certificado digital com mesmo assunto no repositório MY do currentuser do equipamento.
Esta forma de uso requer a prévia instalação do certificado digital na conta do usuário do Windows (logon) que irá utilizar o certificado digital.2. uso de certificado digital em arquivo no formato pfx
Permite o de uso de certificado digital em arquivo formato pfx.
O caminho da localização (path) do arquivo pfx deve ser passado para a DLL no formato: ARQUIVO | [nome do arquivo pfx com caminho completo] | [senha do arquivo] no parâmetro NomeCertificado, ex.: "ARQUIVO|c:\certificado.pfx|senha".
Esta opção só funciona com certificado digital do tipo A1.3. uso de certificado digital em string base64
Permite uso o arquivo do certificado digital em formato pfx convertido em uma string base64. O certificado digital em string base64 deve ser passado para a DLL no formato: CERTIFICADO | [string base64 do arquivo pfx] | [senha do arquivo] no parâmetro NomeCertificado, ex.: "CERTIFICADO|MIIGoDCCBYigAwIBAgIQep(arquivo pfx do certificado digital convertido em base64...)QQDExNBQy|senha".
Esta opção só funciona com certificado digital do tipo A1. É uma opção de uso que oferece maior versatilidade, pois permite o armazenamento do certificado digital em banco de dados na aplicação. É a forma mais indicada para uso em ASP.NET.
Parâmetros:
nome | tipo | fluxo | descrição |
---|---|---|---|
siglaWS | string | entrada | informar a sigla do WS desejado, veja Tabela de siglaWS |
tipoAmbiente | inteiro | entrada | informar o código do ambiente desejado: 1- produção ou 2-homologação |
NomeCertificado | string | entrada | informar o certificado digital que será utilizado para assinatura: 1. informar o assunto do certificado digital que deve existir no repositório MY do current user, ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS". 2. informar: ARQUIVO | [nome do arquivo pfx com caminho completo] | [senha do arquivo] para uso do certificado digital em arquivo pfx, ex.: "ARQUIVO|c:\certificado.pfx|senha". 3. informar: CERTIFICADO | [string base64 do arquivo pfx] | [senha do arquivo] no parâmetro NomeCertificado para passar uma string contendo um certificado digital em base64, ex.:"CERTIFICADO|MIIGoDCCBYigAwIBAgIQep(arquivo pfx do certificado digital convertido em base64...)QQDExNBQy|senha". (novas opções) |
versao | string | entrada | informar a versão do Evento: 1.00 ou 4.00 [15-08-17] |
msgDados | string | saída | retorna a mensagem XML do pedido de cancelamento criado pela DLL que foi enviado ao WS. |
msgRetWS | string | saída | retorna a mensagem XML de resposta do WS |
cStat | inteiro | saída | retorna o resultado da chamada do WS. |
msgResultado | string | saída | retorna a literal do resultado da chamada do WS |
chaveNFe | string | entrada | informar a chave de acesso da NF-e objeto do cancelamento |
nProtocolo | string | entrada | informar o número do protocolo de autorização de uso da NF-e objeto do cancelamento |
justificativa | string | entrada | informar a justificativa do cancelamento com pelo menos 15 caracteres |
dhEvento | string | entrada | informar a data e hora do evento de cancelamento no formato "AAAA-MM-DD HH:MM:SS". Ex. Delphi: FormatDateTime('yyyy-mm-dd "" hh:mm:ss', Now); VB: Format$(Now, "yyyy-mm-dd HH:mm:ss") Se a data e hora informada for maior que a data do WS vai ocorrer o erro 578, veja o retorno do WS e verifique se o horário do equipamento está sincronizado com o horário do WS. A data e hora é convertida em formato UTC - Universal Time Zone (representação do horário que considera o fuso em relação ao horário UTC), assim como existe a validação de schema XML para a data e hora, se o fuso horário do equipamento estiver com uma configuração que não seja a brasileira ocorrerá falha de schema XML. A DLL irá pegar a data e hora do equipamento se o conteúdo for omitido. |
nProtocoloCanc | string | saída | retorna o número do protocolo da homologação do cancelamento da NF-e |
dProtocoloCanc | string | saída | retorna a data e hora da homologação do cancelamento da NF-e pela SEFAZ. |
proxy | string | entrada | informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta https, a porta padrão do https é 443, assim teríamos algo do tipo 'http://192.168.15.1:443' |
usuario | string | entrada | informar o usuário para autenticação no proxy, se necessário |
senha | string | entrada | informar a senha de autenticação no proxy, se necessário |
licenca | string | entrada | informar a chave da licenca de uso ou registro, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento, para maiores detalhes veja as condições de uso |
data e hora no formato UTC - Universal Time Zone
A tag dhEvento tem a informação da data, hora e fuso horário, isto é a data e hora é convertida em formato UTC - Universal Time Zone (representação do horário que considera o fuso em relação ao horário UTC):
<dhEvento>2012-08-18T20:26:58-03:00</dhEvento>, onde:
- 2012-08-18 = data;
- 20:26:58 = hora;
- -03:00 = fuso horário.
O objetivo da informação do fuso horário é permitir que equipamentos localizados em locais com fuso horário diferente do fuso horário da SEFAZ de recepção do evento não precise "adequar a hora" para a hora local da SEFAZ de recepção do evento.
Exemplo:
Uma filial localizada no Mato Grosso do Sul que utiliza o servidor da matriz localizada em São Paulo pode ter problemas ao informar a hora.
A data e hora do equipamento localizado em São Paulo tem horário diferente do horário local de Mato Grosso do Sul, assim em princípio, a aplicação pode gerar a tag dhEvento com horário local de São Paulo que vai estar adiantado uma hora em relação ao horário local do Mato Grosso do Sul, gerando a necessidade de "ajustar a hora" para a hora local do Mato Grosso do Sul.
A adoção do formato UTC "elimina" a necessidade deste "ajuste", pois a aplicação da SEFAZ vai tratar o horário de forma correta considerando o fuso horário, entendendo que o horário de São Paulo: <dhEvento>2012-08-18T20:26:58-03:00</dhEvento> equivalente a 19:26:58 no horário local do Mato Grosso do Sul (<dhEvento>2012-08-18T19:26:58-04:00</dhEvento>).Horário de verão
O horário de verão equivale a adoção de um fuso horário diferente do fuso horário local, assim a data e hora no formato UTC de uma localidade que está adotando o horário de verão vai mostrar o fuso diferente do fuso horário local.
Exemplo:
O fuso horário de São Paulo é UTC-3, durante o período do horário de verão, o relógio será adiantado em uma hora no fuso horário oficial local. É importante ressaltar que durante o horário de verão, a região adota um fuso horário diferente do padrão, ou seja, o fuso horário de São Paulo durante o horário de verão será UTC-2.
Os equipamentos devem configurados de forma que o sistema operacional faça o ajuste para o horário de verão de forma automática, evite adiantar a hora do equipamento, pois isto não repercute no fuso horário e a DLL vai gerar a data e hora no formato UTC com UTC-3 que é um horário diferente do horário verão que considera o fuso UTC-2.
Durante o horário de verão, as localidades que adotam o horário de verão estarão com o fuso horário adiantado em uma hora, isto é se o fuso horário normal for UTC-3, o fuso do horário durante o horário de verão será UTC-2.data e hora no horário de verão
<dhEvento>2012-11-18T17:13:21-02:00</dhEvento> --> horário normal equivalente: <dhEvento>2012-11-18T18:13:21-03:00</dhEvento>
<dhRegEvento>2012-11-18T17:13:54-02:00</dhRegEvento>cliente com data e hora no horário normal e servidor no horário de verão
<dhEvento>2012-11-18T17:13:21-03:00</dhEvento>
<dhRegEvento>2012-11-18T17:13:54-02:00</dhRegEvento>Como 17:13:21-03:00 equivale a 16:13:21-02:00 vai ocorrer rejeição do pedido pois o horário do cliente está adiantado em relação ao horário do Web Service: 17:13:54-02:00.
Retorno:
O resultado da chamada do CancelaEvento é a mensagem XML composta pelo Evento pedido de cancelamento e respectivo protocolo de registro do evento do cancelamento da NF-e se o Evento de Cancelamento for registrado e vinculado na NF-e (cStat=135 ou cStat=155).
Exemplo do XML Evento de Cancelamento:
<envEvento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> <idLote>00000002311801</idLote> <evento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> <infEvento Id="ID1101113512081014278500019055001000000023118453497301"> <cOrgao>35</cOrgao> <tpAmb>2</tpAmb> <CNPJ>10142785000190</CNPJ> <chNFe>35120810142785000190550010000000231184534973</chNFe> <dhEvento>2012-08-18T20:26:58-03:00</dhEvento> <tpEvento>110111</tpEvento> <nSeqEvento>1</nSeqEvento> <verEvento>1.00</verEvento> <detEvento versao="1.00"> <descEvento>Cancelamento</descEvento> <nProt>135120005426259</nProt> <xJust>Teste de Cancelamento como Evento</xJust> </detEvento> </infEvento> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> <Reference URI="#ID1101113512081014278500019055001000000023118453497301"> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>ltctExluD0Od3kxNimxSQTgKkAQ=</DigestValue> </Reference> </SignedInfo> <SignatureValue>iorN1e//LP/fKzwJtmxkh4fvZjafKkd4qU(...)eG3PPUC3p7B6/9g1f3d599XTO62JsQEU=</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIFtDCCBJygAwIBAgIIG1mv0XRoW(...)ED6q4AxkHNUQBimd6HAhA0oDjO/oaDeEC</X509Certificate> </X509Data> </KeyInfo> </Signature> </evento>
O parâmetro cStat retorna um código numérico com os seguintes significados:
código | Mensagem | origem | regra |
---|---|---|---|
5001 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: o certificado cliente: 1.não é ICP-Brasil; 2.fora do prazo de validade; 3.revogado; 4.certificado cliente não confiável para o Web Service acessado, contatar a SEFAZ) | DLL | - |
5002 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: a cadeia de certificação do Web Service acessado ou do certificado cliente inexistente no repositório de certificados do usuário corrente do Windows) | DLL | - |
5003 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: serviço inexistente, verifique se o nome do serviço da url acessada está correto no arquivo ws2.xml) | DLL | - |
5004 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: método não permitido) | DLL | - |
5005 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: a url não encontrada, verifique se o nome do domínio da url acessada está correto no arquivo ws2.xml) | DLL | - |
5006 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Time-Out, o WS não respondeu a solicitação no tempo estabelecido: [{1:0}]) | DLL | - |
5007 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: mensagem maior que a permitida) | DLL | - |
5008 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Servidor com problemas) | DLL | - |
5009 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Serviço não implementado) | DLL | - |
5010 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Serviço temporariamente indisponível, servidor sem recursos para atender a solicitação) | DLL | - |
5011 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Causa provável da falha na conexão: Rede indisponível) | DLL | - |
5012 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Versão do SOAP não suportada | DLL | - |
5013 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Web Service não consumido, não houve nenhum retorno ou resposta) | DLL | - |
5014 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Web Service não consumido, falha desconhecida) | DLL | - |
5015 | Erro: Falha na conexão: Tempo limite de time-out alcançado [TEMPO DE TIME OUT UTILIZADO ms] - [MENSAGEM DE ERRO DO WINDOWS] | DLL | - |
5016 | Erro: Falha na conexão: Falha da Biblioteca Criptografica: [MENSAGEM DE ERRO DO WINDOWS] | DLL | - |
5017 | Erro: Falha ao tratar o XML de retorno do WS: [MENSAGEM DE ERRO DO WINDOWS] | DLL | - |
5101 | Erro: A mensagem de retorno do WS não é um XML válido: [MENSAGEM DE ERRO DO WINDOWS] | DLL | - |
5102 | Erro: Tag cStat inexistente na mensagem de retorno [MENSAGEM DE ERRO DO WINDOWS] | DLL | - |
5103 | Erro: Tag xMotivo inexistente na mensagem de retorno [MENSAGEM DE ERRO DO WINDOWS] | DLL | - |
5104 | Erro: Tag [NOME TAG] inexistente na mensagem de retorno [MENSAGEM DE ERRO DO WINDOWS] | DLL | - |
5105 | Erro: O WS não devolveu nenhum resultado | DLL | - |
5201 | Erro: O código do tipo de ambiente [CODIGO RECEBIDO PELA DLL] informado diferente de 1 - produção e 2 - homologação | DLL | - |
5202 | Erro: A sigla da UF [SIGLA RECEBIDA PELA DLL] informada é inválida | DLL | - |
5203 | Erro: Inexiste url para a UF [SIGLA UF] informada no ambiente [AMBIENTE] desejado, verifique se existe atualização do arquivo [NOME ARQUIVO] disponível. | DLL | - |
5204 | Erro: Arquivo que contem a URL do WS não localizado em [CAMINHO DA APLICACAO] | DLL | - |
5205 | Erro: Ocorreu um erro inesperado no processamento da URL (NOME URL) : [MENSAGEM DE ERRO DO WINDOWS] | DLL | - |
5206 | Erro: Ocorreu um erro de validação do XML (NOME XML) : [MENSAGEM DE ERRO DO WINDOWS] | DLL | - |
5403 | Erro: Falha ao acessar certificado digital [mensagem de ERRO DO WINDOWS] | DLL | - |
5404 | Erro: Nenhum certificado digital selecionado | DLL | |
5405 | Erro: Nenhum certificado válido foi encontrado com o nome [NomeCertificado] informado no repositório [MY do CurrentUser] | DLL | - |
5406 | Erro: Falha no tratamento do parâmetro nome: [nome informado] | DLL | - |
5407 | Erro: Quantidade de parâmetos inválido: [nome informado] | DLL | - |
5408 | Erro: Falha na criação do objeto certificate: [mensagem do ERRO DO WINDOWS] | DLL | - |
6101 | Erro: O parâmetro versao não foi informado | DLL | - |
6102 | Erro: O conteúdo do parâmetro sigla da UF: [CONTEÚDO] é inválido | DLL | - |
6103 | Erro: O conteúdo do parâmetro versao informado é inválido: [CONTEUDO] | DLL | - |
6104 | Erro: O parâmetro chaveNFe não informado | DLL | - |
6105 | Erro: O tamanho [TAMANHO DO PARAMETRO] do parâmetro chaveNFe informado não tem 44 caracteres | DLL | - |
6106 | Erro: As posições correspondentes (1,2) ao código da UF [POSIÇÃO DA CHAVE] do parâmetro chaveNFe não é um código de UF válido | DLL | - |
6107 | Erro: A chave de acesso deve ter 44 posições: [POSIÇÃO DA CHAVE] | DLL | - |
6108 | Erro: O conteúdo do parâmetro número do protocolo: [NÚMERO DO PROTOCOLO] deve ter 15 posições | DLL | - |
6109 | Erro: O conteúdo do parâmetro justificativa: [JUSTIFICATIVA] deve ter pelo menos 15 posições | DLL | - |
6110 | Erro: O nome do titular do certificado deve ser informado | DLL | - |
6120 | Erro: O parâmetro chave de acesso deve ser informado | DLL | - |
6122 | Erro: O parâmetro justificativa deve ter se informado | DLL | - |
6123 | Erro: O parâmetro tipoAmbiente deve ser informado | DLL | - |
6124 | Erro: O parâmetro tipoAmbiente [CONTEUDO] deve ser 1 ou 2 | DLL | - |
6141 | Erro: O parâmetro siglaWS deve ser informado | DLL | - |
7001 | Erro: A licença não foi informada | DLL | - |
7002 | Erro: A licença informada: [CONTEUDO] tem tamanho:[TAMANHO] diferente de 128 | DLL | - |
7003 | Erro: A licença informada: [CONTEUDO] não pertence ao CNPJ:[TAMANHO] | DLL | - |
135 | Evento registrado e vinculado a NF-e | WS | - |
155 | Evento registrado fora do prazo e vinculado a NF-e | WS | - |
108 | Serviço Paralisado Momentaneamente (curto prazo) | WS | B03 |
109 | Serviço Paralisado sem Previsão | WS | B04 |
203 | Rejeição: Emissor não habilitado para emissão da NF-e | WS | H04 |
205 | Rejeição: NF-e está denegada na base de dados da SEFAZ | WS | H08 |
213 | Rejeição: CNPJ-Base do Emitente difere do CNPJ-Base do Certificado Digital | WS | F03 |
214 | Rejeição: Tamanho da mensagem excedeu o limite estabelecido | WS | B01 |
215 | Rejeição: Falha no schema XML | WS | D01 |
216 | Rejeição: Chave de Acesso é diferente do existente no BD | WS | H07 |
217 | Rejeição: NF-e não consta na base de dados da SEFAZ | WS | H06 |
219 | Rejeição: Circulação da NF-e verificada | WS | H13 |
220 | Rejeição: NF-e autorizada há mais de 24 horas | WS | H10 |
221 | Rejeição: Confirmado o recebimento da NF-e pelo destinatário | WS | H12 |
222 | Rejeição: Protocolo de Autorização de Uso difere do cadastrado | WS | H11 |
236 | Rejeição: Chave de Acesso com dígito verificador inválido | WS | H03 |
238 | Rejeição: Cabeçalho - Versão do arquivo XML superior a Versão vigente | WS | C05 |
239 | Rejeição: Cabeçalho - Versão do arquivo XML não suportada | WS | C06 |
240 | Rejeição: Cancelamento/Inutilização - Irregularidade Fiscal do Emitente | WS | H05 |
242 | Rejeição: Cabeçalho - Falha no Schema XML | WS | C01 |
243 | Rejeição: XML Mal Formado | WS | B02 |
249 | Rejeição: UF da Chave de Acesso diverge da UF autorizadora | WS | H02 |
252 | Rejeição: Ambiente informado diverge do Ambiente de recebimento | WS | H01 |
266 | Rejeição: Na autorização pela SEFAZ Autorizada: não aceitar série diferente de 0-899 | WS | H02a |
280 | Rejeição: Certificado Transmissor inválido | WS | A01 |
281 | Rejeição: Certificado Transmissor Data Validade | WS | A02 |
282 | Rejeição: Certificado Transmissor sem CNPJ | WS | A07 |
283 | Rejeição: Certificado Transmissor - erro Cadeia de Certificação | WS | A03 |
284 | Rejeição: Certificado Transmissor revogado | WS | A05 |
285 | Rejeição: Certificado Transmissor difere ICP-Brasil | WS | A06 |
286 | Rejeição: Certificado Transmissor erro no acesso a LCR | WS | A04 |
290 | Rejeição: Certificado Assinatura inválido | WS | E01 |
291 | Rejeição: Certificado Assinatura Data Validade | WS | E02 |
292 | Rejeição: Certificado Assinatura sem CNPJ | WS | E03 |
293 | Rejeição: Certificado Assinatura - erro Cadeia de Certificação | WS | E04 |
294 | Rejeição: Certificado Assinatura revogado | WS | E06 |
295 | Rejeição: Certificado Assinatura difere ICP-Brasil | WS | E07 |
296 | Rejeição: Certificado Assinatura erro no acesso a LCR | WS | E05 |
297 | Rejeição: Assinatura difere do calculado | WS | F02 |
298 | Rejeição: Assinatura difere do padrão do Projeto | WS | F01 |
299 | Rejeição: XML da área de cabeçalho com codificação diferente de UTF-8 | WS | C01a |
402 | Rejeição: XML da área de dados com codificação diferente de UTF-8 | WS | D03 |
404 | Rejeição: Uso de prefixo de namespace não permitido | WS | D02 |
409 | Rejeição: Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header | WS | C02 |
410 | Rejeição: UF informada no campo cUF não é atendida pelo Web Service | WS | C03 |
411 | Rejeição: Campo versaoDados inexistente no elemento nfeCabecMsg do SOAP Header | WS | C04 |
420 | Rejeição: Cancelamento para NF-e já cancelada | WS | H09 |
489 | Rejeição: CNPJ informado inválido (DV ou zeros) | WS | G03 |
490 | Rejeição: CPF informado inválido (DV ou zeros) | WS | G04 |
491 | Rejeição: O tpEvento informado inválido | WS | D04 |
492 | Rejeição: O verEvento informado inválido | WS | D05 |
493 | Rejeição: detEvento não atende o Schema XML específico | WS | D06 |
494 | Rejeição: Chave de Acesso inexistente | WS | G06 |
501 | Rejeição: NF-e autorizada há mais de 30 dias (720 horas) | WS | GA02 |
502 | Rejeição: Erro na Chave de Acesso - Campo Id não corresponde à concatenação dos campos correspondentes | WS | H02c |
516 | Rejeição: Falha no schema XML - inexiste a tag raiz esperada para a mensagem | WS | D01a |
517 | Rejeição: Falha no schema XML - inexiste atributo versao na tag raiz da mensagem | WS | D01b |
545 | Rejeição: Falha no schema XML - versão informada na versaoDados do SOAPHeader diverge da versão da mensagem | WS | D01c |
561 | Rejeição: Mês de Emissão informado na Chave de Acesso difere do Mês de Emissão da NFe | WS | H07a |
572 | Rejeição: Erro Atributo ID do evento não corresponde a concatenação dos campos ("ID" + tpEvento + chNFe + nSeqEvento) | WS | G05 |
573 | Rejeição: Duplicidade de Evento | WS | G07 |
574 | Rejeição: O autor do evento diverge do emissor da NF-e | WS | G08 |
575 | Rejeição: O autor do evento diverge do destinatário da NF-e | WS | G09 |
576 | Rejeição: O autor do evento não é um órgão autorizado a gerar o evento | WS | G10 |
577 | Rejeição: A data do evento não pode ser menor que a data de emissão da NF-e | WS | G11 |
578 | Rejeição: A data do evento não pode ser maior que a data do processamento | WS | G12 |
579 | Rejeição: A data do evento não pode ser menor que a data de autorização para NF-e não emitida em contingência | WS | G13 |
580 | Rejeição: O evento exige uma NF-e autorizada | WS | GA01 |
587 | Rejeição: Usar somente o namespace padrão da NF-e | WS | D01d |
588 | Rejeição: Não é permitida a presença de caracteres de edição no início/fim da mensagem ou entre as tags da mensagem | WS | D01e |
594 | Rejeição: O número de seqüencia do evento informado é maior que o permitido | WS | G03 |
613 | Rejeição: Chave de acesso difere da existente em BD | WS | H07b |
999 | Rejeição: Erro não catalogado (mensagem) | WS | - |
Tratamento de Erro:
Caso ocorra algum erro na chamada do WS (5001-6145) ou a requisição não seja atendida pelo WS (203-999), será gravado um log na pasta log, com as seguintes informações que devem ser úteis para identificação do problema:
- Timestamp - data e hora da ocorrência do erro
- WS - nome do WS acessado
- URL - URL do WS acessado
- ambiente - código do ambiente
- certificado - nome do titular (assunto) do certificado digital utilizado
- erro - código e descrição do erro
- msgDados - mensagem enviada ao WS
- msgRetWS - conteúdo do retorno do WS
Os erros com código > 5000 são erros tratados pela DLL e ocorrem nas seguintes situações:
- 5001 - 5017 - falha na tentativa de consumir o WS (problema de conexão/rede)
- 5101 - 5105 - falha no tratamento do XML de resposta do WS (problema na resposta do WS)
- 5201 - 5206 - falha na recuperação da URL do WS desejado (problema no arquivo de configuração da URL)
- 5403 - 5408 - falha no acesso ao certificado digital
- 6101 - 6141 - falha no tratamento dos pârametros da chamada da DLL
- 7001 - 7003 - falha na validação da licença
Histórico de atualização:
- 2012-11-09 - 2Gv1.2 - versão inicial
- 2012-12-04 - correção do código de exemplo
- 2017-08-15 - 2Gv4.00 - atualização para suportar a versão 4.00.
Mensagens XML - (CANCELAMENTO COMO EVENTO)
Evento de Cancelamento
<envEvento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> <idLote>00000002311801</idLote> <evento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> <infEvento Id="ID1101113512081014278500019055001000000023118453497301"> <cOrgao>35</cOrgao> <tpAmb>2</tpAmb> <CNPJ>10142785000190</CNPJ> <chNFe>35120810142785000190550010000000231184534973</chNFe> <dhEvento>2012-08-18T20:26:58-03:00</dhEvento> <tpEvento>110111</tpEvento> <nSeqEvento>1</nSeqEvento> <verEvento>1.00</verEvento> <detEvento versao="1.00"> <descEvento>Cancelamento</descEvento> <nProt>135120005426259</nProt> <xJust>Teste de Cancelamento como Evento</xJust> </detEvento> </infEvento> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> <Reference URI="#ID1101113512081014278500019055001000000023118453497301"> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>ltctExluD0Od3kxNimxSQTgKkAQ=</DigestValue> </Reference> </SignedInfo> <SignatureValue>iorN1e//LP/fKzwJtmxkh4fvZjafKkd4qU(...)eG3PPUC3p7B6/9g1f3d599XTO62JsQEU=</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIFtDCCBJygAwIBAgIIG1mv0XRoW(...)ED6q4AxkHNUQBimd6HAhA0oDjO/oaDeEC</X509Certificate> </X509Data> </KeyInfo> </Signature> </evento>
Resposta do Evento de Cancelamento
<retEnvEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> <idLote>00000002311801</idLote> <tpAmb>2</tpAmb> <verAplic>SP_EVENTOS_PL_100</verAplic> <cOrgao>35</cOrgao> <cStat>128</cStat> <xMotivo>Lote de Evento Processado</xMotivo> <retEvento versao="1.00"> <infEvento> <tpAmb>2</tpAmb> <verAplic>SP_EVENTOS_PL_100</verAplic> <cOrgao>35</cOrgao> <cStat>135</cStat> <xMotivo>Evento registrado e vinculado a NF-e</xMotivo> <chNFe>35120810142785000190550010000000231184534973</chNFe> <tpEvento>110111</tpEvento> <xEvento>Cancelamento registrado</xEvento> <nSeqEvento>1</nSeqEvento> <CNPJDest>00000000000191</CNPJDest> <emailDest>contato@bb.com.br</emailDest> <dhRegEvento>2012-08-18T20:32:05-03:00</dhRegEvento> <nProt>135120005426267</nProt> </infEvento> </retEvento> </retEnvEvento>
Proc do Evento de Cancelamento
<procEventoNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> <evento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> <infEvento Id="ID1101113512081014278500019055001000000023118453497301"> <cOrgao>35</cOrgao> <tpAmb>2</tpAmb> <CNPJ>10142785000190</CNPJ> <chNFe>35120810142785000190550010000000231184534973</chNFe> <dhEvento>2012-08-18T20:26:58-03:00</dhEvento> <tpEvento>110111</tpEvento> <nSeqEvento>1</nSeqEvento> <verEvento>1.00</verEvento> <detEvento versao="1.00"> <descEvento>Cancelamento</descEvento> <nProt>135120005426259</nProt> <xJust>Teste de Cancelamento como Evento</xJust> </detEvento> </infEvento> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> <Reference URI="#ID1101113512081014278500019055001000000023118453497301"> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>ltctExluD0Od3kxNimxSQTgKkAQ=</DigestValue> </Reference> </SignedInfo> <SignatureValue>iorN1e//LP/fKzwJtmxkh4fvZjafK(...)7B6/9g1f3d599XTO62JsQEU=</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIFtDCCBJygAwIBAgIIG1mv(...)AxkHNUQBimd6HAhA0oDjO/oaDeEC</X509Certificate> </X509Data> </KeyInfo> </Signature> </evento> <retEvento versao="1.00"> <infEvento> <tpAmb>2</tpAmb> <verAplic>SP_EVENTOS_PL_100</verAplic> <cOrgao>35</cOrgao> <cStat>135</cStat> <xMotivo>Evento registrado e vinculado a NF-e</xMotivo> <chNFe>35120810142785000190550010000000231184534973</chNFe> <tpEvento>110111</tpEvento> <xEvento>Cancelamento registrado</xEvento> <nSeqEvento>1</nSeqEvento> <CNPJDest>00000000000191</CNPJDest> <emailDest>contato@bb.com.br</emailDest> <dhRegEvento>2012-08-18T20:32:05-03:00</dhRegEvento> <nProt>135120005426267</nProt> </infEvento> </retEvento> </procEventoNFe>
Exemplos de uso:
Visual Basic 6.0
' declaração das variáveis que serão utilizadas na passagem de parâmetros da DLL ' Dim msgDados As String ' retorna a mensagem XML do pedido de cancelamento criado pela DLL que foi enviado ao WS Dim msgRetWS As String ' retorna a mensagem XML de resposta do WS Dim msgResultado As String ' retorna a literal do resultado da chamada do WS Dim siglaWS As String ' informar a sigla do WS que deseja consultar, informar SVAN - SEFAZ Virtual do Ambiente Nacional (MA, PA e PI) ou SVRS - SEFAZ Virtual do Rio Grande do Sul (AC, AL, AP, DF, ES, PB, RJ, RN, RO, RR, SC, SE e TO), caso a UF seja usuário da SEFAZ Virtual, em caso contrário informar a sigla da UF (AM, BA, CE, GO, MS, MT, MG, PE, PR, RS e SP). Em caso de contingência SCAN, informar a sigla SCAN Dim nomeCertificado As String ' informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL. Ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS" ' ' importante: indicar aqui assunto do certificado digital válido, este da associacao trata-se apenas de um exemplo para testes ' ' EXEMPLO PARA USO DE ARQUIVO PFX ' 'nomeCertificado = "ARQUIVO|c:\certificado.pfx|associacao" ' ' onde: ' ARQUIVO --> indica opção de uso de arquivo PFX ' c:\certificado.pfx --> nome e caminho do arquivo PFX ' associacao --> senha do arquivo PFX ' ' ' EXEMPLO PARA USO DE ARQUIVO PFX EM STRING BASE64 ' 'nomeCertificado = "CERTIFICADO|MIIGoDCCBYigAwIBAgIQep(arquivo pfx do certificado digital convertido em base64...)QQDExNBQy|senha" ' ' onde: ' CERTIFICADO --> indica opção de uso de arquivo PFX em base64 ' MIIGoDCCBYigAwIBAgIQep(arquivo pfx do certificado digital convertido em base64...)QQDExNBQy --> arquivo PFX em base64 ' senha --> senha do arquivo PFX ' Dim tipoAmbiente As Integer ' informar o código do ambiente a ser consultado: 1- produção ou 2-homologação Dim versao As String ' informar a versão da mensagem do pedido: 1.00 - cancelamento como evento' ' Informações da NF-e a ser cancelada ' Dim chaveNFe As String ' informar a chave de acesso da NF-e objeto do cancelamento Dim nProtocolo As String ' informar o número do protocolo de autorização de uso da NF-e objeto do cancelamento Dim justificativa As String ' informar a justificativa do cancelamento com pelo menos 15 caracteres Dim dhEvento As String ' informar a data e hora do pedido de cancelamento, a DLL pega a data e hora do sistema se for informado vazio "" ' ' Retorno da DLL ' Dim cStat As Long ' retorna o resultado da chamada do WS Dim nProtocoloCanc As String ' retorna o número do protocolo da homologação do cancelamento da NF-e Dim dProtocoloCanc As String ' retorna a data e hora da homologação do cancelamento da NF-e pela SEFAZ Dim procCancNFe As String ' retorna protocolo de homologação de cancelamento da NF-e gerada de acordo com o leiaute de distribuição de Cancelamento de NF-e ' ' As variáveis do proxy devem ser informadas se necessário ' ' proxy deve ser informado com o endereço da url : porta, ex: 192.168.15.1:443 ' Dim proxy As String ' informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta https, a porta padrão do https é 443, assim teríamos algo do tipo 'http://192.168.15.1:443' Dim usuario As String ' informar o usuário para autenticação no proxy, se necessário Dim senha As String ' informar a senha de autenticação no proxy, se necessário ' ' chave da licença de uso, vinculado ao CNPJ do emissor ' Dim licenca As String ' informar a chave da licenca de uso ou registro, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro, para maiores detalhes veja as condições de uso ' ' IMPORTANTE: todas as variáveis utilizadas como parâmetro da DLL devem ser inicialiazadas ' ' proxy = "" ' informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta https, a porta padrão do https é 443, assim teríamos algo do tipo 'http://192.168.15.1:443' usuario = "" ' informar o usuário para autenticação no proxy, se necessário senha = "" ' informar a senha de autenticação no proxy, se necessário msgDados = "" ' retorna a mensagem XML do pedido de cancelamento criado pela DLL que foi enviado ao WS msgRetWS = "" ' retorna a mensagem XML de resposta do WS ' ' ' licenca = "" ' informar a chave da licenca de uso ou registro, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro, para maiores detalhes veja as condições de uso ' ' prepara variáveis ' nomeCertificado = "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS" ' importante: indicar aqui assunto do certificado digital válido, este da associacao trata-se apenas de um exemplo para testes siglaWS = "SVRS" ' informar a sigla do WS que deseja consultar, informar SVAN - SEFAZ Virtual do Ambiente Nacional (MA, PA e PI) ou SVRS - SEFAZ Virtual do Rio Grande do Sul (AC, AL, AP, DF, ES, PB, RJ, RN, RO, RR, SC, SE e TO), caso a UF seja usuário da SEFAZ Virtual, em caso contrário informar a sigla da UF (AM, BA, CE, GO, MS, MT, MG, PE, PR, RS e SP). Em caso de contingência SCAN, informar a sigla SCAN siglaUF = "RJ" ' sigla da UF tipoAmbiente = 2 ' informar o código do ambiente a ser consultado: 1- produção ou 2-homologação versao = "1.00" ' informar a versão da mensagem do WS ' 1.00 (Cancelamento por Evento) - uso obrigatório após 01/12/2012 chaveNFe = "33100700000000000191550011234567891876543210" ' informar a chave de acesso da NF-e objeto do cancelamento nProtocolo = "133100021635462" ' informar o número do protocolo de autorização de uso da NF-e objeto do cancelamento justificativa = "Nota fiscal emitida com valor incorreto" ' informar a justificativa do cancelamento com pelo menos 15 caracteres dhEvento = Format$(Now, "yyyy-mm-dd HH:mm:ss") ' pode ser informado com "" para a DLL pegar a data e hora do equipamento, mas podem ocorrer rejeição se o horário não estiver sincronizado com o WS ' ' Retorno da DLL ' cStat = 0 ' retorna o resultado da chamada do WS nProtocoloCanc = "" ' retorna o número do protocolo da homologação do cancelamento da NF-e dProtocoloCanc = "" ' retorna a data e hora da homologação do cancelamento da NF-e pela SEFAZ procCancNFe = "" ' retorna protocolo de homologação de cancelamento da NF-e gerada de acordo com o leiaute de distribuição de Cancelamento de NF-e ' Dim objNFeUtil As NFe_Util_2G.Util ' ' instancia a DLL ' Set objNFeUtil = New NFe_Util_2G.Util ' ' Screen.MousePointer = vbHourglass ' ampulheta ' procCancNFe = objNFeUtil.CancelaNFEvento(siglaWS, tipoAmbiente, nomeCertificado, versao, msgDados, msgRetWS, cStat, msgResultado, chaveNFe, nProtocolo, justificativa, dhEvento, nProtocoloCanc, dProtocoloCanc, proxy, usuario, senha, licenca) ' ' Screen.MousePointer = vbDefault ' normal ' ' analisar o retorno do WS, se cStat: ' ' 135 - Evento registrado e vinculado a NF-e (cancelamento de NF-e homologado) ' 155 - Evento registrado e vinculado a NF-e fora de prazo (a SEFAZ deve criar um cStat para Evento recebido fora do prazo); ' ' ' procure guardar o msgDados, msgRetWS e msgResultado, pois eles serão úteis para identificação do problemas. ' ' ' mostra mensagem XML enviada ' MsgBox msgDados, vbInformation, "Mensagem XML do Pedido de Cancelamento de NF-e" ' ' mostra mensagem XML da mensagem de retorno do WS ' MsgBox msgResultado + Chr(13) + Chr(13) + msgRetWS, vbInformation, "Resultado da chamada do Web Service" ' ' libera classe ' Set objNFeUtil = Nothing
- 12.3.1. CancelaNFEvento [15-08-17]
12.3. Cancelamento e Inutilização de NF-e [15-08-17] - « Anterior
12.3. Cancelamento e Inutilização de NF-e [15-08-17] - Próximo »
12.3.2. InutilizaNroNF2G [15-08-17]