Documentação API NFS-e

Guia completo para integração com o sistema de Nota Fiscal de Serviços Eletrônica da Centi

Começando

A API NFS-e da Centi permite que empresas emitam notas fiscais de serviço diretamente de seus sistemas próprios através de integração via API REST.

Pré-requisitos

  • Credenciais de acesso: Usuário e senha fornecidos pela prefeitura municipal
  • Certificado Digital: Certificado A1 ou A3 válido para assinatura dos XMLs
  • Cadastro ativo: Empresa cadastrada e habilitada no sistema da prefeitura
  • Conhecimento técnico: Familiaridade com APIs REST e formato XML

Quick Start - 3 Passos

1
Obter Credenciais

Entre em contato com a prefeitura do município para obter seu usuário e senha de acesso à API.

2
Preparar o XML

Monte o XML da NFS-e conforme o schema XSD fornecido. Assine digitalmente o XML com seu certificado digital.

3
Enviar via POST

Faça uma requisição POST para o endpoint da API com suas credenciais e o XML no corpo da requisição.

Autenticação

A API NFS-e utiliza autenticação via HTTP Basic Auth. Você deve incluir suas credenciais (usuário e senha) codificadas em Base64 no header Authorization.

Formato do Header

Authorization: Basic {base64(usuario:senha)}

Exemplo

Credenciais:

Usuário: "empresa123"
Senha: "senhaSegura@2025"

Codificação Base64:

echo -n "empresa123:senhaSegura@2025" | base64
# Resultado: ZW1wcmVzYTEyMzpzZW5oYVNlZ3VyYUAyMDI1

Header Final:

Authorization: Basic ZW1wcmVzYTEyMzpzZW5oYVNlZ3VyYUAyMDI1

Estrutura da API

URL Base

https://api.centi.com.br

Por padrão, todas as requisições precisam informar a sigla UF do prestador do serviço e o identificador do prestador (nome da cidade) representado pela variável Tenant.

Formato das URLs

https://api.centi.com.br/{recurso}/{UF}/{Tenant}

Exemplo:

https://api.centi.com.br/nfe/gerar/go/rioverde
Parâmetro Descrição Exemplo
{UF} Sigla da UF em minúsculo go, sp, rj
{Tenant} Nome do município rioverde, goiania

Emitir Nota Fiscal

Endpoint

POST https://api.centi.com.br/nfe/gerar/{UF}/{Tenant}

Request Completo

POST https://api.centi.com.br/nfe/gerar/go/rioverde

Headers:
  Content-Type: application/xml; charset=utf-8
  Authorization: Basic {suas_credenciais_base64}

Body:
  <GerarNfseEnvio xmlns="http://www.centi.com.br/files/nfse.xsd">
    <!-- XML da NFS-e -->
  </GerarNfseEnvio>

Response de Sucesso (HTTP 200)

Quando a nota é emitida com sucesso, a API retorna um XML contendo:

  • Número da NFS-e gerada
  • Código de verificação
  • Data e hora da emissão
  • XML completo da nota autorizada

Erros Comuns

Código Erro Solução
401 Credenciais inválidas Verifique usuário e senha
400 XML mal formatado Valide o XML contra o XSD
422 Dados inválidos Verifique CNPJ/CPF, códigos
500 Erro no servidor Tente novamente ou contate suporte

Cancelar Nota Fiscal

Endpoint

POST https://api.centi.com.br/nfe/cancelar/{UF}/{Tenant}

Estrutura do XML de Cancelamento

<CancelarNfseEnvio xmlns="http://www.centi.com.br/files/nfse.xsd">
  <Pedido>
    <InfPedidoCancelamento>
      <IdentificacaoNfse>
        <Numero>123456</Numero>
        <CpfCnpj>
          <Cnpj>12345678000195</Cnpj>
        </CpfCnpj>
        <InscricaoMunicipal>12345</InscricaoMunicipal>
        <CodigoMunicipio>5218805</CodigoMunicipio>
        <CodigoVerificacao>ABCD1234</CodigoVerificacao>
        <DescricaoCancelamento>Motivo do cancelamento</DescricaoCancelamento>
      </IdentificacaoNfse>
      <CodigoCancelamento>1</CodigoCancelamento>
    </InfPedidoCancelamento>
    <Signature><!-- Assinatura Digital --></Signature>
  </Pedido>
</CancelarNfseEnvio>

Código de Cancelamento

Código Descrição
1 Rasura
2 Erro preenchimento
3 Fim do prazo de validade
4 Fora de sequência numérica e cronológica
5 Desacordo comercial
6 Outros

Substituir Nota Fiscal

Endpoint

POST https://api.centi.com.br/nfe/gerar/{UF}/{Tenant}

A substituição utiliza o mesmo endpoint de geração, mas com informações adicionais sobre qual nota está sendo substituída.

Bloco RpsSubstituido

<Rps>
  <IdentificacaoRps>
    <Numero>2</Numero>
    <Serie>A1</Serie>
    <Tipo>1</Tipo>
  </IdentificacaoRps>
  <DataEmissao>2025-12-16</DataEmissao>
  <Status>1</Status>
  
  <!-- Bloco de Substituição -->
  <RpsSubstituido>
    <Numero>1</Numero>
    <Serie>A1</Serie>
    <Tipo>1</Tipo>
  </RpsSubstituido>
</Rps>

Como funciona:

Ao enviar um XML com o bloco <RpsSubstituido>, o sistema cancela automaticamente a nota anterior e gera uma nova nota com os dados atualizados.

Principais Campos do XML

Campo Tipo Obrigatório Descrição
Numero Numérico SIM Número do RPS
Serie Texto SIM Série do RPS
DataEmissao Data SIM Data emissão (YYYY-MM-DD)
ValorServicos Decimal SIM Valor total dos serviços
ValorIss Decimal SIM Valor do ISS
Aliquota Decimal SIM Alíquota do ISS (%)
ItemListaServico Texto SIM Código serviço LC 116/2003
CodigoCnae Numérico SIM Código CNAE
Discriminacao Texto SIM Descrição do serviço
IssRetido Numérico SIM 1=Sim, 2=Não

Códigos de Referência

ISS Retido

Código Significado
1 Sim - ISS retido pelo tomador
2 Não - ISS recolhido pelo prestador

Códigos de Serviço (Principais)

Código Descrição
01.07 Desenvolvimento de programas
04.01 Medicina e biomedicina
07.01 Engenharia, arquitetura
16.02 Transporte municipal
17.01 Assessoria ou consultoria

Perguntas Frequentes

Como obter as credenciais de acesso?

Entre em contato com a prefeitura do município onde sua empresa está cadastrada.

Preciso de certificado digital?

Sim. O XML deve ser assinado digitalmente com certificado A1 ou A3 válido.

Posso cancelar uma nota via API?

Sim, através do endpoint POST /nfe/cancelar/{UF}/{Tenant} com XML de cancelamento.

Posso substituir uma nota já emitida?

Sim. Use o endpoint de geração mas adicione o bloco <RpsSubstituido> informando a nota que está sendo substituída.

Documentação OpenAPI / Swagger

Tenha acesso a documentação interativa no padrão OpenAPI.

Especificação OpenAPI

Arquivos para Download

Novidades

XML DE ENVIO
NOVO Novo campo CodigoNbs no XML de envio e retorno
13/01/2026

A partir de 13/01/2026, os XMLs de envio e retorno passam a incluir o campo <CodigoNbs> (Nomenclatura Brasileira de Serviços) dentro do grupo <Servico>, efetuando assim a classificação do serviço conforme a NBS.

Detalhes da alteração:
  • Tag: <CodigoNbs> - Código da Nomenclatura Brasileira de Serviços (NBS)
  • Localização no XML de envio: <Servico> dentro de <InfDeclaracaoPrestacaoServico>
  • Localização no XML de retorno: <Servico> dentro de <DeclaracaoPrestacaoServico>
  • Formato: Código numérico de 9 dígitos conforme tabela oficial da NBS
  • Obrigatoriedade: Campo obrigatório para todas as notas fiscais emitidas
  • Relação com ItemListaServico: O código NBS deve ser compatível com o Item da Lista de Serviços (LC 116/2003) informado
Importante:
  • A tabela completa de códigos NBS está disponível no link "https://www.gov.br/nfse/pt-br/biblioteca/documentacao-tecnica/rtc/anexoviii-correlacaoitemnbsindopcclasstrib_ibscbs_v1-00-00.xlsx"
  • O código NBS deve ser selecionado conforme a atividade específica do serviço prestado
  • A relação entre ItemListaServico (LC 116/2003) e CodigoNbs é de 1 para N (um item da lista pode ter vários códigos NBS)
  • Sistemas integradores devem implementar validação do código NBS para evitar rejeição
No menu "Arquivos para Download", contém os XMLs de exemplo atualizados com o campo CodigoNbs.
NOVO Novo campo RpsSubstituido no XML de envio
12/01/2026

O XML de envio agora suporta informações sobre RPS que está sendo substituído através da nova tag <RpsSubstituido> dentro do grupo <Rps>.

Detalhes da alteração:
  • Tag principal: <RpsSubstituido> - Contém dados do RPS que está sendo substituído
  • <Numero> - Número do RPS substituído
  • <Serie> - Série do RPS substituído
  • <Tipo> - Tipo do RPS substituído
NOVO Novo grupo DadosObra (XML de envio)
12/01/2026

O XML de envio agora permite informar dados detalhados da obra diretamente no grupo <Prestador> através da nova tag <DadosObra>.

Detalhes da alteração:
  • Tag principal: <DadosObra> - Contém informações detalhadas da obra
  • <cnoFild> - Código CNO (Cadastro Nacional de Obras) da obra
  • <cepObraFild> - CEP do local da obra
  • <logradouroObraFild> - Logradouro completo da obra
  • <numeroObraFild> - Número do endereço da obra
  • <bairroObraFild> - Bairro onde está localizada a obra
  • <complementoObraFild> - Complemento do endereço da obra
  • <quadraObraFild> - Quadra da obra (quando aplicável)
  • <loteObraFild> - Lote da obra (quando aplicável)
Para os serviços '07.02', '07.04', '07.05', '07.06', '07.07', '07.08', '07.17' e '07.19' este grupo de informações é obrigatório com exceção da TAG "cnoFild".
NOVO Novo grupo Intermediario no XML de envio
12/01/2026

O XML de envio agora suporta informações sobre intermediário de serviços através da nova tag <Intermediario>.

Detalhes da alteração:
  • Tag principal: <Intermediario> - Contém dados do intermediário de serviços
  • <IdentificacaoIntermediario> - Grupo com CPF/CNPJ e Inscrição Municipal do intermediário
  • <RazaoSocial> - Razão social do intermediário
REMOVIDO Campos removidos do XML de envio
12/01/2026

Alguns campos foram removidos do XML de envio para simplificação e adequação ao padrão nacional.

Campos que NÃO devem mais ser enviados:
  • <NaturezaOperacao> - Removido do nível principal de InfDeclaracaoPrestacaoServico
  • <Observacao> - Removido do nível principal (mantido apenas dentro de Servico)
  • <NomeFantasia> - Removido do grupo Tomador
XML DE RETORNO
NOVO Nova estrutura de dados da Nota Nacional no XML de retorno
12/01/2026

A partir de12/01/2026, o XML de retorno das notas fiscais incluirá uma nova tag <DadosNotaNacional> contendo informações sobre IBS, CBS e a chave de acesso nacional.

Detalhes da alteração:
  • Tag principal: <DadosNotaNacional> - Contém dados referentes à nota nacional
  • <AliqotaIBS> - Alíquota aplicada para calcular o IBS
  • <AliquotaCBS> - Alíquota aplicada para calcular o CBS
  • <ValorIBS> - Valor calculado do IBS
  • <ValorCBS> - Valor calculado do CBS
  • <ChaveAcessoNacional> - Chave de acesso do registro da nota nacional
MODIFICADO Padronização dos nomes das tags em DadosNotaNacional
12/01/2026

As tags dentro de <DadosNotaNacional> tiveram seus nomes padronizados para melhor legibilidade. Os nomes antigos não devem mais ser utilizados.

Mudanças nos nomes das tags:
  • <pAliqIBS> foi substituída por <AliqotaIBS>
  • <pAliqCBS> foi substituída por <AliquotaCBS>
  • <vIBS> foi substituída por <ValorIBS>
  • <vCBS> foi substituída por <ValorCBS>
  • <chAcesso> foi substituída por <ChaveAcessoNacional>
NOVO Novos campos informativos no XML de retorno
12/01/2026

O XML de retorno foi enriquecido com novos campos informativos para melhor rastreabilidade e gestão das notas fiscais.

Novos campos adicionados:
  • <DescricaoCancelamento> - Descrição do motivo de cancelamento da nota
  • <DescricaoSubstituicao> - Descrição do motivo de substituição da nota
  • <Discriminacao> - Discriminação detalhada do serviço prestado
  • <Observacao> - Observações adicionais sobre a nota fiscal
  • <ValorCredito> - Valor de crédito tributário (quando aplicável)
  • <EnderecoPrestadorServico> - Endereço completo do prestador
  • <OrgaoGerador> - Identificação do órgão que gerou a NFS-e
NOVO Novas estruturas de Cancelamento e Substituição
12/01/2026

O XML de retorno agora inclui estruturas específicas para informações de cancelamento e substituição de notas fiscais.

Detalhes da alteração:
  • <NfseCancelamento> - Contém informações completas sobre o cancelamento da nota
  • <NfseSubstituicao> - Contém informações sobre a nota fiscal substituta
  • <Confirmacao> - Dados da confirmação do cancelamento
  • <DataHora> - Data e hora da confirmação do cancelamento
  • <NfseSubstituidora> - Número da nota fiscal que substituiu
NOVO Grupo DadosObra retornado no Prestador
12/01/2026

Quando enviados no XML de entrada, os dados da obra agora são retornados dentro do grupo <Prestador> no XML de retorno.

Detalhes da alteração:
  • Os mesmos campos enviados são retornados para confirmação
  • Permite verificar se os dados da obra foram registrados corretamente
  • Localização: dentro de <DeclaracaoPrestacaoServico><Prestador>
MODIFICADO Simplificação da estrutura ValoresNfse
12/01/2026

A estrutura <ValoresNfse> foi simplificada, mantendo apenas os campos essenciais para o resumo dos valores da nota.

Campos mantidos em ValoresNfse:
  • <BaseCalculo> - Base de cálculo do ISS
  • <Aliquota> - Alíquota aplicada
  • <ValorIss> - Valor do ISS calculado
  • <ValorLiquidoNfse> - Valor líquido da nota fiscal
Nota: Os valores detalhados (deduções, retenções, etc) continuam disponíveis em Servico → Valores dentro de DeclaracaoPrestacaoServico.
NOVO Estruturas aprimoradas para mensagens de retorno
12/01/2026

O XML de retorno agora possui estruturas específicas para mensagens de alerta e erro, facilitando o tratamento de problemas.

Estruturas de mensagens:
  • <ListaMensagemAlertaRetorno> - Lista de alertas não-críticos
  • <ListaMensagemRetorno> - Lista de mensagens gerais (erros, avisos, confirmações)
  • <Codigo> - Código identificador da mensagem
  • <Mensagem> - Descrição da mensagem
  • <Correcao> - Sugestão de correção (quando aplicável)

Fique atualizado!

- Esta seção é atualizada sempre que há mudanças importantes nos XMLs, endpoints ou regras de validação da API.

- No menu "Arquivos para Download", contém o XML de exemplo com as novas tags.