Pular para o conteúdo

Emitir uma NFSe (Nota Fiscal de Serviço)

A NFSe é emitida pelo município (não pela SEFAZ estadual) e cada cidade tem regras um pouco diferentes. A API do FazNota abstrai essas diferenças.

Pré-requisitos

  • Empresa com inscrição municipal ativa.
  • Município com integração suportada pela FazNota (verificar com o suporte).
  • Cliente e serviços (produtos tipo: "S") cadastrados.

Fluxo

  1. Emitir a NFSe

    Terminal window
    curl -X POST $BASE/nfse/emissao \
    -H "Authorization: Token $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
    "numero-origem": "OS-2026-00088",
    "observacao": "Serviço de consultoria realizado em maio/2026.",
    "informacoes-complementares": "ISS retido pelo tomador conforme art. 6º da LC 116/2003. Contrato 4471/2026.",
    "iss-retido": "1",
    "nome-contato": "João Silva",
    "telefone-contato": "11987654321",
    "data-fim": "2026-05-31",
    "cliente": "12345678000199",
    "itens": [
    { "produto": "SRV-CONSULT", "quantidade": "10", "valor-unitario": "250.00" }
    ]
    }'
  2. Consultar pelo recibo

    Terminal window
    curl $BASE/nfse/nota/{recibo} \
    -H "Authorization: Token $TOKEN"

Discriminação, informações complementares e ISS retido

Três campos opcionais do corpo da emissão que costumam ser confundidos:

CampoOnde apareceRegras
observacaoDiscriminação do serviço no DANFSe/XMLTexto livre, até 2.000 caracteres
informacoes-complementaresSeção “Informações Complementares” do DANFSe/XMLTexto livre, até 2.000 caracteres. Seção diferente da discriminação — os dois podem ter conteúdos distintos na mesma nota. Alguns municípios truncam antes (ex.: 255 ou 1.000 caracteres), o que é tratado automaticamente
iss-retidoIndicador de retenção da nota"1" = ISS retido pelo tomador (substituição tributária), "2" = não retido. Padrão "2" quando omitido

Cadastro de produto de serviço

Terminal window
curl -X POST $BASE/produtos \
-H "Authorization: Token $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"referencia": "SRV-CONSULT",
"nome": "Consultoria técnica (hora)",
"valor": "250.00",
"medida": "H",
"tipo-produto": "S",
"codigo-servico": "1.04"
}'

codigo-servico segue a lista municipal (varia por cidade — geralmente a lista da Lei Complementar 116/2003 com adaptações locais).

Filtrar listagem por data

Terminal window
curl "$BASE/nfse?dataInicial=2026-05-01&page=1&page_size=20" \
-H "Authorization: Token $TOKEN"

Cancelamento

Terminal window
curl -X POST $BASE/nfse/cancelamento \
-H "Authorization: Token $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"chave": "chave_nfse_aqui",
"motivo": "Cancelamento solicitado pelo tomador — serviço não realizado."
}'

Particularidades por município

Cada município tem variações. Os pontos mais comuns:

AspectoComportamento
NumeraçãoAlguns municípios numeram, outros usam a chave municipal
CancelamentoPrazo varia (geralmente até virada do mês)
Item de serviçoLista padrão LC 116/2003 + adaptações locais
Retenções (INSS, ISS)Calculadas conforme cadastro fiscal do prestador

Verifique com o suporte FazNota se o seu município está homologado e quais campos adicionais são necessários.

Erros comuns

MensagemCausa
Campo nfse@cliente documento não pertence a um cliente cadastrado.Cliente desconhecido
Campo nfse@itens não pode ser vazio.Array de itens vazio
status: "900" (rejeição municipal)Inscrição municipal incorreta, código de serviço inválido para o município, ou retenção mal calculada