# Fluxo - Envio Síncrono da NFS-e

A emissão de uma NFS-e abrange as operações comerciais de uma prestação de serviços.&#x20;

O fluxo demonstrado a seguir trata a emissão da nota dentro da integração com a InvoiSys.

## API's Essenciais 💡

* **Envio Completo do documento**: [/api/nfse/enviocompleta](https://integracao.gitbook.io/invoisys/endpoints/emissao-notas/nfs-e-1/api-envio-completo-do-rps-1)
* **Envio Híbrido do documento**: [/api/nfse/enviohibrida](https://integracao.gitbook.io/invoisys/endpoints/emissao-notas/nfs-e-1/api-envio-hibrido-do-rps)

## API's Opcionais 🥈

* **Consulta da NFS-e por Id Documento:** [**/**&#x61;pi/nfse/{id}](https://integracao.gitbook.io/invoisys/endpoints/emissao-notas/nfs-e-1/api-consultar-nfs-e-por-id-rps)
* **Consulta Paginada de NFS-e:** [**/**&#x61;pi/nfse/{pagina}/{n\_itens}](https://integracao.gitbook.io/invoisys/endpoints/emissao-notas/nfs-e-1/api-consulta-paginada-de-nfs-es)

## Etapas e suas 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=1yw-Z1ubU_G2KU0S3uZDedwnCJf_XyMp6) 📝.

### 1) Operação da Prestação de Serviço

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 Completo](https://integracao.gitbook.io/invoisys/endpoints/emissao-notas/nfs-e-1/api-envio-completo-do-rps-1) ou a [API de Envio Híbrida](https://integracao.gitbook.io/invoisys/endpoints/emissao-notas/nfs-e-1/api-envio-hibrido-do-rps). Tendo ele em mãos, podemos partir para a emissão da nota.

A sua missão é gerar os dados da operação, como Serviço, Número/Série do RPS, etc., e criar um JSON que será repassado para nós.

Assim que recebermos a chamada, faremos algumas validações, e se estiver correto, assinaremos o mesmo e o transmitiremos à Prefeitura.

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LvFdRqsLDMxkpJrDgoI%2F-LvGGZZH26jZjKLOjVVn%2F01.png?alt=media\&token=151d001f-d8dd-4923-a46b-1fa39825fc18)

### 2) Retorno da chamada

Todo documento enviado para a SEFAZ gera um mensagem de retorno. Esta mensagem será recebida por nós, e, na mesma chamada, iremos retorna-lo para você junto dos dados do documento.

Aqui existem algumas informações que podem ser interessantes você guardar, como o `id` do documento. Estas informações são importante, já que elas são utilizados em outras APIs.

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LwJxSOdTXwliZECNIuZ%2F-LwKR-omArV5TPR1_zuu%2F02.png?alt=media\&token=08a5a416-20bf-4c9c-bac3-5d6f2542617e)

Posteriormente você poderá realizar a consulta destes documentos por nossas APIs de [Consulta por ID documento](https://integracao.gitbook.io/invoisys/endpoints/emissao-notas/nfs-e-1/api-consultar-nfs-e-por-id-rps) ou de [Consulta Paginada de notas](https://integracao.gitbook.io/invoisys/endpoints/emissao-notas/nfs-e-1/api-consulta-paginada-de-nfs-es) para também obter informações sobre estas NFS-es.

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

Para identificarmos que foi um sucesso, podemos observar as seguintes tags:

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

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LwJxSOdTXwliZECNIuZ%2F-LwKR_4B9OZL1Sz5_Ew5%2F03.png?alt=media\&token=aa3625cd-cc6a-4d4e-9c0c-b231b7953293)

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

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

```javascript
{
  "id": 1217,
  "numeroNFSe": 66,
  "numeroRPS": 1,
  "serieRPS": "6",
  "status": "Autorizado",
  "sucesso": true,
  "linkImpressao": "https://itapira.sigiss.com.br/nfe_ver.php?id=1840096&id_cadastro=156909&hash=5CDEC99V&nfe=66",
  "codigoVerificacao": "5CDEC99V",
  "excecoes": null,
  "solucao": null
}
```

{% endtab %}

{% tab title="Descrição dos Campos do Retorno: " %}

```javascript
"id": ID da nota gerado pela Invoisys

  "numeroNFSe": Número da NFS-e após a prefeitura converter o RPS (Recido Provisório de Serviço) em NFS-e.
 
  "numeroRPS": Número do RPS enviado.

  "serieRPS": Série do RPS enviado.

  "status": Status do RPS retornado.

  "sucesso": true/false indica se a requisição foi um sucesso ou não. 

  "linkImpressao": Link para impressão do PDF, caso a prefeitura forneça. A invoisys possibilita um layout de impressão próprio cobrindo todas as prefeituras.

  "codigoVerificacao": Código de verificação da nota na prefeitura.

  "excecoes": Caso a nota retorne erro, a prefeitura pode indicar o mótivo no campo "exceções".

  "solucao": A prefeitura pode retornar uma solçção para o problema apresentado. 

```

{% endtab %}
{% endtabs %}

#### Impressão da NFS-e

Se a nota estiver autorizada, então podemos realizar a impressão do PDF. Nós deixamos disponível no campo: `linkImpressao` um link de acesso criado pela Prefeitura que possuirá este recibo.

{% hint style="success" %}
Caso a prefeitura não forneça link para impressão do PDF, a Invoisys disponibiliza a opção de utilizar nosso PDF, que contempla a impressão em todas as prefeituras!&#x20;
{% endhint %}

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

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

Alguns imprevistos ocorrem. Para identificarmos se o documento apresentou uma rejeição, devemos observar seguintes tags:

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

![](https://3525778293-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lmo0dH8REcSzSboskDA%2F-LwJxSOdTXwliZECNIuZ%2F-LwKRr-eIhXc3aklu-jH%2F04.png?alt=media\&token=c2d8c0db-7583-44b0-b1d1-660309712fb9)

Realmente houve um erro com o seu documento? 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: Created 201" %}

```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 %}

{% hint style="info" %}
Algumas prefeituras não irão retornar no campo "exceções" uma descrição do erro ocorrido. Por este motivo, é importante mapear o retorno completo utilizando os campos "status" e o campo "sucesso" e verificar o documento para identificar qual foi o erro em questão.
{% endhint %}

Corrigido? Então vamos voltar para [primeira etapa do envio](#1-operacao-da-prestacao-de-servico). Se desta vez tudo estiver certo, a Prefeitura irá autorizar esta NFS-e.

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