API SISGENF-e

Introdução Chave do Aplicativo Autentificação
POST Login
Tomador
POST Cadastro
NFS-e
POST Cadastro POST Correção POST Cancelamento GET Atividades
Consultas
POST Tomador POST Nota Fiscal POST CNAE POST Municipio POST Unidade de Medida

Introdução Versão 1.1

Esse webservice permite a integração entre sistemas ERP e o SISGENF-e para facilitar a emissão e controle de notas fiscais de serviço.

Ambiente URL
Homologação https://nota.systemainformatica.com.br/sandbox/api
Produção https://nota.systemainformatica.com.br/api

Para ter acesso ao ambiente de homologação, acesse https://nota.systemainformatica.com.br/sandbox e realize o pre-cadastro de um prestador. Ao concluir o cadastro, você vai receber um login e senha no seu email que pode ser usado para testar a api.

Afim de facilitar o entendimento dessa documentação, daqui em diante, serão utilizados os seguintes termos:

  1. Aplicativo: Ferramenta que será integrada ao SISGENF-e por meio desta API para a emissão, cancelamento, correção e consulta de NFSe (Na maioria dos casos, o ERP).
  2. NFSe: Nota Fiscal de Serviço Eletrônica.
  3. Prestador: Pessoa Juridica que presta serviço, portanto, emissor da nota fiscal.
  4. Tomador: Pessoa Fisica ou Juridica que recebe o serviço.

Chave do Aplicativo

Para que seu aplicativo tenha acesso ao webservice do SISGENF-e, é nescessário que seja criada uma chave de acesso unica que identifica o seu aplicativo.

Solicite uma chave enviando um email para central@systemainformatica.com.br com os seguintes dados:

  1. Cnpj da sua Empresa
  2. Nome da sua Empresa
  3. Nome do Aplicativo
  4. Telefone*
  5. Email*
* Sendo o telefone e e-mail, preferencialmente, o do setor de desenvolvimento.
A Systema Informática se reserva ao direito de bloquear a chave em caso de denuncia de abuso ou erros que possam prejudicar o Prestador.

Autentificação

O Webservice utiliza JWT (Json Web Token) para autentificar o usuário.

Quando a autentificação for nescessária o Header "Authorization" deverá conter a string "Bearer " seguido pelo token.

Exemplo:
"Authorization": "Bearer eyJhbGciJIUzI1NiJ9.eyJwcmVmZWl0..."

POST Login

https://nota.systemainformatica.com.br/api/login
Headers
Content-Type application/json
Body application/json
{
	"app": "[chave]",
	"prestador": "[cnpj]",
	"username": "[usuario]",
	"password": "[senha]",
}
[chave] Chave do aplicativo
[cnpj] CNPJ do prestador
[usuario] Nome de usuário que está efetuando o login
[senha] Senha do usuário que está efetuando o login

Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/login \
  --header 'Content-Type: application/json' \
  --data '{
	"app" : "[CHAVE DO APLICATIVO]",
	"prestador" : "11.111.111/1111-11",
	"username" : "systema",
	"password" : "123456"
}'
						
Response
eyJhbGciJIUzI1NiJ9.eyJwcmVmZWl0dXJhcyI6IFtdLCAicHJlc3RhZG9yIjogeyJkb2N1bWVudG8iOiAiMTEuMTExLjExMS8xMTExLTExIiwgIm5vbWUiOiAiU1lTVEVNQSBJTkZPUk1BVElDQSBDT01FUkNJTyBFIFNFUlZJQ09TIExUREEgLSBFUFAifSwgInBlcm1pc3NvZXMiOiBbIndzSW5jbHVpclRvbWFkb3IiLCAid3NMaXN0YUVzdGFkbyIsICJ3c0FsdGVyYXJUb21hZG9yIiwgIndzTGlzdGFUb21hZG9yIiwgIndzSW5jbHVck5vdGEiLCAid3NMaXN0YU5vdGEiLAid3NMaXN0YU11bmlaXBpbyIsICJ3c0xpc3RhQXRpdmlkYWRlIiwgIndzSW5jbHVpckNhbmNlbGFtZW50byIsICJ3c0luY2x1aXJDb3JyZWNhbyIsICJ3c0xpc3RhVW5pZGFkZU1lZGlkYSIsICJ3c0xpc3RhQ25hZSJdLCAiY2hhdmUiOiAidm1xOE5hRzdadVpGVmlKNVFqcEVzMWdYa3h4WkRDRTciLCAidXN1YXJpbyI6ICJMZW9uYXJkbyBKb3JnZSBSaWJlaXJvIEp1bmvciJ9.Sd_fEBbkp6txsCXeXW3yK-wFokCwGcA3hsGbqzFYv8

Tomador

Para emitir uma nota fiscal, é nescessario que o tomador esteja previamente cadastrado no sistema.


POST Cadastro

https://nota.systemainformatica.com.br/api/tomador
Headers
Content-Type application/json
Authorization Bearer [Token]
Body application/json
{
  "documento" : "02.472.202/0001-61",
  "dadosTomador" : {
    "razaoSocial" : "SYSTEMA INFORMATICA COMERCIO E SERVIÇO LTDA",
    "email" : "central@systemainformatica.com.br",
    "rua" : "Rua Professor José Candido Pesoa",
    "bairro" : "Bairro Novo",
    "numero" : "1544",
    "cep" : "53030-020",
    "municipio" : {
      "id": 1578
    }
  }
}

Se já exitir um tomador cadastrado com o documento enviado, o seu registro será atualziado.

Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/tomador \
  --header 'Content-Type: application/json' \
  --data '{
	"documento" : "02.472.202/0001-61",
	"dadosTomador" : {
		"razaoSocial" : "SYSTEMA INFORMATICA COMERCIO E SERVIÇO LTDA",
		"email" : "central@systemainformatica.com.br",
		"rua" : "Rua Professor José Candido Pesoa",
		"bairro" : "Bairro Novo",
		"numero" : "1544",
		"cep" : "53030-020",
		"municipio" : {
			"id": 1578
		}
	}
}'
						
Response
{
  "documento": "02.472.202/0001-61",
  "dadosTomador": {
    "email": "central@systemainformatica.com.br",
    "razaoSocial": "SYSTEMA INFORMATICA COMERCIO E SERVIÇO LTDA",
    "municipio": {
      "nome": "Olinda",
      "codigo": "09600",
      "codigoCompleto": "2609600",
      "estado": {
        "nome": "Pernambuco",
        "codigo": "26",
        "uf": "PE",
        "id": 1
      },
      "id": 1578
    },
    "numero": "1544",
    "contatos": [],
    "rua": "Rua Professor José Candido Pesoa",
    "cep": "53030-020",
    "bairro": "Bairro Novo",
    "data": "1513356712916"
  },
  "isPessoaFisica": false,
  "isPessoaFisicaAsString": "Pessoa Jurídica"
}
						

NFS-e

Ao cadastrar uma NFS-e, o número e data de emissão serão atribuidos automaticamente e podem ser resgatados na resposta.

ATENÇÃO: O cadastro da NFSe não cadastra nem atualiza o Tomador, para realizar essa operação verifique o metodo para cadastro de tomador.

POST Cadastro

https://nota.systemainformatica.com.br/api/nfs
Headers
Content-Type application/json
Authorization Bearer [Token]
Body application/json
{  
   "tomador":{  
      "documento":"02.472.202/0001-61"
   },
   "observacao":"Observação da nota de teste",
   "municipio":{
      "id":1636
   },
   "issPagoTomador": false,
   "listaTributos": [
 	{
 		"nome": "Outro Tributo",
 		"valor": 1.0
 	}
   ],
   "listaItensNotaFiscal":[  
      { 
         "qtd":1,
         "valorUnitario":5840.00,
         "iss": 2.0,
         "deducaoMaterial": 40.0,
         "inss": 0.0,
         "irrf": 0.0,
         "unidadeMedida":{  
            "id":7
         },
         "atividade":{  
            "id":78
         },
         "descricao":"Descrição dentro do item Teste"
      }
   ]
}

No JSON que descreve o item da nota fiscal, os campos "iss" e "deducaoMaterial" devem ser informados apenas quando o iss é devido a outro municipio que não é de domicilio do prestador. Ou seja, quando campo "issPagoTomador" for true, ou quando a atividade CNAE de serviço é atribuido as atividades de código 7.02, 7.04, 7.05, 7.09, 7.10, 7.11, 7.12, 7.16, 7.17 e 7.18 na descritas lei 116.

No array "listaTributos" devem ser informados outros tributos que não são ISS, INSS e IRRF como PIS, COFINS etc.

Nota de atualização (Versão 1.1): Os campo 'calculaInss' e 'calculaIrrf' foram depreciados, por favor informe o valor exato de cada imposto nos campo 'inss' e 'irrf' em cada item da nota fiscal.
Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/nfs \
  --header 'Content-Type: application/json' \
  --data '{  
   "tomador":{  
      "documento":"02.472.202/0001-61"
   },
   "observacao":"Observação da nota de teste",
   "municipio":{
      "id":1636
   },
   "issPagoTomador": false,
   "listaTributos": [
 	{
        "nome": "Outro Tributo",
        "valor": 1.0
 	}
   ],
   "listaItensNotaFiscal":[  
      { 
         "qtd":1,
         "valorUnitario":5840.00,
         "iss": 2.0,
         "inss": 0.0,
         "irrf": 0.0,
         "deducaoMaterial": 40.0,
         "unidadeMedida":{  
            "id":7
         },
         "atividade":{  
            "id":78
         },
         "descricao":"Descrição dentro do item Teste"
      }
   ]
}'
						
Response
{
  "valor": 5840,
  "municipio": {
    "id": 1636
    "codigo": "15003",
    "nome": "Taquaritinga do Norte",
    "codigoCompleto": "2615003",
    "estado": {
      "nome": "Pernambuco",
      "uf": "PE",
      "codigo": "26",
      "id": 1
    }
  },
  "aliquotaIssAsString": "0,00",
  "dedMaterialAsString": "0,00",
  "dataEmissaoAsString": "04/04/2018",
  "key": "NFSE.JR64UHS23JG.J6NZQ8FGWMK.00000S6XY5",
  "listaTributos": [],
  "dataEmissao": "1522866146713",
  "issPagoTomador": false,
  "tomador": {
    "dadosTomador": {
      "municipio": {
        "nome": "Olinda",
       	"codigoCompleto": "2609600",
        "codigo": "09600",
        "id": 1578
      },
      "razaoSocial": "SYSTEMA INFORMATICA COMERCIO E SERVIÇO LTDA",
      "email": "central@systemainformatica.com.br",
      "rua": "Rua Professor José Candido Pesoa",
      "cep": "53030-020",
      "numero": "1544",
      "bairro": "Bairro Novo",
    },
    "isPessoaFisicaAsString": "Pessoa Jurídica",
    "documento": "02.472.202/0001-61"
  },
  "listaItensNotaFiscal": [
    {
      "atividade": {
        "nome": "Serviço de pulverização e controle de pragas agrícolas",
        "lei116": {
          "descricao": "Dedetização, desinfecção, desinsetização, imunização, higienização, desratização, pulverização e congêneres",
          "codigo": "7.13",
          "id": 74
        },
        "codigo": "0161-0/01",
        "id": 78
      },
      "valorUnitario": 5840,
      "qtd": 1,
      "deducaoMaterial": 0,
      "valorTotal": 5840,
      "iss": 4.31,
      "inss": 0.0,
      "irrf": 0.0,
      "deducaoMaterialAsString": "0,00",
      "unidadeMedida": {
        "id": 7
      },
      "descricao": "Descrição dentro do item Teste",
      "qtdAsString": "1,00",
      "valorUnitarioAsString": "5.840,00",
      "valorTotalAsString": "5.840,00",
      "issAsString": "4,31"
    }
  ],
  "valorAsString": "5.840,00",
  "serie": "0",
  "observacao": "Observação da nota de teste"
}
						

POST Correção

https://nota.systemainformatica.com.br/api/nfs/corrige
Headers
Content-Type application/json
Authorization Bearer [Token]
Body application/json
{  
   "notaFiscal": {
   	"numero": 42
   },
   "historico": "Exemplo de correção..."
}
							

É importante deixar claro aos usuários do Aplicativo que a correção não pode alterar qualquer dado do Prestador, Tomador, valor ou qualquer outro parametro que afete o calculo da tributação da NFSe.

As cartas de correção serão anexadas ao final da NFSe e podem ser emitidas sem limites de quantidade e tempo.

Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/nfs/corrige  \
  --header 'Content-Type: application/json' \
  --data '{  
   "notaFiscal": {
   	"numero": 42
   },
   "historico": "Exemplo de correção..."
}'
						
Response
{  
   "notaFiscal": {
   	"numero": 42
   	...
   },
   "historico": "Exemplo de correção...",
}
						

POST Cancelamento

https://nota.systemainformatica.com.br/api/nfs/cancela
Headers
Content-Type application/json
Authorization Bearer [Token]
Body application/json
{  
   "notaFiscal": {
      "numero": 42
   },
   "tipoCancelamento": {
      "id": 3
   },
   "historico": "Exemplo de cancelamento"
}
							

Essa operação gera uma solicitação de cancelamento que pode não ser aprovada imediatamente dependendo do funcionamento da prefeitura.

Diferente da correção, o cancelamento só pode ser efetuado uma unica vez.

O campo "tipoCancelamento.id" deve conter um dos seguintes valores:

  • 2 para "Cancelada pelo Credor"
  • 3 para "Erro de Digitação"
  • 4 para "Valor Errado"

Limites de tempo e quantidade de cancelamentos efetuados diariamente podem ser aplicados dependendo do funcionamento da prefeitura.

Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/nfs/cancela  \
  --header 'Content-Type: application/json' \
  --data '{  
   "notaFiscal": {
      "numero": 42
   },
   "tipoCancelamento": {
      "id": 3
   },
   "historico": "Exemplo de cancelamento"
}'
						
Response
{  
   "notaFiscal": {
      "numero": 42,
      ...
   },
   "tipoCancelamento": {
      "id": 3,
      "nome": "Erro de Digitação"
   },
   "historico": "Exemplo de cancelamento"
}
						

GET Atividades CNAE

https://nota.systemainformatica.com.br/api/cnae
Headers
Content-Type application/json
Authorization Bearer [Token]

Retorna lista de CNAEs que estão atribuídos ao prestador.

Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/cnae  \
  --header 'Content-Type: application/json'
						
Response
[
    {
        "nome": "Manutenção de redes de distribuição de energia elétrica",
        "codigo": "4221-9/03",
        "lei116": {
            "descricao": "Reparação, conservação e reforma de edifícios, estradas, pontes, portos e congêneres (exceto o fornecimento de mercadorias produzidas pelo prestador dos serviços, fora do local da prestação dos serviços, que fica sujeito ao ICMS)",
            "codigo": "7.05",
            "id": 66
        },
        "id": 622
    },
    {
        "nome": "Pintura para sinalização em pistas rodoviárias e aeroportos",
        "codigo": "4211-1/02",
        "lei116": {
            "descricao": "Reparação, conservação e reforma de edifícios, estradas, pontes, portos e congêneres (exceto o fornecimento de mercadorias produzidas pelo prestador dos serviços, fora do local da prestação dos serviços, que fica sujeito ao ICMS)",
            "codigo": "7.05",
            "id": 66
        },
        "id": 617
    }
]
						

Consultas

As consultas podem ser utilizadas para auxiliar o cadastro.

Recomendamos que utilize os atributos "limite" e "offset" para paginar a consulta e tornar-las mais rapidas.


POST Consulta Tomador

https://nota.systemainformatica.com.br/api/tomador/query
Headers
Content-Type application/json
Authorization Bearer [Token]
Body application/json
{  
   "limit": 10,
   "offset": 0,
   "where": {
       "eq" : {
           "documento": "111.111.111-11"
       }
   }
}
							
Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/tomador/query  \
  --header 'Content-Type: application/json' \
  --data '{  
   "limit": 10,
   "offset": 0,
   "where": {
       "eq" : {
           "documento": "111.111.111-11"
       }
   }
}'
						
Response
[  
    {
        "documento": "111.111.111-11",
        "dadosTomador": {
            ...
        }
    }
]
						

POST Consulta Nota Fiscal

https://nota.systemainformatica.com.br/api/nfs/query
Headers
Content-Type application/json
Authorization Bearer [Token]
Body application/json
{  
   "limit": 10,
   "offset": 0,
   "where": {
       "ge": {
           "numero": 5
       }
   }
}
							
Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/nfs/query \
  --header 'Content-Type: application/json' \
  --data '{  
   "limit": 10,
   "offset": 0,
   "where": {
       "ge": {
           "numero": 5
       } 
   }
}'
						
Response
[  
    {
        "numero": 5,
        "tomador": {
           "documento": "111.111.111-11"
            ...
        }
        ...
    },
    {
        "numero": 6,
        "tomador": {
           "documento": "111.111.111-11"
            ...
        }
        ...
    },
    {
        "numero": 7,
        "tomador": {
           "documento": "111.111.111-11"
            ...
        }
        ...
    }
    ...
]
						

POST Consulta CNAE

https://nota.systemainformatica.com.br/api/cnae/query
Headers
Content-Type application/json
Authorization Bearer [Token]
Body application/json
{  
    "limit": 10,
    "where": {
        "eq": {
            "lei116.codigo": "7.05"
        }
    }
}
							
Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/cnae/query  \
  --header 'Content-Type: application/json' \
  --data '{  
    "limit": 10,
    "where": {
        "eq": {
            "lei116.codigo": "7.05"
        }
    }
}'
						
Response
[
    {
        "nome": "Manutenção de redes de distribuição de energia elétrica",
        "codigo": "4221-9/03",
        "lei116": {
            "descricao": "Reparação, conservação e reforma de edifícios, estradas, pontes, portos e congêneres (exceto o fornecimento de mercadorias produzidas pelo prestador dos serviços, fora do local da prestação dos serviços, que fica sujeito ao ICMS)",
            "codigo": "7.05",
            "id": 66
        },
        "id": 622
    },
    {
        "nome": "Pintura para sinalização em pistas rodoviárias e aeroportos",
        "codigo": "4211-1/02",
        "lei116": {
            "descricao": "Reparação, conservação e reforma de edifícios, estradas, pontes, portos e congêneres (exceto o fornecimento de mercadorias produzidas pelo prestador dos serviços, fora do local da prestação dos serviços, que fica sujeito ao ICMS)",
            "codigo": "7.05",
            "id": 66
        },
        "id": 617
    }
]
						

POST Consulta Municipio

https://nota.systemainformatica.com.br/api/municipio/query
Headers
Content-Type application/json
Authorization Bearer [Token]
Body application/json
{  
   "limit": 10,
   "where": {
      "eq": {
          "estado.uf": "PE"
      }
   }
}
							
Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/municipio/query  \
  --header 'Content-Type: application/json' \
  --data '{  
   "limit": 10,
   "where": {
      "eq": {
          "estado.uf": "PE"
      }
   }
}'
						
Response
[  
    {
        "nome": "Iguaraci",
        "codigoCompleto": "2606903",
        "estado": {
            "nome": "Pernambuco",
            "uf": "PE",
            "codigo": "26",
            "id": 1
        },
        "codigo": "06903",
        "id": 1543
    },
    {
        "nome": "Olinda",
        "codigoCompleto": "2609600",
        "estado": {
            "nome": "Pernambuco",
            "uf": "PE",
            "codigo": "26",
            "id": 1
        },
        "codigo": "09600",
        "id": 1578
    },
    {
        "nome": "Orobó",
        "codigoCompleto": "2609709",
        "estado": {
            "nome": "Pernambuco",
            "uf": "PE",
            "codigo": "26",
            "id": 1
        },
        "codigo": "09709",
        "id": 1579
    },
    ...
]
						

POST Consulta Unidade de Medida

https://nota.systemainformatica.com.br/api/unidade/query
Headers
Content-Type application/json
Authorization Bearer [Token]
Body application/json
{
   "limit": 10,
   "where": {
      "eq": {
          "estado.uf": "PE"
      }
   }
}
							
Request
curl --request POST \
  --url https://nota.systemainformatica.com.br/api/unidade/query  \
  --header 'Content-Type: application/json' \
  --data '{
	   "limit": 10
	   }
	}'
						
Response
[
    {
        "id": 19,
        "nome": "Unidade"
    },
	{
        "id": 15,
        "nome": "Hora"
    },
	{
        "id": 24,
        "nome": "Mês"
    },
    ...
]