> 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/nfs-e/fluxo-operacional/fluxo-envio-assincrono-da-nfs-e-1.md).

# Fluxo - Envio Assíncrono de Substituição de NFS-e

O fluxo demonstrado a seguir trata da emissão de uma substituição de NFS-e utilizando os **mesmos endpoints da emissão padrão**, com a inclusão do campo `nfseSubstituida` no corpo do JSON.

## Endpoints Essenciais 💡

* **Envio Completo do documento**: [/api/nfse/enviocompleto\_async](/invoisys/endpoints/emissao-notas/nfs-e-1/api-envio-completo-do-rps.md)
* **Consultar RPS na Prefeitura**: [/api/nfse/consultarenviorps](/invoisys/endpoints/emissao-notas/nfs-e-1/api-consultar-rps-na-prefeitura.md)​

## Endpoints Opcionais 🥈

* **Consultar NFS-e por Id Documento:** [**/**&#x61;pi/nfse/{id}](/invoisys/endpoints/emissao-notas/nfs-e-1/api-consultar-nfs-e-por-id-rps.md)

## Etapas e seus endpoints

### 1) Operação de Substituição de NFS-e

Antes de iniciamos a emissão da nota, é necessário estar com um [token](/invoisys/endpoints/autorizacao/autenticacao.md) de acesso válido, pois este será utilizado no cabeçalho da chamada do [Envio Assíncrono da NFS-e](/invoisys/endpoints/emissao-notas/nfs-e-1/api-envio-completo-do-rps.md).&#x20;

{% hint style="info" %}
💡 A diferença principal em relação à emissão normal está na presença do campo `nfseSubstituida`, que deve conter o número da NFS-e anterior a ser substituída.
{% endhint %}

A sua missão é montar o JSON com os dados da operação (Serviço, Número/Série do RPS, etc.), e incluir:

```csharp
"nfseSubstituida": "123456"
```

Assim que a requisição for recebida, o InvoiSys executará as validações padrão, assinará o XML e enviará para a Prefeitura como uma nota de substituição.

![](/files/-LvGLvrSLkpK92erVz1O)

{% hint style="warning" %}
⚠️ Se o município não suportar o modelo de substituição via webservice, a requisição poderá ser rejeitada.
{% endhint %}

### 2) Retorno da Chamada

Todo envio de substituição segue o fluxo assíncrono normal. Após o envio, será retornado um `id` de controle:

![](/files/-LwKTqgQEf997V-QWWDh)

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

```javascript
{
  "id": "4600",
  "excecao": null
}
```

{% endtab %}
{% endtabs %}

Use esse `id` para [consultar ](#id-3-consulta-do-rps-na-prefeitura)o status do documento posteriormente.

### 3) Consulta do RPS na Prefeitura

Com o `id` da nota em mãos, utilize a [API de consulta ](/invoisys/endpoints/emissao-notas/nfs-e-1/api-consultar-rps-na-prefeitura-1.md)para verificar o status do documento na Prefeitura. A substituição, se aceita, resultará na emissão de uma nova NFS-e com status `Autorizado`, e a nota referenciada será automaticamente invalidada.

![](/files/-LwKU--UpM24E7ZlVW_j)

Entre os cenários previstos, a substituição pode:

a) Ser **autorizada** normalmente.\
b) Ser **rejeitada** (por dados inconsistentes ou regras municipais).\
c) Ficar **aguardando processamento**.

![](/files/-LwKUBL9nA5ASEQuouzm)

### a) Autorização da NFS-e

Para identificarmos que foi um sucesso, devemos checar as informações abaixo de nosso retorno:

* `status`: Retorno `Autorizado`;
* `sucesso`: Retorno `true`.

A seguir temos um exemplo de um retorno após a autorização de um documento:

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

```javascript
{
  "numeroNFSe": 68,
  "sucesso": true,
  "autenticidade": null,
  "linkImpressao": "https://itapira.sigiss.com.br/nfe_ver.php?id=1840098&id_cadastro=156909&hash=YMI9VDS9&nfe=68",
  "xml": null,
  "excecao": null,
  "status": "Autorizado"
}
```

{% endtab %}
{% endtabs %}

#### Impressão da NFS-e

Se a nota estiver autorizada, então podemos realizar a impressão do DANFE. Nós deixamos disponivel na tag `linkImpressao` um link de acesso criado pela Prefeitura que possuirá este recibo.

{% hint style="info" %}

#### Minha nota foi autorizada, mas estava com uma informação errada! 😓

Neste caso, a opção é realizar o cancelamento do documento, e realizar a emissão de uma nota NFS-e.
{% endhint %}

### b) Rejeição da NFS-e

Alguns imprevistos ocorrem. Para identificarmos se o documento apresentou uma rejeição, devemos checar se a

* `sucesso`: Retorno `false`.
* `status`: Retorno `Erro`.

![](/files/-LwKUMoTn1YHp81XAK36)

Realmente houve um erro? Então podemos checar a seguintes informações retornada para você:

* `excecoes`: Retorno da rejeição, informado pela Prefeitura;
* `solucao`: Caso a Prefeitura disponibilize, informando como corrigir a rejeição.

No exemplo a seguir vemos uma nota que foi rejeitada por estar com um código de serviço inválido:

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

```javascript
{
  "id": 1220,
  "numeroNFSe": 0,
  "numeroRPS": 6,
  "serieRPS": "6",
  "status": "Erro",
  "sucesso": false,
  "linkImpressao": null,
  "codigoVerificacao": null,
  "excecoes": [
    "E15 Código do Serviço não encontrado, favor informar apenas números."
  ],
  "solucao": null
}
```

{% endtab %}
{% endtabs %}

Corrigido? Então vamos voltar para [primeira etapa do envio](/invoisys/getting-started/documentos-fiscais/emissao/nfs-e/fluxo-operacional/fluxo-envio-assincrono-da-nfs-e.md#1-operacao-da-prestacao-de-servico). Se desta vez tudo estiver certo, a Prefeitura irá autorizar esta NFS-e.

### c) Aguardando Processamento

Uma Prefeitura pode demorar um tempo até que um RPS seja processado. Quando isto ocorre, nós te mostraremos as seguintes informações:

* `sucesso`: Retorno `false`;
* `status`: Retorno `Aguardando consulta lote`.

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

```javascript
{
  "id": 1220,
  "numeroNFSe": 0,
  "numeroRPS": 6,
  "serieRPS": "6",
  "status": "Aguardando consulta lote",
  "sucesso": false,
  "linkImpressao": null,
  "codigoVerificacao": null,
  "excecoes": null,
  "solucao": null
}
```

{% endtab %}
{% endtabs %}

Neste cenário, você deverá esperar um momento antes de realizar uma nova [tentativa de consulta do RPS](/invoisys/getting-started/documentos-fiscais/emissao/nfs-e/fluxo-operacional/fluxo-envio-assincrono-da-nfs-e.md#3-consulta-do-rps-na-prefeitura).&#x20;

{% hint style="info" %}
É necessário implementar essa rotina de consulta do documento, atentando-se aos seguintes detalhes:&#x20;

* [x] Não requisitar outra antes de obter uma reposta à consulta anterior.
* [x] Manter a nota na rotina de consulta, até receber o status final dela (Erro/Autorizado).
* [x] Agendar as consultas com um espaço de tempo entre as mesmas.
* [x] Interromper a rotina de consulta assim que finalizada a operação (status final do documento).
  {% endhint %}

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