# Fluxo - Envio Contingência SEFAZ NFC-e

## O que é a emissão em contingência?

A emissão em contingência é um processo criado para que, sempre que hajam problemas na autorização da nota pela SEFAZ, o contribuinte tenha um respaldo para que sua operação prossiga normalmente. Segundo o [Ajuste SINIEF 19/16](https://www.confaz.fazenda.gov.br/legislacao/ajustes/2016/AJ_019_16):

> **Cláusula décima primeira** Quando em decorrência de problemas técnicos não for possível transmitir a NFC-e para a unidade federada do emitente, ou obter resposta à solicitação de Autorização de Uso da NFC-e, o contribuinte deverá operar em contingência, mediante a adoção, a critério da unidade federada, de uma das seguintes alternativas:
>
> _I - efetuar geração prévia do documento fiscal eletrônico em contingência e autorização posterior, conforme definições constantes no MOC._
>
> _II - utilizar equipamento Emissor de Cupom Fiscal - ECF ou Sistema Autenticador e Transmissor - SAT;_
>
> _III - transmitir Evento Prévio de Emissão em Contingência - EPEC (NFC-e), para a unidade federada autorizadora, nos termos da cláusula décima quarta, e imprimir pelo menos uma via do DANFE NFC-e que deverá conter a expressão “DANFE NFC-e impresso em contingência - EPEC regularmente recebido pela administração tributária autorizadora”, presumindo-se inábil o DANFE NFC-e impresso sem a regular recepção do EPEC pela unidade federada autorizadora._

Nós trabalhamos com a emissão do documento fiscal eletrônico emitido em contingência.

Para entender como é o processo de emissão em contingência, o fluxo demonstrado a seguir acoberta a emissão da nota dentro da integração com a InvoiSys.

## APIs Essenciais 💡

* **Envio Completo em contingência do documento**: [/api/nfce/envioxmlcontingencia](../../../../../endpoints/emissao-notas/nfc-e-1/api-envio-contingencia-completo-da-nfc-e)
* **Envio Híbrido em contingência do documento**: [/api/nfce/enviohibridacontingencia](../../../../../endpoints/emissao-notas/nfc-e-1/api-envio-contingencia-hibrida-da-nfc-e)
* **Gerar DANFE**: [/api/nfce/getdanfe/{id}](../../../../../endpoints/emissao-notas/nf-e/api-danfe-por-id)

## APIs Opcionais 🥈

* **Envio Completo do documento**: [/api/nfce/envioxmlnormal](../../../../../endpoints/emissao-notas/nfc-e-1/api-envio-normal-completo-da-nfc-e)
* **Envio Híbrido do documento**: [/api/nfce/enviohibridanormal](../../../../../endpoints/emissao-notas/nfc-e-1/api-envio-normal-hibrido-da-nfc-e)
* **Consulta do documento por ID**: [/api/nfce/{id}](../../../../../endpoints/emissao-notas/nfc-e-1/api-consulta-nfc-e-por-id)
* **Consulta do documento por Chave de Acesso**: [/api/nfce/getbychavedeacesso/{chave}](../../../../../endpoints/emissao-notas/nfc-e-1/api-consulta-nfc-e-por-chave-de-acesso)
* **Consulta do documento por Número/Série**: [/api/nfce/getby\_numero\_serie\_cnpj/{numero}/{serie}/{cnpj}/{ambiente}](../../../../../endpoints/emissao-notas/nfc-e-1/api-consulta-nfc-e-por-numero-e-serie)
* **Cancelar documento por ID Estabelecimento**: [/api/nfce/cancelarnfce](../../../../../endpoints/emissao-notas/nfc-e-1/api-cancelar-inutilizar-nfc-e)
* **Cancelar documento por CNPJ**: [/api/nfce/cancelarnfcecnpj](../../../../../endpoints/emissao-notas/nfc-e-1/api-cancelar-inutilizar-nfc-e-por-cnpj)

## Etapas e suas APIs

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=1_hb3oLPdhVgtHOPDcXqAcV1vGdhLWAq0) 📝.

### 1) Emissão da NFC-e

Antes de iniciamos a emissão da nota, é necessário estar com um token de acesso válido, pois este será utilizado no cabeçalho da chamada da [API de Envio](../../../../../endpoints/emissao-notas/nf-e/api-envio). Tendo ele em mãos, podemos partir para a emissão da nota.

A sua missão é gerar os dados da operação, como Produtos, Pagamentos, etc., e criar um XML (Modelo Completo) ou JSON (Modelo Híbrido) que será mandado em nossas APIs.

Assim que recebermos a chamada, faremos algumas validações no XML. Se estiver correto, assinaremos o mesmo e o transmitiremos à SEFAZ.

Aqui você irá enviar a operação de venda para nós, utilizando a [API de Envio Completo](../../../../../endpoints/emissao-notas/nfc-e-1/api-envio-normal-completo-da-nfc-e) ou [API de Envio Híbrida](../../../../../endpoints/emissao-notas/nfc-e-1/api-envio-normal-hibrido-da-nfc-e). Iremos montar e assinar o XML, e vamos enviá-lo à SEFAZ.

### 2) Retorno da Chamada (Exceção na comunicação com a SEFAZ)

Diferente do que vimos no [Retorno do Envio Normal](../envio-normal-nfc-e-fluxo-completo#2-retorno-da-chamada), dessa vez não temos uma resposta da SEFAZ para emissão da nota, sendo assim, temos uma exceção na comunicação.

A intermitência será captada por nós, e em seguida retornamos as seguintes tags:

* `acoes: enviarContingencia`: Retorno `true`;
* `acoes: cancelar`: Retorno `true`.

```csharp
{
  "dadosDoDocumento": null,
  "acoes": {
    "corrigirDocumento": false,
    "cancelar": true,
    "enviarContingencia": true,
    "tentarNovamenteMaisTarde": false,
    "entrarEmContatoComSuporteImediatamente": false,
    "emitirProximoDocumentoNormal": null
  },
  "excecao": "The request failed with HTTP status 404: Not Found."
}
```

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LwJ6om6cLb4QmqpEA9V%2F-LwJBgJA3U9qlD04MjBC%2F01.png?alt=media\&token=8962b4ba-0b57-4d5b-bf53-5d680361fead)

### 3) Emissão em contingência

Primeiramente é necessário avançar a numeração da nota. Você deve se perguntar:

_"Por que devo trocar a numeração se ainda não emiti a nota?"_

A gente te explica!

Quando ocorre uma exceção na comunicação com a SEFAZ, não temos o retorno da chamada, ou seja, não sabemos se a nota foi autorizada, pois a própria SEFAZ não nos informou. Sendo assim, acaba sendo um risco enviar na mesma numeração, pois pode ocorrer uma duplicidade ou rejeição do documento e, por consequência, o atraso na operação.

Para complementar o processo e evitarmos que tenhamos duas notas acobertando a operação, devemos enviar o cancelamento da nota que não obteve retorno da SEFAZ.

Além dessa explicação, também temos o [embasamento legal](https://www.confaz.fazenda.gov.br/legislacao/ajustes/2005/AJ_007_05) sobre a não reutilização de um número emitido como normal para uma emissão em contingência.

> &#x20;**Cláusula décima primeira**\
> **...**\
> § 2º **É vedada**: A reutilização, em contingência, de número de NFC-e transmitida com tipo de emissão “Normal”;

{% hint style="info" %}
**Resumindo a Operação:**

\- Emissão na numeração 1/1;\
\- Timeout na operação;\
\- Emissão da mesma nota em contingência na numeração 2/1;\
\- Cancelamento da nota de numeração 1/1.
{% endhint %}

O segundo passo é adicionar as tags:

* `dhCont` que terá a data e hora de entrada em contingência;
* `xJust` que terá a justificativa da entrada em contingência.

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LwJ6om6cLb4QmqpEA9V%2F-LwJDEhyMqS7ihzPuONw%2F02.png?alt=media\&token=385398f8-ad10-4671-a398-bef1e93d7757)

Após ajustarmos, podemos realizar a chamada da [API para Envio em Contingência Completo](../../../../../endpoints/emissao-notas/nfc-e-1/api-envio-contingencia-completo-da-nfc-e) ou [API para Envio em Contingência Híbrido](../../../../../endpoints/emissao-notas/nfc-e-1/api-envio-contingencia-hibrida-da-nfc-e). Também deveremos efetuar o [Cancelamento da nota que apresentou uma exceção na comunicação com a SEFAZ](../../nf-e/teste-fluxos-operacionais/cancelamento-modelo-completo).

### 4) Retorno da chamada

Assim como no envio normal, as notas emitidas em contingência também terão uma mensagem de retorno da SEFAZ. Esta mensagem será recebida por nós, e em seguida retornaremos na mesma chamada da API juntamente com os dados do documento e suas respectivas ações. É com base nesse retorno que entendemos o que deve ser feito após a emissão da NF-e.

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.

```csharp
{
  "dadosDoDocumento": {
    ...
    "dataDeAutorizacao": null,
    "documentoComErro": false,
    "codigoStatusSEFAZ": null,
    "descricaoStatusSEFAZ": null,
    ...
    "documentoJaEmitidoAnteriormente": false,
    "status": {
      "key": 4,
      "value": "Aguardando envio para SEFAZ"
    }
  },
  "acoes": {
    "corrigirDocumento": false,
    "cancelar": false,
    "enviarContingencia": false,
    "tentarNovamenteMaisTarde": false,
    "entrarEmContatoComSuporteImediatamente": false,
    "emitirProximoDocumentoNormal": true
  },
  "excecao": null
}
```

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LwJ6om6cLb4QmqpEA9V%2F-LwJDe6h74OkmcGM1Els%2F03.png?alt=media\&token=021638c2-fedd-43b3-b5d0-f83ea05577c7)

Resumidamente, com base no retorno podemos chegar a 3 cenários:

[a) Autorização da NF-e](#autorizacao);\
[b) Rejeição da NF-e](#rejeicao);\
[c) Exceção na comunicação com a SEFAZ](#excecao-na-comunicacao-com-a-sefaz);

#### a) Autorização

Para verificarmos se nota foi autorizada, devemos seguir os [mesmos passos descritos no fluxo do envio normal](../envio-normal-nfc-e-fluxo-completo#a-autorizacao-da-nfc-e).

{% hint style="info" %}
**Cancelamento por Substituição**\
A NFC-e emitida em contingência serve para acobertar a NFC-e que não teve retorno da SEFAZ. Nós explicamos no [fluxo de Cancelamento/Inutilização da NFC-e](envio-cancelamento-inutilizacao-nfc-e-fluxo-completo)
{% endhint %}

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LwJFi9fhlIvx9c69_Tw%2F-LwJGXi2RRm9f9HeNy5j%2F04.png?alt=media\&token=f9896ce9-10cd-457b-80c1-ab0b0ad80b2a)

#### b) Rejeição

Assim como na autorização, também seguiremos o [mesmos passos do Fluxo de Envio Normal para identificar se a nota foi rejeitada e qual rejeição a nota recebeu](../envio-normal-nfc-e-fluxo-completo#b-rejeicao-da-nfc-e).

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LwJFi9fhlIvx9c69_Tw%2F-LwJH2db7kBZ54KNRrj5%2F05.png?alt=media\&token=1a4d770e-6f22-468a-b1b0-b2095f975ce3)

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

Este cenário é tratato por nossa solução. Quando ocorre o _Timeout_ no envio deste documento, nós fazemos o reagendamento automático.

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LwJH407QQ68r43o7TAs%2F-LwJHGIjO53aeCfvechp%2F06.png?alt=media\&token=85e2629c-01bb-4678-8c41-ed2ef98b9708)

Neste caso, você poderá utilizar as APIs abaixo para checar periodicamente se o documento teve o status atualizado:

* [API de Consultar NFC-e por ID](../../../../../endpoints/emissao-notas/nfc-e-1/api-consulta-nfc-e-por-id);
* [API de Consultar NFC-e por Número e Série](../../../../../endpoints/emissao-notas/nfc-e-1/api-consulta-nfc-e-por-numero-e-serie);&#x20;
* [API de Consultar NFC-e por Chave de Acesso](../../../../../endpoints/emissao-notas/nfc-e-1/api-consulta-nfc-e-por-chave-de-acesso).



Terminamos esta etapa 😁. Para seguir, basta selecionar a _card_ abaixo.
