Integração - InvoiSys
  • Introdução👨‍💻
  • Processo de Integração 🚀
  • Soluções
    • Notas Fiscais
      • Emissão 📃
        • NF-e
          • Passo a Passo
          • Fluxos Operacionais
            • Fluxo - Envio Normal da NF-e
            • Fluxo - Envio Contingência da NF-e
            • Fluxo - Cancelamento/Inutilização da NF-e
          • Facilitadores
        • NFC-e
          • Passo-a-Passo
          • Fluxos Operacionais
            • Fluxo - Envio Normal NFC-e
            • Fluxo - Envio Contingência SEFAZ NFC-e
            • Fluxo - Envio Contingência Off-Line NFC-e
            • Fluxo - Cancelamento/Inutilização da NFC-e
        • NFS-e
          • Passo a Passo
          • Fluxos Operacionais
            • Fluxo - Envio Assíncrono da NFS-e
            • Fluxo - Cancelamento da NFS-e
      • Recebimento 🚚
        • NF-e
          • Passo a Passo
          • Fluxos Operacionais
            • Fluxo - Recebimento NF-e
        • CT-e
          • Passo a Passo
          • Fluxos Operacionais
            • Fluxo - Recebimento CT-e
        • NFS-e
          • Passo a Passo
          • Fluxos Operacionais
            • Fluxo - Recebimento NFS-e
        • Captura de Pedido de Compra
          • Fluxo de captura do pedido de compra nos documentos fiscais
  • Endpoints
    • Autorização 🔑
      • Token de Acesso (2.0)
      • Token de Acesso (3.0)
    • Emissão Notas 📄
      • NF-e
        • Enviar NF-e
        • Cancelar NF-e por CNPJ, número e série
        • Enviar CC-e
        • Obter PDF da CC-e
        • Consultar NF-e por Chave de Acesso
        • Obter DANFE
        • Obter XML
      • NFC-e
        • Enviar NFC-e (Completo)
        • Enviar NFC-e (Híbrido)
        • Enviar Contingência NFC-e (Completo)
        • Enviar Contingência NFC-e (Híbrido)
        • Consultar NFC-e por Número e Série
        • Consultar NFC-e por Chave de Acesso
        • Cancelar/Inutilizar NFC-e por CNPJ
      • NFS-e
        • Enviar RPS assíncrono
        • Consultar o lote RPS na Prefeitura
        • Consultar NFS-e por ID
        • Cancelar da NFS-e por CNPJ
        • Obter PDF
    • Recebimento Notas 🚚
      • NF-e
        • Consultar NSUi (Número Sequencial Único Invoisys)
        • Consultar NSUi (Número Sequencial Único InvoiSys) com Campos Customizados
        • Manifestar NF-e
        • Realizar Download de NF-e na SEFAZ
        • Importar NF-e por Chave de Acesso
        • Importar XML
        • Consultar XML importado
        • Consultar PDF importado
        • Importar anexo
        • Consultar anexo
      • CT-e
        • Consultar NSUi (Número Sequencial Único)
        • Consultar NSUi (Número Sequencial Único InvoiSys) com Campos Customizados
        • Importar de XML
        • Consultar XML importado
        • Consultar PDF importado
        • Importar de anexo
        • Consultar anexo
      • NFS-e
        • Consultar NSUi - Número Sequencial Único
        • Consultar NSUi (Número Sequencial Único InvoiSys) com Campos Customizados
        • Importar XML
        • Consultar XML importado
        • Consultar PDF importado
        • Importar anexo
        • Consultar anexo
    • Pedidos e Transporte 📫
      • Pedido de Compra
        • Criar Pedido de Compra
        • Editar Pedido de Compra
        • Consultar Pedido de Compra
        • Atualizar dados do Pedido de Compra vinculado
    • Outras consultas
      • Município
        • API - Município por UF e Nome
      • UF
        • API - UF
      • Enumeradores
        • API - Bandeira Cartão
        • API - Indicador Forma de Pagamento
        • API - Meio de Pagamento
        • API - Finalidade de Emissão
        • API - Modalidade de Frete
        • API - CRT
        • API - Tipo de Impressão do DANFE
        • API - Tipo Integração Pagamento
        • API - Natureza da Operação
        • API - Local de Destino da Operação
        • API - Unidade de Medida
        • API - Indicador de Presença
        • API - Tipo de Operação
        • API - Tipo Específico
        • API - Origem do Material
        • API - Tipo de Material
        • API - Tipo de Ambiente
        • API - Tipo de Manifesto
  • Extra
    • Dúvidas Frequentes e Outras Especificações
Powered by GitBook
On this page
  • APIs Essenciais 💡
  • APIs Opcionais 🥈
  • Etapas e suas APIs
  • 1) Emissão da NF-e
  • 2) Retorno da chamada
  • 2.1) Síncrono
  • a) Autorização da NF-e
  • b) Rejeição da NF-e
  • c) Exceção na comunicação com a SEFAZ
  • 2.2) Assíncrono
  • a) Autorização da NF-e
  • b) Rejeição da NF-e
  • c) Lote Recebido

Was this helpful?

  1. Soluções
  2. Notas Fiscais
  3. Emissão 📃
  4. NF-e
  5. Fluxos Operacionais

Fluxo - Envio Normal da NF-e

PreviousFluxos OperacionaisNextFluxo - Envio Contingência da NF-e

Last updated 8 months ago

Was this helpful?

A emissão de notas fiscais pode ser realizada em diferentes cenários, como operações de saída para o consumidor final, saída para revenda, entradas, devoluções, entre outros. As Secretarias de Fazenda (SEFAZ) adotam dois modelos de emissão de notas fiscais:

  • Síncrono: A resposta é obtida imediatamente na mesma chamada de envio.

  • Assíncrono: A SEFAZ processa a solicitação e, após um tempo, disponibiliza a resposta para consulta em uma chamada posterior.

A tabela abaixo detalha o modelo de emissão adotado por cada unidade federativa (UF):

Modelo

UFs

Síncrono

AM, CE, GO, MG, MS, MT, PE, PR, RS, SVAN, SVRS, SVC-AN e SVC-RS

Assíncrono

SP e BA

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

APIs Essenciais 💡

  • Envio da NF-e:

  • Obter o DANFE da NF-e:

APIs Opcionais 🥈

  • Consulta do Documento por Chave de Acesso:

  • Obter o XML da NF-e:

Etapas e suas APIs

1) Emissão da NF-e

Você irá gerar os dados da operação (Destinatário, Produtos, Impostos, Pagamento, etc), os preencherá nos campos da nota, e fará a chamada diretamente em nossa API.

Assim que recebermos a chamada, validaremos o arquivo. Se estiver correto, geraremos o XML do documento, totalizaremos os valores dos itens e impostos, e criaremos a chave de acesso, caso não tenha sido enviada. Por fim, assinaremos o arquivo para transmiti-lo à SEFAZ.

2) Retorno da chamada

Todo documento enviado para a SEFAZ gera um mensagem de retorno. 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 elas são informações fundamentais em outras APIs.

2.1) Síncrono

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

a) Autorização da NF-e

Para identificarmos que a operação foi um sucesso, nós iremos observar algumas tags e seus retornos:

  • Tags do bloco acoes :

  • corrigirDocumento : Retorno false.

  • codigoStatusSEFAZ : Retorno 100

  • descricaoStatusSEFAZ: Retorno Autoriza o uso da NF-e

  • documentoComErro : Retorno false.

A seguir temos um exemplo de autorização do documento

{
  "dadosDoDocumento": {
    "id": 32194,
    "chaveDeAcesso": "35210517921427000125550010000023511123412346",
    "dataHoraEmissao": "2021-05-12T15:14:49.5185408Z",
    "dataDeAutorizacao": null,
    "documentoComErro": false,
    "codigoStatusSEFAZ": "100",
    "descricaoStatusSEFAZ": "Autorizado o uso da NF-e",
    "protocoloSEFAZ": null,
    "urlConsultaViaQRCode": null,
    "urlConsultaViaChaveDeAcesso": null,
  },
  "acoes": {
    "corrigirDocumento": false,
    "cancelar": false,
    "enviarContingencia": false,
    "tentarNovamenteMaisTarde": false,
    "entrarEmContatoComSuporteImediatamente": false
  },
  "excecao": null
}
"dadosDoDocumento": Grupo onde serão retornadas as informações da NF-e após processamento. 
   
     "id": ID gerado pela plataforma da Invoisys. O ID é único por nota, é necessário que a aplicação do integrador armazene esse dado pois o mesmo será utilizado em rotinas com outras APIs. 

    "chaveDeAcesso": Chave de acesso da NF-e.

    "dataHoraEmissao": Data e hora da emissão da NF-e.

    "dataDeAutorizacao": Data e hora de autorização de NF-e.

    "documentoComErro": Campo que indica se o documento está com erro.

    "codigoStatusSEFAZ": Código do status do documento de acordo com a SEFAZ. 

    "descricaoStatusSEFAZ": Descrição do status do documento de acordo com a SEFAZ.

    "protocoloSEFAZ": Protocolo da requisição na SEFAZ.

    "urlConsultaViaQRCode": URL para consulta do QR Code na SEFAZ (NFC-e).

    "urlConsultaViaChaveDeAcesso": URL de consulta da chave de acesso da NF-e na SEFAZ.

    "codigoMensagemSEFAZ": código da mensagem da SEFAZ do status do documento.

    "descricaoMensagemSEFAZ": Descrição da mensagem da SEFAZ do status do documento. 

Bloco de Ações: 

O sistema Invoisys interpreta o retorno da SEFAZ e complementa com um "bloco de ações", exibindo ao sistema integrador diversas orientações para guiar os próximos passos da operação: 

  },
  "acoes": {
    "corrigirDocumento": false/true, Indica se o documento precisa ou não ser corrigido.

    "cancelar": false/true, Indica se o documento precisa ou não ser cancelado/Inutilizado.

    "enviarContingencia": false/true, Indica se será necessário emitir eo próximo documento em modo de contingência. 

    "tentarNovamenteMaisTarde": false/true, Indica se houve um timeout e será necessário tentar novamente mais tarde.

    "entrarEmContatoComSuporteImediatamente": false/true, erro desconhecido, necessário contatar o suporte. 
  },
  "excecao": Descrição de erro, caso tenha ocorrido uma exceção na requisição. 
}

Impressão da NF-e

Impressão da NF-e

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

Cláusula décima quarta-A Após a concessão da Autorização de Uso da NF-e, de que trata a cláusula sétima, o emitente poderá sanar erros em campos específicos da NF-e, por meio de Carta de Correção Eletrônica - CC-e, transmitida à administração tributária da unidade federada do emitente, desde que o erro não esteja relacionado com:

I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação;

II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário;

III - a data de emissão ou de saída.

b) Rejeição da NF-e

Alguns imprevistos ocorrem, e sua nota foi rejeitada pela SEFAZ, mas não se preocupe, pois te instruiremos como tratar uma rejeição.

Para identificarmos que foi uma rejeição, devemos observar se:

  • acoes: corrigirDocumento: Retorno true;

  • dadosDoDocumento: documentoComErro: Retorno true.

Se sim, então precisamos entender qual foi a rejeição. Para isso, podemos checar os seguintes blocos:

  • dadosDoDocumento: codigoStatusSEFAZ: Retorno <código>;

  • dadosDoDocumento: descricaoStatusSEFAZ: Retorno <descrição>.

No exemplo a seguir vemos uma nota que foi rejeitada por estar com um NCM inexistente:

{
  "dadosDoDocumento": {
    "id": 1121,
    "chaveDeAcesso": "35191117921427000125550010000000011123412343",
    "dataHoraEmissao": "2019-11-12T13:50:01.1774725Z",
    "dataDeAutorizacao": null,
    "documentoComErro": true,
    "codigoStatusSEFAZ": "778",
    "descricaoStatusSEFAZ": "Rejeição: Informado NCM inexistente [nItem: 1]",
    "protocoloSEFAZ": null,
    "urlConsultaViaQRCode": null,
    "urlConsultaViaChaveDeAcesso": null,
  },
  "acoes": {
    "corrigirDocumento": true,
    "cancelar": false,
    "enviarContingencia": false,
    "tentarNovamenteMaisTarde": false,
    "entrarEmContatoComSuporteImediatamente": false
  },
  "excecao": null
}

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

Sabemos que algumas vezes a SEFAZ pode estar intermitente ou até mesmo fora do ar, entretanto, em alguns casos a operação não pode parar.

2.2) Assíncrono

Para identificarmos que a emissão foi realizada, devemos observar se a tag a seguir:

  • codigoStatusSEFAZ: Retorno 103.

  • descricaoSEFAZ: Retorno Lote recebido com sucesso.

Ela sinaliza que a nossa solicitação foi aceita para processamento da SEFAZ. A seguir temos um exemplo de retorno da chamada assíncrona.

{
  "dadosDoDocumento": {
    "id": 1309,
    "chaveDeAcesso": "35191107544236000138550020000010111123412349",
    "dataHoraEmissao": "2019-11-06T15:11:47.4225812Z",
    "dataDeAutorizacao": null,
    "documentoComErro": false,
    "codigoStatusSEFAZ": "103",
    "descricaoStatusSEFAZ": "Lote recebido com sucesso",
    "protocoloSEFAZ": null,
    "urlConsultaViaQRCode": null,
    "urlConsultaViaChaveDeAcesso": null,
  },
  "acoes": {
    "corrigirDocumento": false,
    "cancelar": false,
    "enviarContingencia": false,
    "tentarNovamenteMaisTarde": false,
    "entrarEmContatoComSuporteImediatamente": false
  },
  "excecao": null
}

Após termos o retorno da chamada, como falamos anteriormente, é importante armazenar a chaveDeAcesso e, opcionalmente, oiddo documento, pois os utilizaremos para consultarmos o status da nota.

Consultando o status da nota

a) Autorização da NF-e

Para identificarmos que a operação foi um sucesso, nós iremos observar algumas tags e seus retornos:​

  • status: key : Retorno 0;

  • status: value : Retorno "Autorizado".

  • statusSEFAZ: Retorno <código>;

  • descricaoSEFAZ: Retorno <descrição>.

{
  "id": 1309,
  "createDate": "2019-11-06T15:11:47.673",
  "modifyDate": "2019-11-06T15:11:49.93",
  "chaveDeAcesso": "35191107544236000138550000000010111123412349",
  "codigoAleatorioNF": 12341234,
  ...
  "serie": 2,
  "numero": 1011,
  "dataHoraEmissao": "2019-11-06T15:11:47.423",
  ...
  "erro": false,
  "statusSEFAZ": "100",
  "descricaoSEFAZ": "Autorizado o uso da NF-e",
  ...
  "protocoloDeAutorizacao": "135190008010450",
  "status": {
    "key": 0,
    "value": "Autorizado"
  },
  ...
}

b) Rejeição da NF-e

Caso a nota tenha sido rejeitada pela SEFAZ, podemos checar pelos campos do bloco de ações abaixo:

  • status: key: Retorno 3;

  • status: value: Retorno erro;

  • erro: Retorno true.

Se sim, para podermos identificar qual foi a rejeição, verifique os campos no grupo "dadosDoDocumento" abaixo, onde constam o código retornado pela SEFAZ, junto de sua descrição:

  • statusSEFAZ: Retorno <código>;

  • descricaoSEFAZ: Retorno <descrição>.

Abaixo temos um exemplo de retorno para uma nota com rejeição:

{
  "id": 1310,
  "createDate": "2019-11-06T16:14:10.59",
  "modifyDate": "2019-11-06T16:14:12.24",
  "chaveDeAcesso": "35191107544236000138550020000010121123412346",
  "codigoAleatorioNF": 12341234,
  ...
  "serie": 2,
  "numero": 1012,
  "dataHoraEmissao": "2019-11-06T16:14:10.363",
  ...
  "erro": true,
  "statusSEFAZ": "778",
  "descricaoSEFAZ": "Rejeição: Informado NCM inexistente [nItem:1]",
  ...
  "status": {
    "key": 3,
    "value": "Erro"
  },
  ...
}

c) Lote Recebido

Um documento pode ser consultado antes dele ser processado pela SEFAZ. Os campos a serem observados são:

  • status: key: Retorno 6;

  • status: value: Retorno Aguardando Consulta Lote.

{
  "id": 1310,
  "createDate": null,
  "modifyDate": null,
  "chaveDeAcesso": null,
  "codigoAleatorioNF": null,
  ...
  "serie": 2,
  "numero": 1012,
  "dataHoraEmissao": "2019-11-06T16:14:10.363",
  ...
  "erro": null,
  "statusSEFAZ": null,
  "descricaoSEFAZ": null,
  ...
  "status": {
    "key": 6,
    "value": "Aguardando Consulta Lote"
  },
  ...
}

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

Para uma melhor leitura do fluxo, separamos ele em algumas partes, 📝.

Antes de iniciamos a emissão da nota, é necessário estar com um , pois este será utilizado no cabeçalho da chamada da . Tendo este em mãos, podemos partir para a emissão da nota.

Se você está emitindo em SP ou BA, por favor, veja o tópico referente ao . Caso esteja emitindo nas demais UFs, confira o tópico a seguir.

;

Se a nota estiver autorizada, então podemos realizar a impressão do DANFE. Você pode utilizar nossa ou, se preferir, utilizar o seu modelo de impressão.

Nesse caso, você pode fazer uma carta de correção (CC-e) indicando qual informação deverá ser alterada. Note que a CC-e não irá alterar nada no XML. Ela será um complemento para a NF-e e poderá ser impressa juntamente com o DANFE. Veja o aqui:

Devemos então corrigir o documento e o reenviá-lo da mesma maneira que fizemos na . Se tudo estiver certo com a nota, então a SEFAZ autorizará a mesma e poderemos prosseguir para a .

Para isso existem alguns métodos para envio em contingência. Você pode conferir os detalhes em: .

Para sabermos qual o status da nota, podemos utilizar a . No retorno da chamada, verificaremos os campos statuse descricaoSEFAZ para identificarmos o status atual do documento.

Devemos então corrigir o documento e o reenviá-lo na mesma numeração, da mesma maneira que fizemos na .

Quando isto ocorrer, devemos realizar novamente a rotina de após um período de tempo, para verificar o status do documento.

/api/nfe/envio
/api/nfe/obterpdf
/api/nfe/getbychavesSTD/{chave}
/api/nfe/obterxml
porém você consegue vê-lo completo por aqui
token de acesso válido
API de Envio
API de Impressão do DANFE
embasamento legal
Fluxo - Envio Contingência da NF-e
API de Consulta por Chave de Acesso
retorno para o modelo assíncrono
a) Autorização da NF-e;
b) Rejeição na NF-e;
c) Exceção na comunicação com a SEFAZ
impressão do DANFE
primeira etapa do envio
primeira etapa do envio
consulta