Solução para importação de NFSe para prefeituras sem webservices

Egon Hilgenstieler

Algumas prefeituras possuem nota fiscal eletrônica de serviços mas não possuem a possibilidade de integrar com outros sistemas através de webservices. A solução nestes casos é a importação de NFSe: situação onde a prefeitura disponibiliza uma forma de importar várias notas fiscais para emissão em lote, evitando o trabalho de digitar e autorizar cada NFSe de forma manual.

Conteúdo

Algumas prefeituras possuem nota fiscal eletrônica de serviços mas não possuem a possibilidade de integrar com outros sistemas através de webservices.

A solução nestes casos é a importação de NFSe: situação onde a prefeitura disponibiliza uma forma de importar várias notas fiscais para emissão em lote, evitando o trabalho de digitar e autorizar cada NFSe de forma manual.

A API do Focus NFe agora atende essas situações fornecendo uma interface padronizada para geração destes arquivos, usando um formato muito similar com o já usado para autorizar NFSe’s individualmente.

Geração do arquivo de importação

Para gerar o arquivo para importação, deve ser feita a seguinte solicitação

POST /lotes_nfse?token=TOKEN&ref=REFERENCIA

Onde TOKEN é o seu token de acesso e REFERENCIA uma referência do lote a ser gerado (ele poderá ser usado posteriormente na consulta). Os dados que devem ir no POST é um arquivo YAML muito similar ao arquivo de autorização de NFSe, consistindo pelos seguintes campos:

prestador:

  • cnpj(*): CNPJ do prestador de serviços.
  • codigo_municipio(*): Código IBGE do município do prestador
  • inscricao_municipal: Inscrição municipal do prestador de serviços.

lista_nfse: Array com  as notas a serem geradas, usando o mesmo formato do arquivo de NFSe omitindo apenas a seção “prestador”.

Exemplo de arquivo:

prestador:
  cnpj: 32334535000121
  inscricao_municipal: 123123
  codigo_municipio: 3547304
lista_nfse:
  - data_emissao: 2015-02-04T17:7:26-03:00
    natureza_operacao: 1
    servico:
      discriminacao: "Servico 1"
      item_lista_servico: "01.06"
      valor_iss: 10.26
      valor_servicos: 513.00
    tomador:
      razao_social: 'João da Silva'
      cpf: '03055054812'
      codigo_municipio: 4106902
      cep: 80310333
      logradouro: Rua ABC
      numero: 12
      complemento: apto 21
      email: joao@example.com
  - data_emissao: 2015-02-05T17:7:26-03:00
    natureza_operacao: 1
    servico:
      discriminacao: "Serviço 2"
      item_lista_servico: "01.06"
      valor_iss: 10.26
      valor_servicos: 513.00
    tomador:
      razao_social: 'Maria da Silva'
      cpf: '04055054813'
      codigo_municipio: 4106902
      cep: 88000090
      logradouro: Rua XYZ
      numero: 21
      complemento: casa
      email: maria@example.com

A solicitação é síncrona e pode retornar os seguintes status HTTP:

  • HTTP status 201 (Created) – Arquivo de importação gerado. É devolvido o conteúdo do arquivo como resposta
  • HTTP status 415 (Unsupported Media Type) – Formato de arquivo YAML inválido
  • HTTP status 422 (Unprocessable Entity) – Campos obrigatórios não preenchidos ou em formato incorreto
  • HTTP status 400 (Bad Request ) – Requisição rejeitada devido a CNPJ ou token inválido (mensagem de erro apropriada é exibida)

Consulta do arquivo de importação

Esta operação está disponível caso queira consultar novamente o arquivo gerado. Seu formato é:

GET /lotes_nfse/REFERENCIA?token=TOKEN

Retorno:

  • HTTP status 200 (OK) – É devolvido o conteúdo do arquivo de importação como resposta
  • HTTP status 404 (Not found) – Lote não encontrado com referência informada

Importando o arquivo de resposta (opcional)

Algumas prefeituras disponibilizam um arquivo de resposta, que poderá informar erros no arquivo enviado ou informar dados da nota fiscal gerada (por exemplo número e código de verificação). Quando implementado você poderá enviar a resposta da prefeitura para nossa API e iremos gerar a resposta de acordo com o padrão da nossa API.

Seu formato é:

POST /lotes_nfse/REFERENCIA/resposta?token=TOKEN

O conteúdo do POST deverá ser a resposta da prefeitura.

Retorno:

  • HTTP status 201 (Created) – Arquivo de importação gerado. É devolvido o status de cada nota enviada. Nenhuma nota é processada se alguma nota tiver algum erro.
  • HTTP status 415 (Unsupported Media Type) – Formato de arquivo inválido
  • HTTP status 400 (Bad Request ) – Requisição rejeitada devido a CNPJ ou token inválido (mensagem de erro apropriada é exibida)

Quando o arquivo é processado com sucesso, é gerado uma resposta com um array no mesmo formato de uma consulta de NFSe. Exemplo:

-
caminho_xml_nota_fiscal: /notas_fiscais_servico/NFSe21123430001233505708-4759664-31-3347-2325799-T.xml
  codigo_verificacao: 334L.2795.8967.1235799-T
  data_emissao: 2017-09-04 00:00:00 -03:00
  numero: "31"
  status: autorizado
  uri: "https://www.municipio.sp.gov.br/nfe/"
-
  caminho_xml_nota_fiscal: /notas_fiscais_servico/NFSe21237430001233505708-4759664-32-990R-9926-9-Z.xml
  codigo_verificacao: 990R.9926.0621.0181239-Z
  data_emissao: 2017-09-04 00:00:00 -03:00
  numero: "32"
  status: autorizado
  uri: "https://www.municipio.sp.gov.br/nfe/"
Picture of Egon Hilgenstieler

Egon Hilgenstieler

CTO e cofundador do Focus NFe, desenvolvedor, professor de yoga e praticante de meditação. Enquanto não está programando, procura a resposta para a vida, para o universo e para tudo mais.

Inscreva-se em nossa newsletter​

Receba nossos conteúdos exclusivos em primeira mão.

Explore outros conteúdos:

DevOps: entenda o que é, como funciona e por que adotar!
Tecnologia e API
Egon Hilgenstieler

DevOps: entenda o que é, como funciona e por que adotar!

A eficiência e a agilidade são atributos cada vez mais desejados pelas empresas, sem que isso comprometa a integridade de suas operações. É nesse cenário que surge o DevOps, uma metodologia inovadora que promete transformar a maneira como as organizações desenvolvem, entregam e mantêm um software.

Neste artigo, vamos explorar o que é o DevOps, como ele funciona e por que cada vez mais empresas estão adotando essa abordagem. Além disso, trazemos benefícios, desafios e como adotar o modelo em sua organização.

Leia mais »
Multithreading: o que é, principais usos e vantagens!
Tecnologia e API
João Vallim

O que é multithreading e como a técnica beneficia seu software

Você sabe o que é multithreading? Esse é um modelo de execução que melhora a performance e aumenta a eficiência de aplicações.
O multithreading está por trás da execução de softwares tanto em relação à velocidade quanto na capacidade de resposta. O seu funcionamento é dividido em threads, que formam tarefas independentes, mas que se relacionam umas com as outras.
Por isso, hoje vamos explicar o que é multithreading, qual é a sua função e os benefícios que esse modelo pode trazer ao seu software. Além disso, trazemos a relação deste método com outras técnicas como multiprocessing e multitasking na execução de tarefas.
Vamos lá?

Leia mais »
CFOP de Entrada: saiba quais são e confira as tabelas!
Contabilidade
Douglas Pinheiro

CFOP de Entrada: saiba quais são e confira as tabelas!

O CFOP de Entrada é um código utilizado para identificar a origem das mercadorias ou serviços que chegam a um estabelecimento. Isso ajuda garantir que a apuração fiscal seja feita de forma correta.

Entre os tipos de CFOP das transações de entrada, destacam-se os grupos que contemplam operações estaduais, interestaduais e internacionais.

Acompanhe esse artigo e tenha acesso às tabelas com os principais códigos

Leia mais »