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
Entre em contato com a prefeitura do município para obter seu usuário e senha de acesso à API.
Monte o XML da NFS-e conforme o schema XSD fornecido. Assine digitalmente o XML com seu certificado digital.
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
Baixe os exemplos completos de XML:
Novidades
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.
- 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
- 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
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>.
- 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
O XML de envio agora permite informar dados detalhados da obra diretamente no grupo <Prestador> através da nova tag <DadosObra>.
- 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)
O XML de envio agora suporta informações sobre intermediário de serviços através da nova tag <Intermediario>.
- 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
Alguns campos foram removidos do XML de envio para simplificação e adequação ao padrão nacional.
<NaturezaOperacao>- Removido do nível principal de InfDeclaracaoPrestacaoServico<Observacao>- Removido do nível principal (mantido apenas dentro de Servico)<NomeFantasia>- Removido do grupo Tomador
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.
- 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
As tags dentro de <DadosNotaNacional> tiveram seus nomes padronizados para melhor legibilidade. Os nomes antigos não devem mais ser utilizados.
<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>
O XML de retorno foi enriquecido com novos campos informativos para melhor rastreabilidade e gestão das notas fiscais.
<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
O XML de retorno agora inclui estruturas específicas para informações de cancelamento e substituição de notas fiscais.
<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
Quando enviados no XML de entrada, os dados da obra agora são retornados dentro do grupo <Prestador> no XML de retorno.
- 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>
A estrutura <ValoresNfse> foi simplificada, mantendo apenas os campos essenciais para o resumo dos valores da nota.
<BaseCalculo>- Base de cálculo do ISS<Aliquota>- Alíquota aplicada<ValorIss>- Valor do ISS calculado<ValorLiquidoNfse>- Valor líquido da nota fiscal
O XML de retorno agora possui estruturas específicas para mensagens de alerta e erro, facilitando o tratamento de problemas.
<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.