Weesy Docs

Emitir e consultar NFS-e

Listar NFS-e

GET https://apifiscal.weesy.com.br/v1/nfse

Abrir na referência interativa

Lista as notas, com filtros por empresa, período e situação. Para manter o seu sistema em dia, use atualizadoDesde e atualize as notas pelo id.

Parâmetros

NomeOndeTipoDescrição
cnpjEmitentequerystring

CNPJ da empresa. Obrigatório para integradores, que têm várias empresas.

statusqueryarray de string
numeroquerystring
tomadorquerystring

CPF ou CNPJ do tomador.

competenciaDequerystring (date)
competenciaAtequerystring (date)
ambientequerystring

Valores: simulacao, homologacao, producao.

atualizadoDesdequerystring (date-time)

Traz só o que mudou a partir desta data e hora (inclusive). Para sincronizar: guarde a hora da última consulta e atualize os registros pelo id — pode vir algum repetido.

limitequeryinteger
cursorquerystring

Para pegar a próxima página, repasse o paginacao.proximoCursor da resposta anterior.

Exemplo de chamada

cURL

curl --request GET \
  --url "https://apifiscal.weesy.com.br/v1/nfse" \
  --header "Authorization: Bearer $WEESY_TOKEN"

Node.js

const resposta = await fetch("https://apifiscal.weesy.com.br/v1/nfse", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.WEESY_TOKEN}`,
  },
});
console.log(resposta.status, await resposta.text());

Python

import os

import requests

resposta = requests.get(
    "https://apifiscal.weesy.com.br/v1/nfse",
    headers={"Authorization": f"Bearer {os.environ['WEESY_TOKEN']}"},
    timeout=30,
)
print(resposta.status_code, resposta.text)

PHP

<?php

$contexto = stream_context_create(["http" => [
    "method" => "GET",
    "header" => implode("\r\n", ["Authorization: Bearer " . getenv("WEESY_TOKEN")]),
    "ignore_errors" => true, // lê o corpo também nas respostas de erro
]]);
$resposta = file_get_contents("https://apifiscal.weesy.com.br/v1/nfse", false, $contexto);
echo $http_response_header[0], PHP_EOL, $resposta, PHP_EOL;

C#

using System.Net.Http.Headers;

using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("WEESY_TOKEN"));

using var resposta = await http.GetAsync("https://apifiscal.weesy.com.br/v1/nfse");
Console.WriteLine($"{(int)resposta.StatusCode} {await resposta.Content.ReadAsStringAsync()}");

Respostas

Campos da resposta 200

CampoTipoDescrição
dados
obrigatório
array de object
dados[].id
obrigatório
string

Identificador da NFS-e na Weesy.

dados[].idIntegracao
obrigatório
string

Identificador informado pelo integrador na emissão.

dados[].status
obrigatório
string

Situação atual do processamento da NFS-e.

ValorSignificado
recebidaRecebemos a nota e vamos enviar à prefeitura
em_processamentoEnviada à prefeitura, aguardando a resposta
autorizadaAutorizada pela prefeitura
rejeitadaRecusada pela prefeitura — corrija e emita de novo
erroNão conseguimos falar com a prefeitura — tente de novo
cancelamento_solicitadoCancelamento pedido, aguardando a prefeitura
canceladaCancelada pela prefeitura
cancelamento_rejeitadoA prefeitura recusou o cancelamento
dados[].ambiente
obrigatório
string

Ambiente em que a emissão foi solicitada.

ValorSignificado
simulacaoTeste sem certificado — a Weesy responde no lugar da prefeitura
homologacaoTeste no ambiente de testes da prefeitura — precisa de certificado
producaoA nota de verdade, com valor fiscal
dados[].empresa
obrigatório
object

A empresa que emitiu a nota.

dados[].empresa.cnpj
obrigatório
string

CNPJ sem pontos, barra ou traço (14 posições). Já aceita o CNPJ com letras, que começa a valer em 2026.

dados[].empresa.razaoSocial
obrigatório
string
dados[].empresa.inscricaoMunicipalstring ou null
dados[].empresa.municipio
obrigatório
object

Identificação do município por código IBGE, nome e UF.

dados[].empresa.municipio.codigoIbge
obrigatório
string

Código IBGE do município.

dados[].empresa.municipio.nomestring

Nome do município.

dados[].empresa.municipio.ufstring

Sigla da unidade federativa.

dados[].tomador
obrigatório
object

Dados do tomador registrados na nota.

dados[].tomador.tipoPessoa
obrigatório
string

Tipo de pessoa do tomador.

Valores: F, J.

dados[].tomador.cpfCnpj
obrigatório
string

CPF ou CNPJ registrado para o tomador.

dados[].tomador.nome
obrigatório
string

Nome ou razão social do tomador.

dados[].tomador.inscricaoMunicipalstring ou null

Inscrição municipal informada para o tomador.

dados[].tomador.emailstring ou null

E-mail registrado para o tomador.

dados[].tomador.telefonestring ou null

Telefone registrado para o tomador.

dados[].tomador.enderecoobject

Endereço registrado para o tomador.

dados[].tomador.endereco.cep
obrigatório
string

CEP do endereço, sem pontuação.

dados[].tomador.endereco.logradouro
obrigatório
string

Tipo e nome do logradouro.

dados[].tomador.endereco.numero
obrigatório
string

Número do endereço. Sem número? Mande S/N.

dados[].tomador.endereco.complementostring

Complemento do endereço, quando aplicável.

dados[].tomador.endereco.bairro
obrigatório
string

Bairro do endereço.

dados[].tomador.endereco.codigoIbge
obrigatório
string

Código IBGE do município do endereço.

dados[].tomador.endereco.cidadestring
dados[].tomador.endereco.ufstring
dados[].servico
obrigatório
object

Serviço congelado na nota.

dados[].servico.idinteger
dados[].servico.descricaostring
dados[].servico.itemListaServicostring
dados[].servico.codigoTributacaoMunicipiostring ou null
dados[].servico.codigoTributacaoNacionalstring ou null
dados[].servico.nbsstring
dados[].servico.cIndOpstring
dados[].servico.cClassTribstring
dados[].servico.cststring
dados[].discriminacaostring

Descrição da prestação registrada na nota.

dados[].competenciastring (date)

Data de competência da prestação.

dados[].valores
obrigatório
object

Valores calculados e registrados para a nota.

dados[].valores.serviconumber

Valor do serviço prestado.

dados[].valores.deducoesnumber

Valor das deduções consideradas.

dados[].valores.descontoIncondicionadonumber

Valor do desconto incondicionado.

dados[].valores.descontoCondicionadonumber

Valor do desconto condicionado.

dados[].valores.baseCalculonumber

Base de cálculo apurada para o ISS.

dados[].valores.aliquotaIssnumber

Alíquota de ISS aplicada no cálculo, em percentual.

dados[].valores.issnumber

Valor de ISS apurado.

dados[].valores.issRetidoboolean

Indica a retenção do ISS.

dados[].valores.retencoesFederaisobject

Valores de retenções federais.

dados[].valores.retencoesFederais.pisnumber

Valor da retenção de PIS.

dados[].valores.retencoesFederais.cofinsnumber

Valor da retenção de COFINS.

dados[].valores.retencoesFederais.csllnumber

Valor da retenção de CSLL.

dados[].valores.retencoesFederais.irnumber

Valor da retenção de Imposto de Renda.

dados[].valores.retencoesFederais.inssnumber

Valor da retenção de INSS.

dados[].valores.liquidonumber

Valor líquido da prestação.

dados[].ibsCbsobject

Ausente quando a nota não tem o grupo IBS/CBS.

dados[].ibsCbs.cIndOpstring
dados[].ibsCbs.cClassTribstring
dados[].ibsCbs.cststring
dados[].ibsCbs.localidadeIncidenciastring

Código IBGE do município.

dados[].rpsobject

Numeração e série do RPS da nota.

dados[].rps.numerostring
dados[].rps.seriestring
dados[].documentoobject

Ausente até autorizar.

dados[].documento.numerostring
dados[].documento.codigoVerificacaostring
dados[].documento.chaveAcessostring ou null
dados[].documento.emitidoEmstring (date-time)

Data e hora no horário de Brasília (ex. 2026-10-26T09:27:34-03:00).

dados[].provedorobject

A última resposta da prefeitura (ou do sistema nacional).

dados[].provedor.padraostring
dados[].provedor.codigostring ou null
dados[].provedor.mensagemstring ou null
dados[].provedor.protocolostring ou null
dados[].historicoarray de object

Histórico das mudanças de situação da NFS-e.

dados[].historico[].status
obrigatório
string

Em que pé está a nota. Novos valores podem aparecer: trate valor desconhecido sem quebrar.

ValorO que quer dizerO que fazer
recebidaRecebemos a nota e vamos enviar à prefeituraAguardar
em_processamentoEnviada à prefeitura, aguardando a respostaAguardar
autorizadaA prefeitura autorizou — a nota tem número e código de verificaçãoPronto: baixe o PDF e o XML
rejeitadaA prefeitura recusou por algum dado erradoLeia o motivo em mensagens, corrija e emita de novo com o mesmo idIntegracao
erroNão conseguimos falar com a prefeitura (fora do ar, demora)Tentar emitir de novo
cancelamento_solicitadoPedimos o cancelamento, aguardando a prefeituraAguardar
canceladaA prefeitura cancelou a nota—
cancelamento_rejeitadoA prefeitura recusou o cancelamento — a nota continua valendoLeia o motivo; às vezes é preciso cancelar no site da prefeitura
ValorSignificado
recebidaRecebemos a nota e vamos enviar à prefeitura
em_processamentoEnviada à prefeitura, aguardando a resposta
autorizadaAutorizada pela prefeitura
rejeitadaRecusada pela prefeitura — corrija e emita de novo
erroNão conseguimos falar com a prefeitura — tente de novo
cancelamento_solicitadoCancelamento pedido, aguardando a prefeitura
canceladaCancelada pela prefeitura
cancelamento_rejeitadoA prefeitura recusou o cancelamento
dados[].historico[].em
obrigatório
string (date-time)

Data e hora em UTC, terminada em Z (ex. 2026-10-26T12:27:34Z).

dados[].historico[].mensagensarray de object
dados[].historico[].mensagens[].codigostring
dados[].historico[].mensagens[].mensagemstring
dados[].cancelamentoobject

Dados e situação da solicitação de cancelamento, quando houver.

dados[].cancelamento.motivointeger
dados[].cancelamento.justificativastring
dados[].cancelamento.solicitadoEmstring (date-time)

Data e hora em UTC, terminada em Z (ex. 2026-10-26T12:27:34Z).

dados[].cancelamento.concluidoEmstring (date-time) ou null
dados[].links
obrigatório
object

Endereços relativos para consultar a nota e obter seus documentos, conforme disponibilidade.

dados[].links.self
obrigatório
string
dados[].links.xmlstring ou null

Nulo até autorizar.

dados[].links.pdfstring ou null

Nulo até autorizar.

dados[].criadoEm
obrigatório
string (date-time)

Instante de criação do registro na Weesy.

dados[].atualizadoEm
obrigatório
string (date-time)

Instante da última atualização do registro.

paginacao
obrigatório
object

Como pegar a próxima página. Enquanto temMais for true, chame a mesma rota passando cursor=<proximoCursor>. A lista vem da atualização mais recente para a mais antiga, e o cursor vale por 24 horas. Registros criados enquanto você pagina não bagunçam as páginas: eles aparecem numa nova consulta.

paginacao.limite
obrigatório
integer

Quantos registros vêm por página (padrão 50, máximo 100).

paginacao.proximoCursorstring ou null

Código da próxima página. Repasse como veio, sem alterar — ele já leva os filtros. null quando acabou.

paginacao.temMais
obrigatório
boolean

true se ainda há mais páginas.

← Voltar ao início