> For the complete documentation index, see [llms.txt](https://integracao.gitbook.io/invoisys/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://integracao.gitbook.io/invoisys/getting-started/documentos-fiscais/emissao/nfc-e/fluxo-operacional/envio-cancelamento-inutilizacao-nfc-e-fluxo-completo.md).

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