# 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](https://www.confaz.fazenda.gov.br/legislacao/ajustes/2018/AJ0007_18) e da [inutilização](https://www.confaz.fazenda.gov.br/legislacao/ajustes/2016/AJ_019_16):

#### 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 💡 <a href="#apis-essenciais" id="apis-essenciais"></a>

* **Cancelar documento por ID Estabelecimento**: [/api/nfce/cancelarnfce​](/invoisys/endpoints/emissao-notas/nfc-e-1/api-cancelar-inutilizar-nfc-e.md)
* **Cancelar documento por CNPJ**: [/api/nfce/cancelarnfcecnpj​](/invoisys/endpoints/emissao-notas/nfc-e-1/api-cancelar-inutilizar-nfc-e-por-cnpj.md)

## API's Opcionais 🥈

* **Consulta do documento por Chave de Acesso**: [/api/nfce/getbychavedeacesso/{chave}](/invoisys/endpoints/emissao-notas/nfc-e-1/api-consulta-nfc-e-por-chave-de-acesso.md)
* **Consulta do documento por Número/Série**: [/api/nfce/getby\_numero\_serie\_cnpj/{numero}/{serie}/{cnpj}/{ambiente}](/invoisys/endpoints/emissao-notas/nfc-e-1/api-consulta-nfc-e-por-numero-e-serie.md)
* **Consulta do documento por ID**: [/api/nfce/{id}](/invoisys/endpoints/emissao-notas/nfc-e-1/api-consulta-nfc-e-por-id.md)
* **Gerar DANFE**: [/api/nfce/getdanfe/{id}​](/invoisys/endpoints/emissao-notas/nf-e/api-danfe-por-id.md)

## Etapas e API's

Para detalharmos melhor a operação, a separamos em tópicos, [porém você consegue ver o fluxo completo aqui](https://drive.google.com/open?id=1q55VpWbpyNYblWYZzxGou2fnUmi6WfLA) 📝.

### 1) Emitindo o cancelamento/inutilização

Da mesma maneira que no [Envio Normal da NFC-e](/invoisys/getting-started/documentos-fiscais/emissao/nfc-e/fluxo-operacional/envio-normal-nfc-e-fluxo-completo.md), 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:

* [API - Cancelar NFC-e por Id Estabelecimento](/invoisys/endpoints/emissao-notas/nfc-e-1/api-cancelar-inutilizar-nfc-e.md);
* [API - Cancelar NFC-e por CNPJ Estabelecimento](/invoisys/endpoints/emissao-notas/nfc-e-1/api-cancelar-inutilizar-nfc-e-por-cnpj.md).

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.

![](/files/-LvLvTY9DdqwN2lQ0Xk1)

{% hint style="warning" %}

#### 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!
{% endhint %}

### 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](/invoisys/getting-started/documentos-fiscais/emissao/nf-e/teste-fluxos-operacionais/envio-normal-modelo-completo.md#2-retorno-da-chamada), 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.

![](/files/-LwJwuAMqe8Yd6J9jydN)

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

[a) Cancelamento ou inutilização da NFC-e (Sucesso)](/invoisys/getting-started/documentos-fiscais/emissao/nfc-e/fluxo-operacional/envio-cancelamento-inutilizacao-nfc-e-fluxo-completo.md#a-cancelamento-ou-inutilizacao-da-nfc-e-sucesso);\
[b) Rejeição no cancelamento](/invoisys/getting-started/documentos-fiscais/emissao/nfc-e/fluxo-operacional/envio-cancelamento-inutilizacao-nfc-e-fluxo-completo.md#b-rejeicao-no-cancelamento);\
[c) Exceção na comunicação com a SEFAZ](/invoisys/getting-started/documentos-fiscais/emissao/nfc-e/fluxo-operacional/envio-cancelamento-inutilizacao-nfc-e-fluxo-completo.md#c-excecao-na-comunicacao-com-a-sefaz)

![](/files/-LwJxR7fsNmmfVdzbxbL)

### 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`: Retorno`false`.&#x20;

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:`&#x20;
* `codigoStatusSEFAZ`: Retorno `101`&#x20;
* `descricaoStatusSEFAZ`: Retorno `Cancelamento de NF-e homologado`.
* `status: key`: Retorno `1`;
* `status: value`: Retorno `cancelado`.

{% tabs %}
{% tab title="Response code: Created 201" %}

```javascript
{
  "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
}
```

{% endtab %}
{% endtabs %}

#### 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 homologado`.
* `status: key`: Retorno `2`;
* `status: value`: Retorno `inutilizado`.

{% tabs %}
{% tab title="Response code: Created 201" %}

```javascript
{
  "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
}
```

{% endtab %}
{% endtabs %}

### 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.

{% tabs %}
{% tab title="Response code: OK 200" %}

```javascript
{
  "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"
}
```

{% endtab %}
{% endtabs %}

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.

{% hint style="danger" %}

#### 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.
{% endhint %}

{% hint style="info" %}
**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**
{% endhint %}

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

Assim como falamos no [envio normal](/invoisys/getting-started/documentos-fiscais/emissao/nf-e/teste-fluxos-operacionais/envio-normal-modelo-completo.md#c-excecao-na-comunicacao-com-a-sefaz), 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`.

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

{% hint style="warning" %}

#### Não tente ficar enviando o cancelamento a todo momento.&#x20;

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.
{% endhint %}

**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[ ](#1-emitindo-o-cancelamento-inutilizacao)tópico [Emitindo o cancelamento/inutilização](#1-emitindo-o-cancelamento-inutilizacao), 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:

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

**a.1) Fluxo**&#x20;

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.

{% hint style="info" %}
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.
{% endhint %}

**b) Retorno do cancelamento por substituição**

O retorno será o mesmo indicado no fluxo do tópico ["Retorno da chamada"](#2-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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://integracao.gitbook.io/invoisys/getting-started/documentos-fiscais/emissao/nfc-e/fluxo-operacional/envio-cancelamento-inutilizacao-nfc-e-fluxo-completo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
