Fluxo - Cancelamento/Inutilização da NF-e
O cancelamento permite ao contribuinte anular uma nota fiscal que já foi autorizada, mas para a qual não houve circulação de mercadoria. Já a inutilização permite declarar que uma determinada numeração de nota não foi utilizada, garantindo que a SEFAZ não suspeite de fraude. Para ambos os casos temos o embasamento na legislação:
Cancelamento
Cláusula décima segunda Em prazo não superior a vinte e quatro horas, contado do momento em que foi concedida a Autorização de Uso da NF-e, de que trata o inciso III da cláusula sétima, o emitente poderá solicitar o cancelamento da respectiva NF-e, desde que não tenha havido a circulação da mercadoria ou a prestação de serviço e observadas as normas constantes na cláusula décima terceira.
Inutilização
Cláusula décima quarta O contribuinte deverá solicitar, mediante Pedido de Inutilização de Número da NF-e, até o 10 (décimo) dia do mês subsequente, a inutilização de números de NF-e não utilizados, na eventualidade de quebra de sequência da numeração da NF-e.
Aí surge a pergunta:
"Como sei qual devo utilizar? Tenho que mandar para APIs diferentes?"
Isso a InvoiSys simplifica para você!
Nossa API 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.
APIs Essenciais 💡
Cancelamento NF-e por número e série: /api/nfe/cancelarnfecnpj
APIs Opcionais 🥈
Consulta do Documento por Chave de Acesso: /api/nfe/getbychavesSTD/{chave}
Obter o XML da NF-e: /api/nfe/obterxml
Etapas e APIs
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 NF-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, a API - Cancelar NF-e por Id Estabelecimento e API - Cancelar NF-e por CNPJ Estabelecimento.
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 24 horas contadas a partir da autorização da nota, podendo este tempo ser reduzido à critério da UF.
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, opcionalmente, 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 NF-e (Sucesso); b) Rejeição no cancelamento; c) Exceção na comunicação com a SEFAZ

a) Cancelamento ou inutilização da NF-e (Sucesso)
São os dois cenários de sucesso na chamada da API. Para isso devemos observar:
Tags do bloco
acoes
: Retornofalse
.
A seguir vamos entender como analisar se foi um cancelamento ou uma inutilização.
Cancelamento
Para o identificarmos, podemos checar os seguintes blocos:
dadosDoDocumento:
codigoStatusSEFAZ
: Retorno101
;descricaoStatusSEFAZ
: RetornoCancelamento de NF-e homologado
.
status: key
: Retorno1
(ao consultar via chave);status: value
: Retornocancelado
(ao consultar via chave).
Veja no exemplo abaixo:
{
"dadosDoDocumento": {
"id": 1312,
"chaveDeAcesso": "35191107544236000138550020000010141123412340",
"dataHoraEmissao": "2019-11-06T16:22:19.457",
"dataDeAutorizacao": "2019-11-07T14:33:06Z",
"documentoComErro": false,
"codigoStatusSEFAZ": "101",
"descricaoStatusSEFAZ": "Cancelamento de NF-e homologado",
"protocoloSEFAZ": "135190008021147",
"urlConsultaViaQRCode": null,
"urlConsultaViaChaveDeAcesso": null
},
"acoes": {
"corrigirDocumento": false,
"cancelar": false,
"enviarContingencia": false,
"tentarNovamenteMaisTarde": false,
"entrarEmContatoComSuporteImediatamente": false
},
"excecao": null
}
Inutilização
Já no caso de inutilização, veremos as seguintes informações:
dadosDoDocumento:
codigoStatusSEFAZ
: Retorno102
descricaoStatusSEFAZ
: RetornoInutilização de número homologado
.
status: key
: Retorno1
(ao consultar via chave);status: value
: Retornoinutilizado
(ao consultar via chave).
Veja no exemplo abaixo:
{
"dadosDoDocumento": {
"id": 1314,
"chaveDeAcesso": "35191107544236000138550020000010151000000009",
"dataHoraEmissao": "2019-11-07T14:36:24.7096147Z",
"dataDeAutorizacao": null,
"documentoComErro": false,
"codigoStatusSEFAZ": "102",
"descricaoStatusSEFAZ": "Inutilização de número homologado",
"protocoloSEFAZ": "135190008021182",
"urlConsultaViaQRCode": null,
"urlConsultaViaChaveDeAcesso": null
},
"acoes": {
"corrigirDocumento": false,
"cancelar": false,
"enviarContingencia": false,
"tentarNovamenteMaisTarde": false,
"entrarEmContatoComSuporteImediatamente": false
},
"excecao": null
}
b) Rejeição no cancelamento
Caso o cancelamento seja enviado após o período de 24 horas, a SEFAZ poderá rejeitá-lo, sendo assim, o status da na nota se manterá como autorizado.

Quando isso ocorrer, em nosso retorno você verá o seguinte em nosso retorno:
acoes: corrigirDocumento
: Retornotrue
;dadosDoDocumento: erro
: Retornotrue
;excecao
: Retorno com string descrevendo a rejeição.
{
"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.
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ê deverá observar a tag abaixo:
acoes: tentarNovamenteMaisTarde
: Retornotrue
.
{
"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 SEFAZ e eventualmente poderá ser bloqueado por consumo indevido.
O que posso fazer?
Tenha uma rotina que, dentro do período válido para o cancelamento (24 horas), seu software tente fazer envios em períodos espaçados de tempo. Dessa forma, nós evitamos tentar consumir os serviços da SEFAZ enquanto está intermitente
Terminamos esta etapa 😁. Para seguir, basta selecionar a card abaixo
Last updated
Was this helpful?