Fluxo - Cancelamento/Inutilização da NFC-e

Enquanto o cancelamento permite ao contribuinte cancelar uma nota que já havia sido autorizada, mas não houve circulação da mercadoria, a inutilização permite que ele declare que não utilizou uma determinada numeração, assegurando-se de que a SEFAZ não pense que está fraudando. Para ambos os casos temos o embasamento na legislação a respeito do cancelamento e da inutilização:

Cancelamento

Cláusula décima quinta O emitente poderá solicitar o cancelamento da NFC-e, desde que não tenha havido a saída da mercadoria, em prazo não superior a 30 minutos, podendo ser reduzido a critério de cada unidade federada, contado do momento em que foi concedida a Autorização de Uso da NFC-e, de que trata o inciso I da cláusula oitava.

Cancelamento por Substituição

Cláusula décima quinta-A Na hipótese prevista no inciso I da cláusula décima segunda, o emitente poderá solicitar o cancelamento da NFC-e, desde que tenha sido emitida uma outra NFC-e em contingência para acobertar a mesma operação, em prazo não superior a 168 horas, podendo ser reduzido a critério de cada unidade federada, contado do momento em que foi concedida a Autorização de Uso da NFC-e, de que trata o inciso I da cláusula oitava

Inutilização

Cláusula décima sexta O contribuinte deverá solicitar, mediante Pedido de Inutilização de Número da NFC-e, até o 10 (décimo) dia do mês subsequente, a inutilização de números de NFC-e não utilizados, na eventualidade de quebra de sequência da numeração da NFC-e

Aí surge a pergunta: "Como sei qual devo utilizar? Tenho que mandar para APIs diferentes?" - Isso a InvoiSys simplifica para você.

Nossa API de Cancelamento pode ser utilizada tanto para o cancelamento quanto para a inutilização do documento e mais, você não precisa mapear do seu lado quando deve ser um e quando deve ser outro.

Logo abaixo vamos descrever para você todo o fluxo para a emissão do cancelamento/inutilização.

API's Essenciais 💡

API's Opcionais 🥈

Etapas e API's

Para detalharmos melhor a operação, a separamos em tópicos, porém você consegue ver o fluxo completo aqui 📝.

1) Emitindo o cancelamento/inutilização

Da mesma maneira que no Envio Normal da NFC-e, também precisamos nos atentar para termos um token de acesso válido.

Tendo ele em mãos devemos então escolher qual API utilizaremos. Atualmente temos duas:

Depois de decidirmos qual API utilizaremos, devemos preparar o JSON com as informações e então realizar a chamada da API.

Ao receber a chamada, a InvoiSys verificará na SEFAZ se será necessário fazer a inutilização ou o cancelamento do documento. E será com base nessa resposta que o retorno chamada será elaborado.

Prazo máximo para cancelamento!

É importante relembrar que o prazo máximo para cancelamento é de 30 minutos contados a partir da autorização da nota!

2) Retorno da chamada

Conforme falamos no tópico anterior, o retorno da chamada da API variará de acordo com o status do documento na SEFAZ. É com base nesse retorno que entendemos o que deve ser feito após a emissão do mesmo.

Assim como no envio normal, nele existem algumas informações que podem ser interessantes você guardar, como a chaveDeAcesso e o id do documento criado em nossa base, pois são utilizados em outras APIs.

Com base no retorno podemos chegar a 3 cenários:

a) Cancelamento ou inutilização da NFC-e (Sucesso); b) Rejeição no cancelamento; c) Exceção na comunicação com a SEFAZ

a) Cancelamento ou Inutilização da NFC-e (Sucesso)

São os dois cenários de sucesso na chamada da API. Para isso devemos observar o seguinte:

  • Tags do bloco acoes: Retornofalse.

A seguir vamos entender como analisar se foi um cancelamento ou uma inutilização.

a.1) Cancelamento

Para identificarmos o cancelamento, podemos checar o retorno desta forma::

  • dadosDoDocumento:

  • codigoStatusSEFAZ: Retorno 101

  • descricaoStatusSEFAZ: Retorno Cancelamento de NF-e homologado.

  • status: key: Retorno 1;

  • status: value: Retorno cancelado.

{
  "dadosDoDocumento": {
    ...
    "documentoComErro": false,
    "codigoStatusSEFAZ": "101",
    "descricaoStatusSEFAZ": "Cancelamento de NF-e homologado",
    ...
    "documentoJaEmitidoAnteriormente": false,
    "status": {
      "key": 1,
      "value": "Cancelado"
    }
  },
  "acoes": {
    "corrigirDocumento": false,
    "cancelar": false,
    "enviarContingencia": false,
    "tentarNovamenteMaisTarde": false,
    "entrarEmContatoComSuporteImediatamente": false,
    "emitirProximoDocumentoNormal": true
  },
  "excecao": null
}

a.2) Inutilização

Já no caso de inutilização, veremos o seguinte retorno:

  • dadosDoDocumento: codigoStatusSEFAZ: Retorno 102 (Inutilização);

  • descricaoStatusSEFAZ: Retorno Inutilização de número homologadodo.

  • status: key: Retorno 1;

  • status: value: Retorno inutilizado.

{
  "dadosDoDocumento": {
    ...
    "dataDeAutorizacao": null,
    "documentoComErro": false,
    "codigoStatusSEFAZ": "102",
    "descricaoStatusSEFAZ": "Inutilizacao de numero homologado",
    ...
    "documentoJaEmitidoAnteriormente": false,
    "status": {
      "key": 2,
      "value": "Inutilizado"
    }
  },
  "acoes": {
    "corrigirDocumento": false,
    "cancelar": false,
    "enviarContingencia": false,
    "tentarNovamenteMaisTarde": false,
    "entrarEmContatoComSuporteImediatamente": false,
    "emitirProximoDocumentoNormal": true
  },
  "excecao": null
}

b) Rejeição no Cancelamento

Caso o cancelamento seja enviado após o período de 30 minutos, a SEFAZ poderá rejeitá-lo, sendo assim, o status da na nota se manterá como autorizado.

Quando isso ocorrer, em nosso retorno você verá

  • acoes: corrigirDocumento: Retorno true;

  • excecao: Retorno string com o erro da SEFAZ.

{
  "dadosDoDocumento": {
    "id": 1297,
    "chaveDeAcesso": "26191129892534000151550030000000161123412349",
    "dataHoraEmissao": "2019-11-06T14:18:17.467",
    "dataDeAutorizacao": null,
    "documentoComErro": true,
    "codigoStatusSEFAZ": "100",
    "descricaoStatusSEFAZ": "Autorizado o uso da NF-e",
    "protocoloSEFAZ": "126190000302367",
    "urlConsultaViaQRCode": null,
    "urlConsultaViaChaveDeAcesso": null
  },
  "acoes": {
    "corrigirDocumento": true,
    "cancelar": false,
    "enviarContingencia": false,
    "tentarNovamenteMaisTarde": false,
    "entrarEmContatoComSuporteImediatamente": false
  },
  "excecao": "501 - Rejeição: Prazo de cancelamento superior ao previsto na Legislação"
}

Você verificará que no exemplo acima o codigoStatusSEFAZ permanece como 100, pois, entendemos que, mesmo com a rejeição no cancelamento, o status final da nota é de autorizado.

Se atente ao prazo!

É extremamente importante não enviar mais o cancelamento caso este tenha passado no prazo. Se o envio continuar sendo realizado, a SEFAZ poderá bloquear as emissões com a justificativa de estar consumindo indevidamente o serviço.

Minha nota passou do prazo! E agora?

Existem algumas maneiras de lidar com esse cenário, como, por exemplo, fazer uma solicitação formal para a SEFAZ da sua UF pedindo o cancelamento extemporâneo se esta disponibilizar.

Nós recomendamos que, quando isso acontecer, verifique com o departamento fiscal ou contabilidade sobre o que poderá ser feito.

Caso sua NFC-e normal tenha passado por falha de comunicação com a SEFAZ, verifique o tópico Cancelamento por Substituição

c) Exceção na comunicação com a SEFAZ

Assim como falamos no envio normal, no cancelamento também podem haver exceções na comunicação com a SEFAZ.

Quando isso ocorrer, você verá a seguinte informação:

  • acoes: tentarNovamenteMaisTarde: Retorno true.

{
  "dadosDoDocumento": null,
  "acoes": {
    "corrigirDocumento": false,
    "cancelar": false,
    "enviarContingencia": false,
    "tentarNovamenteMaisTarde": true,
    "entrarEmContatoComSuporteImediatamente": false
  },
  "excecao": "The operation has timed out"
}

Não tente ficar enviando o cancelamento a todo momento.

Lembre-se, quando há uma exceção na comunicação com a SEFAZ, não sabemos se ela aceitou ou não a requisição, sendo assim, o envio constante pode estar sendo aceito pela e eventualmente poderá ser bloqueado por consumo indevido.

3) Cancelamento por Substituição

Quando existem 2 NFCes representando a mesma venda (uma em emissão normal e outra em contingência) indicando duplicidade, o contribuinte poderá cancelar a anterior indicando que foi feita uma nova emissão.

Normalmente acontece assim:

  1. A empresa envia para a SEFAZ uma NFCe com tipo de emissão Normal (NFCe 1)

  2. Devido a algum problema ou indisponibilidade, não é possível obter o retorno se aquela NFCe foi ou não autorizada

  3. Sendo necessária realizar a venda, a empresa envia outra NFCe representando a mesma operação, porém agora em contingência Offline (NFCe 2)

  4. Quando o problema é resolvido, é verificado que a NFCe 1 havia sido autorizada pela a Sefaz. Porém a NFCe 2 também foi emitida (em contingência) e tem valor legal. Portanto existem 2 notas (NFCe 1 e NFCe 2) acobertando a mesma venda

  5. Neste caso, a empresa deve emitir um Cancelamento por Substituição cancelando a NFCe 1 e referenciando que a NFCe 2 foi emitida em seu lugar e é o documento de posse do consumidor O cancelamento por substituição dará ao contribuinte o prazo de até 168 horas (7 dias) para a efetivação do evento.

a) Chamada do Cancelamento por Substituição

As possíveis APIs utilizadas para o cancelamento pro substituição são as mesmas descritas no tópico Emitindo o cancelamento/inutilização, com a diferença que, obrigatoriamente, será necessário enviar o parâmetro "chaveDeAcessoSubstituta" (chave da NFC-e em contingência), como no exemplo a seguir:

{
  "ambiente": 2,
  "cnpj": "17921427000125",
  "numeroNFe": 10,
  "serie": 1,
  "justificativa": "Cancelamento por substituicao",
  "chaveDeAcessoSubstituta": "13230817921427000125650470000008621123456787",
  "retornoCompleto": true
}

a.1) Fluxo

O fluxo indicado para o envio do Cancelamento por Substituição consiste em aguardar que a NFC-e emitida em contingência na numeração seguinte seja autorizada, garantindo que a venda acobertando a operação que recebeu falha de comunicação com a SEFAZ esteja válida.

Dessa forma, é possível criar uma rotina que verifique as NFC-es sujeitas a timeout e cuja contingência tenha sido autorizada. Outra abordagem é implementar um gatilho que, ao receber a confirmação de autorização durante o processo assíncrono de contingência, prossiga automaticamente com o cancelamento por substituição da faixa normal que sofreu falha de comunicação.

Lembre-se do prazo de 7 dias para o envio do cancelamento por substituição! Portanto, não deixe de reenviar uma NFC-e em contingência represada ou pendente de ajuste por conta de alguma rejeição.

b) Retorno do cancelamento por substituição

O retorno será o mesmo indicado no fluxo do tópico "Retorno da chamada". Caso a NFC-e normal esteja autorizada na SEFAZ, a invoiSys fará a requisição do evento de Cancelamento por Substituição, indicando a chave substituída informada no JSON. Caso contrário (NFC-e normal não autorizada), o registro será inutilizado.

Last updated