N API NFS-e
Sem entidade definida
Autorização global (Sandbox)

Slug do município que você integra, fornecido por quem configurou o acesso. Obrigatório em toda chamada. The municipality slug you're integrating with, provided by whoever set up access. Required on every call.

Não tem um token? Gere um na seção Gerar token →

← Sistema

Documentação da API NFS-eNFS-e API Documentation

Emita, consulte e cancele Notas Fiscais de Serviço Eletrônicas via API REST. Ambientes Sandbox e Produção, autenticação Bearer, e um console de testes embutido em cada endpoint. Issue, look up and cancel electronic service invoices (NFS-e) through a REST API. Sandbox and Production environments, Bearer authentication, and a built-in test console on every endpoint.

Formato: REST / JSON Autenticação: Bearer Token Identificação do município: header entidadeCity identification: entidade header

Collection para Postman / OpenAPIPostman / OpenAPI collection

Baixe a especificação OpenAPI 3.0 completa (JSON) com todos os endpoints, parâmetros e schemas. Importe direto no Postman, Insomnia ou Swagger UI. Download the full OpenAPI 3.0 specification (JSON) with every endpoint, parameter and schema. Import it straight into Postman, Insomnia or Swagger UI.

5
Endpoints (x2 ambientes)Endpoints (x2 environments)
12h
Validade do tokenToken validity
2
Ambientes isoladosIsolated environments
9
Códigos de retorno mapeadosMapped response codes

QuickstartQuickstart

Fluxo completo para emitir sua primeira NFS-e de teste no Sandbox, do zero, em 4 passos. The complete flow to issue your first test invoice on the Sandbox, from scratch, in 4 steps.

Antes de tudo: o que é a entidade?First things first: what is the entidade?
É o slug que identifica o município (prefeitura/cliente) que você está integrando. Cada um tem o seu próprio, fornecido pela equipe responsável pela implantação. Ele é obrigatório em toda chamada da API, inclusive na geração do token; sem ele, nem essa parte funciona. It's the slug identifying the municipality (city hall/client) you're integrating with. Each one has its own, provided by whoever set up the integration. It's required on every API call, including token generation; without it, not even that step works.

Clique em Autorizar no topo da página e informe a sua uma única vez. O valor fica salvo nesta aba do navegador e é reaproveitado automaticamente em todos os passos e painéis de teste abaixo. Click Authorize at the top of the page and enter yours once. It's saved in this browser tab and automatically reused across every step and test panel below.
1

Autorizar & gerar tokenAuthorize & get a token

Gere um token Bearer com o cpf_cnpj, email e password de um usuário do Sandbox. Ele vale por 12h. Generate a Bearer token with the cpf_cnpj, email and password of a Sandbox user. It's valid for 12h.

Ver documentação →
2

Cadastrar o tomadorRegister the customer

Toda NFS-e exige um tomador já cadastrado. Envie ao menos razao_social, endereco e o documento (cpf_cnpj ou nif). Every invoice requires an already-registered customer. Send at least razao_social, endereco and the document (cpf_cnpj or nif).

Ver documentação →
3

Emitir a NFS-eIssue the invoice

Com o token e o tomador prontos, envie os dados do serviço, a localização (códigos IBGE) e os valores. A resposta traz a chave da nota. With the token and customer ready, send the service data, location (IBGE codes) and amounts. The response returns the invoice's chave.

Ver documentação →
4

Cancelar (opcional)Cancel (optional)

Para desfazer uma emissão de teste, cancele usando a chave retornada no passo anterior e um motivo. To undo a test issuance, cancel it using the chave returned in the previous step and a reason.

Ver documentação →

1Visão geralOverview

A API opera em dois ambientes independentes, selecionados diretamente pelo caminho da rota.The API runs on two independent environments, selected directly through the route path.

O Sandbox utiliza base própria e não transmite NFS-e ao Ambiente Nacional. Em Produção, a integração com o GOV ocorre somente no fluxo de produção. The Sandbox uses its own database and never transmits invoices to the National Environment. In Production, integration with GOV only happens in the production flow.
Todo endpoint da Referência da API (menu lateral) tem um painel fixo à direita com exemplos em cURL, PHP, Node.js e Python, mais um botão Try It! para chamar o Sandbox de verdade sem sair da página. Every endpoint in the API Reference (sidebar) has a fixed right-hand panel with examples in cURL, PHP, Node.js and Python, plus a Try It! button to call the real Sandbox without leaving the page.

2Segurança & boas práticasSecurity & best practices

Recomendações baseadas no comportamento real dos middlewares de autenticação.Recommendations based on the real behavior of the authentication middlewares.

PráticaPractice MotivoReason
Nunca reutilize credenciais de produção em Sandbox (ou vice-versa)Never reuse Production credentials in Sandbox (or vice-versa) Tokens são segregados por ambiente (ambiente = 1 produção / 2 sandbox); um token de Sandbox não autentica em Produção.Tokens are segregated per environment (ambiente = 1 production / 2 sandbox); a Sandbox token will not authenticate in Production.
Armazene o token com o mesmo cuidado de uma senhaStore the token with the same care as a password O token é um Bearer de 80 caracteres, válido por 12h; qualquer portador da string é autenticado como o contribuinte.The token is an 80-character Bearer, valid for 12h; anyone holding the string is authenticated as that taxpayer.
Sempre trate codigo (corpo) e HTTP status juntosAlways handle codigo (body) and the HTTP status together O campo codigo não segue 1:1 o HTTP status. Por exemplo, codigo 201 ocorre com HTTP 401. Veja Códigos de retorno.The codigo field does not map 1:1 to the HTTP status. For example, codigo 201 occurs with HTTP 401. See Response codes.
Reautentique a cada 12h ou trate codigo 202Re-authenticate every 12h or handle codigo 202 Uma nova chamada de /auth/token renova o token do mesmo usuário/ambiente automaticamente.A new call to /auth/token automatically renews the token for the same user/environment.
Cadastre o tomador antes de emitir a NFS-eRegister the customer before issuing the invoice O emissor resolve documento_tomador contra a base de tomadores do contribuinte; se não existir, a emissão falha com erro de validação.The issuer resolves documento_tomador against the taxpayer's customer records; if it doesn't exist, issuance fails with a validation error.
Use HTTPS em produçãoUse HTTPS in production O header Authorization trafega o token em texto plano; sem TLS ele fica exposto na rede.The Authorization header carries the token in plain text; without TLS it is exposed on the network.
O painel de teste desta página está deliberadamente restrito ao ambiente Sandbox e mantém o token apenas em memória do navegador (nunca em localStorage). Ele é descartado ao recarregar a página. This page's test panel is deliberately restricted to the Sandbox environment and keeps the token only in browser memory (never in localStorage). It is discarded on page reload.

3Ambientes e rotasEnvironments & routes

Cada operação possui uma rota equivalente em Sandbox e em Produção.Each operation has an equivalent route in Sandbox and Production.

MétodoMethodSandboxProduçãoProductionFinalidadePurpose
POST/api/v1/sandbox/auth/token/api/v1/production/auth/tokenGerar/renovar tokenGenerate/renew token
POST/api/v1/sandbox/tomadores/api/v1/production/tomadoresCadastrar/processar tomadorCreate/process customer
GET/api/v1/sandbox/tomadores/api/v1/production/tomadoresConsultar tomadoresList customers
POST/api/v1/sandbox/nfse/api/v1/production/nfseCadastrar/processar NFS-eCreate/process invoice
POST/api/v1/sandbox/nfse/{chave}/cancelar/api/v1/production/nfse/{chave}/cancelarCancelar NFS-eCancel invoice
Se a aplicação estiver em subdiretório, o caminho físico do projeto vem antes de /api/v1/.... Exemplo local já usado: /keep/nfs-e/api/v1/sandbox/... If the application lives in a subdirectory, the project's physical path comes before /api/v1/.... Local example already in use: /keep/nfs-e/api/v1/sandbox/...

4Headers e autenticaçãoHeaders & authentication

HeaderObrigatórioRequiredValor / formatoValue / formatObservaçãoNote
entidadestring (slug)Enviado em todas as requisições, inclusive autenticação. Ausência ou slug inexistente retorna codigo 203 (HTTP 422).Sent on every request, including authentication. Missing or unknown slug returns codigo 203 (HTTP 422).
AuthorizationSim*Yes*Bearer {token}*Exceto na geração do token.*Except when generating the token.
Content-TypeSim para POSTYes for POSTapplication/jsonCorpo em JSON.JSON body.
AcceptRecomendadoRecommendedapplication/jsonResposta em JSON.JSON response.

5Limites de requisiçõesRate limits

Todos os endpoints da API são limitados por IP de origem, com um limite adicional na geração de token. All API endpoints are rate-limited by source IP, with an additional limit on token generation.

EscopoScope LimiteLimit BaseBasis
Todos os endpoints /api/v1/*All /api/v1/* endpoints 60 requisições/minutorequests/minute Por IP de origemPer source IP
POST /auth/token (adicional)(additional) 5 requisições/minutorequests/minute Por IP de origemPer source IP
O limite de /auth/token é somado ao limite geral: nessa rota, o que esgotar primeiro (5/min ou 60/min) bloqueia a chamada. The /auth/token limit stacks with the general one: on that route, whichever runs out first (5/min or 60/min) blocks the call.
Resposta 429: limite excedido429 response: limit exceeded
{
  "message": "Too Many Attempts."
}

A resposta também inclui os headers Retry-After, X-RateLimit-Limit e X-RateLimit-Remaining. The response also includes the Retry-After, X-RateLimit-Limit and X-RateLimit-Remaining headers.

6GlossárioGlossary

Termos do domínio fiscal/NFS-e usados ao longo desta documentação. Tax/NFS-e domain terms used throughout this documentation.

TermoTerm DefiniçãoDefinition
NFS-e Nota Fiscal de Serviço Eletrônica: documento fiscal eletrônico emitido por prestadores de serviço no âmbito municipal.Electronic Service Invoice: the electronic tax document issued by service providers at the municipal level.
DPS Declaração de Prestação de Serviços: declaração enviada para gerar a NFS-e dentro do padrão nacional (Ambiente de Dados Nacional).Service Provision Declaration: the declaration submitted to generate the NFS-e under the national standard (National Data Environment).
RPS Recibo Provisório de Serviços: documento provisório emitido antes da NFS-e definitiva, posteriormente substituído por ela.Provisional Service Receipt: a provisional document issued before the definitive NFS-e, later replaced by it.
NBS Nomenclatura Brasileira de Serviços: código nacional de classificação de serviços, intangíveis e outras operações.Brazilian Services Nomenclature: the national classification code for services, intangibles and other operations.
Item de serviçoService item Código da lista de serviços (LC 116/2003). A variante nacional segue a tabela federal; a municipal é o refinamento local, quando existente.Service list code (Federal Law 116/2003). The national variant follows the federal table; the municipal one is the local refinement, when it exists.
Código IBGEIBGE code Identificador numérico de 7 dígitos atribuído pelo IBGE a cada município brasileiro.The 7-digit numeric identifier assigned by IBGE to each Brazilian municipality.
ISS Imposto sobre Serviços: tributo municipal incidente sobre a prestação de serviços.Service Tax: the municipal tax levied on the provision of services.
TomadorCustomer Pessoa física ou jurídica que contrata e paga pelo serviço prestado: o cliente da nota.The individual or company that hires and pays for the service: the invoice's customer.
ContribuinteTaxpayer Prestador do serviço, autenticado na API e responsável pela emissão da NFS-e.The service provider, authenticated in the API and responsible for issuing the invoice.
CompetênciaReference month Mês de referência (formato YYYY-MM) ao qual a obrigação fiscal da nota se refere.The reference month (YYYY-MM format) the invoice's tax obligation refers to.
DAM Documento de Arrecadação Municipal: guia de pagamento municipal. Uma NFS-e vinculada a um DAM pago ou em cobrança não pode ser cancelada livremente.Municipal Tax Collection Document: a municipal payment slip. An invoice linked to a paid or in-collection DAM cannot be freely cancelled.
Ambiente Nacional (ADN)National Environment (ADN) Ambiente de Dados Nacional: infraestrutura federal que recebe e valida as NFS-e em produção.National Data Environment: the federal infrastructure that receives and validates invoices in production.
Chave de acessoAccess key Identificador único gerado na emissão, usado para consultar ou cancelar a NFS-e (campo chave).The unique identifier generated at issuance, used to look up or cancel the invoice (chave field).
Código de verificaçãoVerification code Código retornado na emissão para verificação pública de autenticidade da nota.The code returned at issuance for public authenticity verification of the invoice.

7Gerar tokenGet token

Endpoint:Endpoint: POST /api/v1/{ambiente}/auth/token. Exemplos e teste ao vivo no painel à direita →Examples and live test in the right-hand panel →

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
cpf_cnpjstringCPF/CNPJ do contribuinte (deve possuir emite_nota = 1 e item de serviço configurado).Taxpayer's CPF/CNPJ (must have emite_nota = 1 and a configured service item).
emaile-mail válidovalid e-mailE-mail do usuário vinculado ao contribuinte.E-mail of the user linked to the taxpayer.
passwordstringSenha do usuário.User's password.
O token possui validade de 12 horas (expires_in: 43200). Uma nova autenticação do mesmo usuário e ambiente renova (substitui) o token existente. Não empilha tokens. The token is valid for 12 hours (expires_in: 43200). A new authentication for the same user and environment renews (replaces) the existing token. Tokens are not stacked.
Resposta 200200 response
{
  "codigo": 200,
  "descricao": "Autenticação realizada com sucesso.",
  "token": "aQ7f...(80 caracteres)",
  "token_type": "Bearer",
  "expires_in": 43200,
  "expira_em": "2026-09-29 04:10:51"
}
Resposta 401: credenciais inválidas401 response: invalid credentials
{
  "codigo": 401,
  "descricao": "CNPJ, e-mail ou senha inválidos."
}

8Cadastro de tomadorCustomer registration

Endpoint:Endpoint: POST /api/v1/{ambiente}/tomadores. RequerRequires Authorization: Bearer {token}

Se já existir um tomador com o mesmo cpf_cnpj ou nif para o contribuinte autenticado, a API não cria duplicado: retorna o tomador existente com codigo 204 (HTTP continua 200). If a customer with the same cpf_cnpj or nif already exists for the authenticated taxpayer, the API does not create a duplicate: it returns the existing customer with codigo 204 (HTTP remains 200).
ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
razao_socialstring, máx. 100Razão social / nome.Legal name.
fantasiastring, máx. 100Nome fantasia.Trade name.
cpf_cnpjstring, máx. 18CPF ou CNPJ (validado por dígito verificador). Para brasileiro, o tipo (física/jurídica) é inferido pelo tamanho após normalização (11 = CPF, 14 = CNPJ).CPF or CNPJ (validated by check digit). For a Brazilian party, the type (individual/company) is inferred from the length after normalization (11 = CPF, 14 = CNPJ).
nifstring, máx. 40NIF do estrangeiro.Foreign taxpayer's NIF.
nao_nifintegerIndicador de ausência de NIF.Flag indicating the absence of a NIF.
emaile-mail, máx. 100E-mail.E-mail.
contatostring, máx. 20Contato principal.Primary contact.
contato2string, máx. 20Contato secundário.Secondary contact.
paisNão*No*string, máx. 100Nome do país (ex.: Brasil). Se omitido, assume Brasil (id 31).Country name (e.g. Brasil). Defaults to Brazil (id 31) if omitted.
estado Não (ignorado)No (ignored) O campo estado pode ser enviado, mas não é utilizado pela API atualmente. The estado field can be sent, but is not currently used by the API.
cidade Condicional (Brasil)Conditional (Brazil) string/integer Obrigatória para tomador no Brasil. O valor esperado é o código IBGE do município (ex.: 2927408), não o nome da cidade como texto. Required for a Brazilian customer. The expected value is the IBGE municipality code (e.g. 2927408), not the city name as free text.
cepstring, máx. 11CEP/código postal.Postal code.
enderecostring, máx. 100Endereço.Address.
numerostring, máx. 10Número.Street number.
bairrostring, máx. 100Bairro.Neighborhood.
complementostring, máx. 200Complemento.Address complement.
iestring, máx. 20Inscrição estadual.State tax registration.
imstring, máx. 20Inscrição municipal.Municipal tax registration.
caepfstring, máx. 14CAEPF.
exterior_cidadeCondicional (exterior)Conditional (foreign)string, máx. 60Obrigatória quando o tomador é estrangeiro.Required when the customer is foreign.
exterior_provinciaCondicional (exterior)Conditional (foreign)string, máx. 60Obrigatória quando o tomador é estrangeiro.Required when the customer is foreign.
Identificação: deve existir CPF/CNPJ, NIF ou indicação de ausência de NIF (nao_nif). O campo tipo não é enviado; o sistema o determina. Identification: a CPF/CNPJ, NIF, or a no-NIF flag (nao_nif) must be present. The tipo field is not sent; the system determines it.
Resposta 200: criado200 response: created
{
  "codigo": 200,
  "descricao": "Tomador cadastrado com sucesso.",
  "tomador": {
    "razao_social": "Empresa Exemplo LTDA",
    "cpf_cnpj": "12345678000190",
    "pais": "Brasil",
    "cidade": "Salvador",
    "endereco": "Av. Exemplo"
    "...": "demais campos do cadastro"
  }
}

9Consulta de tomadoresCustomer lookup

Endpoint:Endpoint: GET /api/v1/{ambiente}/tomadores

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
nomeOpcionalOptionalstring, máx. 100Pesquisa por LIKE em razão social ou fantasia.Searches legal/trade name using LIKE.
documentoOpcionalOptionalstring, máx. 40Pesquisa exata por CPF/CNPJ (normalizado) ou NIF.Exact search by (normalized) CPF/CNPJ or NIF.
cpf_cnpj / nif Aceitos, sem efeitoAccepted, no effect string Aceitos pela API, mas sem efeito na busca. Use documento. Accepted by the API, but have no effect on the search. Use documento instead.
A API não exige nenhum filtro: chamar sem parâmetros retorna todos os tomadores do contribuinte autenticado. The API does not require any filter: calling it with no parameters returns every customer of the authenticated taxpayer.
Resposta 200200 response
{
  "codigo": 200,
  "mensagem": "Tomadores encontrados.",
  "total": 1,
  "tomadores": [
    { "razao_social": "Empresa Exemplo LTDA", "...": "demais campos" }
  ]
}

10Emissão / cadastro de NFS-eInvoice issuance

Endpoint:Endpoint: POST /api/v1/{ambiente}/nfse

Tomador, intermediário e fornecedores informados por documento devem estar previamente cadastrados para o contribuinte (ver Cadastro de tomador). The customer, intermediary and any suppliers referenced by document must be previously registered for the taxpayer (see Customer registration).
Os campos cidade, cidade_gerador e cidade_incidencia recebem o código IBGE do município. Os campos uf/uf_gerador/uf_incidencia são aceitos no payload, mas não são utilizados. Podem ser omitidos. The cidade, cidade_gerador and cidade_incidencia fields take the municipality's IBGE code. The uf/uf_gerador/uf_incidencia fields are accepted in the payload but are not used. They can be omitted.

Identificação e serviçoIdentification & service

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
documento_tomadorstring, máx. 40CPF/CNPJ ou NIF do tomador, já cadastrado.Customer's CPF/CNPJ or NIF, already registered.
competenciaYYYY-MMCompetência (validação estrita de formato).Reference month (strict format validation).
dps_emitenteintegerEmitente da DPS.DPS issuer.
nsuinteger ou nullNSU; nullable.
documento_intermediariostring, máx. 40Documento do intermediário (também deve estar cadastrado como tomador).Intermediary's document (must also be registered as a customer).
item_servico_nacionalstring, 6 caracterescharactersCódigo do item nacional (desdobro diferente de "00").National service item code (breakdown other than "00").
item_servico_municipalstring, 6 caracterescharactersCódigo do item municipal.Municipal service item code.
nbsstring, máx. 15Código NBS existente na base.NBS code that exists in the database.

LocalizaçãoLocation

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
cidadestring/integer (código IBGEIBGE code)Cidade da prestação.City where the service was rendered.
ufAceito, sem usoAccepted, unusedNão validado nem utilizado pelo resolver atual.Not validated nor used by the current resolver.
cidade_geradorstring/integer (código IBGEIBGE code)Cidade do fato gerador.City of the taxable event.
uf_geradorAceito, sem usoAccepted, unusedNão validado nem utilizado pelo resolver atual.Not validated nor used by the current resolver.
cidade_incidenciastring/integer (código IBGEIBGE code)Cidade de incidência.City of tax incidence.
uf_incidenciaAceito, sem usoAccepted, unusedNão validado nem utilizado pelo resolver atual.Not validated nor used by the current resolver.

Tributação e valoresTaxation & amounts

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
trib_issqnintegerTributação ISSQN.ISSQN taxation.
exig_susp_tipointegerTipo de suspensão.Suspension type.
exig_susp_numero_processostringNúmero do processo.Case number.
tipo_imunidadeintegerTipo de imunidade.Immunity type.
trib_aliquotanumericAlíquota de tributação.Taxation rate.
tipo_retencaointegerTipo de retenção.Withholding type.
valor_serviconumeric ≥ 0Valor do serviço.Service amount.
valor_deducoesnumeric ≥ 0Deduções.Deductions.
base_calculonumeric ≥ 0Base de cálculo.Tax base.
valor_issnumeric ≥ 0ISS.
aliquotanumeric ≥ 0Alíquota.Rate.
valor_inssnumeric ≥ 0INSS.
valor_irrfnumeric ≥ 0IRRF.
valor_csllnumeric ≥ 0CSLL.
valor_cofinsnumeric ≥ 0COFINS.
valor_pisnumeric ≥ 0PIS.
outras_retencoesnumeric ≥ 0Outras retenções.Other withholdings.
desconto_condicionadonumeric ≥ 0Desconto condicionado.Conditional discount.
desconto_incondicionadonumeric ≥ 0Desconto incondicionado.Unconditional discount.

Benefício municipal e RPSMunicipal benefit & RPS

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
bm_tipointegerTipo do benefício.Benefit type.
bm_valornumeric ≥ 0Valor do benefício.Benefit amount.
bm_percentualnumeric ≥ 0Percentual.Percentage.
bm_numerostringNúmero do benefício.Benefit number.
rps_tipointegerTipo do RPS.RPS type.
rps_numerostringNúmero do RPS.RPS number.
rps_seriestringSérie.Series.
rps_emissaoYYYY-MM-DD HH:MM:SSEmissão do RPS.RPS issuance date.

Dados adicionais da prestaçãoAdditional service data

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
modo_prestacaointegerModo de prestação.Service delivery mode.
vinculo_prestacaointegerVínculo.Relationship.
tipo_moedastring, 3Código da moeda.Currency code.
valor_serv_moedanumeric ≥ 0Valor na moeda.Amount in that currency.
mec_afcomexpstring, máx. 2Mecanismo AFComExp.
mec_afcomextstring, máx. 2Mecanismo AFComExt.
mov_temp_bensintegerMovimentação temporária de bens.Temporary movement of goods.
mdicintegerIndicador MDIC.MDIC indicator.
isadppu_categoriaintegerCategoria ADPPU.ADPPU category.
isadppu_objetointegerObjeto ADPPU.ADPPU object.
tipo_servicointegerTipo do serviço.Service type.

Obra, evento e endereço da prestaçãoConstruction site, event & service address

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
obra_codigostring, máx. 30Código da obra.Construction site code.
obra_cibstring, máx. 8CIB.
evento_nomestring, máx. 255Nome do evento.Event name.
evento_data_inicioYYYY-MM-DDInício.Start date.
evento_data_fimYYYY-MM-DDFim.End date.
evento_idstring, máx. 30ID do evento.Event ID.
servico_cepstring, máx. 8CEP.
servico_logradourostring, máx. 255Logradouro.Street.
servico_numerostring, máx. 60Número.Number.
servico_complementostring, máx. 156Complemento.Complement.
servico_bairrostring, máx. 60Bairro.Neighborhood.
servico_cep_exteriorstring, máx. 11Código postal exterior.Foreign postal code.
servico_cidade_exteriorstring, máx. 60Cidade exterior.Foreign city.
servico_provincia_exteriorstring, máx. 60Província exterior.Foreign province.

Informações adicionais e deduçõesAdditional info & deductions

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
descricao_servicosstring, 5–2000Discriminação dos serviços prestados.Description of the services rendered.
documento_tecnicostring, máx. 40Documento técnico associado.Associated technical document.
informacoes_complementaresstringInformações complementares livres.Free-form additional information.
deducoesarrayLista de deduções/documentos de fornecedores.List of deductions/supplier documents.
deducoes.*.documento_fornecedorstring, máx. 40Documento do fornecedor (deve estar cadastrado como tomador).Supplier's document (must be registered as a customer).
deducoes.*.tipo_documentoSim (por item)Yes (per item)integerTipo do documento da dedução.Deduction document type.
deducoes.*.nota_chavestring, máx. 50Chave da nota deduzida.Key of the deducted invoice.
deducoes.*.valor_deducaonumeric ≥ 0Valor da dedução.Deduction amount.
deducoes.*.valor_dedutivelnumeric ≥ 0Valor dedutível.Deductible amount.
deducoes.*.data_emissao_docYYYY-MM-DDData de emissão do documento.Document issuance date.
Resposta 200200 response
{
  "codigo": 200,
  "mensagem": "NFS-e processada com sucesso.",
  "nfse": {
    "numero": "000123",
    "chave": "...",
    "codigo_verificacao": "...",
    "competencia": "2026-09",
    "emissao": "2026-09-28 17:05:00",
    "status": 1,
    "dps_numero": "...",
    "dps_chave": "..."
  }
}

Campo status: 1 = Emitida, 2 = Cancelada.status field: 1 = Issued, 2 = Cancelled.

11Cancelamento de NFS-eInvoice cancellation

O cancelamento é realizado pela chave da NFS-e e exige autenticação Bearer.Cancellation is performed using the invoice key and requires Bearer authentication.

RotasRoutes

MétodoMethodEndpointAmbienteEnvironment
POST/api/v1/sandbox/nfse/{chave}/cancelarSandbox
POST/api/v1/production/nfse/{chave}/cancelarProduçãoProduction

{chave} deve ser substituído pela chave da NFS-e que será cancelada.must be replaced with the key of the invoice to be cancelled.

Campos enviados no corpoBody fields

ParâmetroParameterObrigatórioRequiredTipo / formatoType / formatDescriçãoDescription
motivo_cancelamentointeger 1: Erro na emissão
2: Serviço não prestado
9: Outros
1: Issuance error
2: Service not rendered
9: Other
descricao_motivo_cancelamentostring, máx. 255 Descrição obrigatória do motivo do cancelamento.Required description of the cancellation reason.

Regras de cancelamentoCancellation rules

CondiçãoConditionRespostaResponse
NFS-e não pertence ao contribuinte autenticado ou não existeInvoice doesn't belong to the authenticated taxpayer, or doesn't existcodigo 203 (HTTP 404)
NFS-e já está canceladaInvoice is already cancelledcodigo 203 (HTTP 422)
NFS-e vinculada a um DAM com cota em situação 1 ou 2Invoice linked to a DAM with an installment in status 1 or 2codigo 203 (HTTP 422)
SucessoSuccesscodigo 200 (HTTP 200)
Resposta 200200 response
{
  "codigo": 200,
  "mensagem": "NFS-e cancelada com sucesso.",
  "nfse": {
    "numero": "000123",
    "chave": "...",
    "status": 2
  }
}

12Códigos de retornoResponse codes

Todas as respostas trazem um campo codigo no corpo, além do HTTP status. Estes dois valores nem sempre coincidem.Every response carries a codigo field in the body, besides the HTTP status. These two values don't always match.

codigoHTTPSignificadoMeaningOnde ocorreWhere it happens
200200SucessoSuccessTodas as operações concluídas com êxito.All successfully completed operations.
204200Tomador já existente (não é erro)Customer already exists (not an error)Cadastro de tomador, quando já há um registro com o mesmo documento.Customer registration, when a record with the same document already exists.
201401Token ausente ou inválidoMissing or invalid tokenQualquer endpoint autenticado, via ApiTokenMiddleware.Any authenticated endpoint, via ApiTokenMiddleware.
202401Token expiradoExpired tokenApiTokenMiddleware, quando expires_at já passou.when expires_at has already passed.
203404 ouor 422Erro de validação ou de regra de negócioValidation or business-rule errorPayload inválido, entidade/ambiente inválidos, NFS-e não encontrada (404), já cancelada, vinculada a DAM.Invalid payload, invalid entity/environment, invoice not found (404), already cancelled, linked to a DAM.
205503Serviço bloqueado administrativamenteAdministratively blocked serviceCheckBloqueioApi e bloqueio específicoand specific block nfse-notas.
401401Credenciais inválidas na geração do tokenInvalid credentials when generating the tokenExclusivo deExclusive to POST /auth/token.
500500Erro interno não tratadoUnhandled internal errorFalha de conexão com o banco da entidade, ou exceção inesperada.Entity database connection failure, or an unexpected exception.
Inconsistência real observada: a falha de autenticação em /auth/token usa codigo 401, enquanto a falta/invalidez de token nas demais rotas usa codigo 201. Ambas resultam em HTTP 401. Decida o fluxo pelo HTTP status combinado com a rota chamada. Real inconsistency observed: an auth failure on /auth/token uses codigo 401, while a missing/invalid token on other routes uses codigo 201. Both result in HTTP 401. Branch your logic on the HTTP status combined with the called route.

Status da APIAPI Status

Verificação rápida de disponibilidade do ambiente Sandbox, feita diretamente do seu navegador. Quick availability check for the Sandbox environment, performed directly from your browser.

Não verificado
Última verificação: N/A Tempo de resposta: N/A Ambiente: Sandbox
Este verificador envia uma requisição real para /api/v1/sandbox/auth/token com um corpo vazio. Qualquer resposta HTTP (mesmo 422 de validação) confirma que a API está no ar; uma falha de rede indica indisponibilidade. This checker sends a real request to /api/v1/sandbox/auth/token with an empty body. Any HTTP response (even a 422 validation error) confirms the API is up; a network failure indicates unavailability.
API NFS-e: Documentação técnica v1 API NFS-e: Technical documentation v1