FiscalAPI
NF-e

Consultar NF-e sem certificado

Baixe o XML de uma NF-e só pela chave de acesso, sem certificado digital. Cópia para leitura, sem a assinatura digital.

POST /api/consultar-nfe-xml-sem-certificado

Retorna o XML de uma NF-e (modelo 55) a partir da chave de acesso de 44 dígitos, sem certificado digital. Uma chave por requisição.

O XML é uma cópia para leitura, sem a assinatura digital. Traz os dados da nota, mas não substitui o XML oficial na escrituração e não passa em validação de assinatura nem de schema. Para o XML oficial, use Consultar NF-e com certificado, com o certificado A1 de quem participou da nota.

Para consultar várias notas, faça uma requisição por chave. Cada conta pode ter até 2 consultas em andamento ao mesmo tempo e até 30 por minuto. A resposta mantém o envelope com resultados[] contendo um item. No painel, dá para colar até 50 chaves de uma vez.

Este endpoint tem limite por minuto próprio do plano, separado das outras rotas: 5 no Lite, 20 no Starter, 60 no Pro e 120 no Enterprise. Nota ainda não consultada leva alguns segundos; nota já consultada antes volta na hora.

Autenticação

Envie sua chave no header X-API-Key. Veja Autenticação para detalhes.

Corpo da requisição

Envie um JSON (Content-Type: application/json) com um único campo.

CampoTipoObrigatórioDescrição
chavestringSimChave de acesso de 44 posições, modelo 55. Aceita CNPJ alfanumérico do emitente. Espaços, pontos e outros separadores são ignorados.

Nenhum outro campo é aceito. Se enviar certificado ou senha, a API responde 422.

Cobrança

  • A consulta é cobrada quando a chave é válida, mesmo que a nota não seja encontrada (nao_encontrado).
  • Chave inválida (dígito verificador, UF, data, modelo, CNPJ/CPF do emitente) é recusada com 400 e não é cobrada. Chave de API inválida também não.
  • Depois de um nao_encontrado, a mesma chave volta como nao_encontrado sem cobrança por 1 hora, se a nota for do mês atual ou do anterior, ou por 24 horas, nos demais casos. Nota recém-emitida pode ainda não estar disponível: tente de novo depois desse prazo.
  • Consultar de novo uma chave que já retornou XML cobra de novo. Para baixar outra vez sem custo, use o histórico do painel.
  • Falha nossa (erro) não é cobrada.
  • As consultas grátis do mês não valem para este produto.

Preço por nota: R$ 0,05 no Enterprise (2 consultas). Nos planos Lite, Starter e Pro, o mesmo da NF-e com certificado: 3 consultas por nota, ou R$ 2,01, R$ 0,30 e R$ 0,195. Veja a tabela em Planos e limites.

Exemplos de código

curl -X POST "https://api.fiscalapi.com.br/api/consultar-nfe-xml-sem-certificado" \
  -H "X-API-Key: fapi_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{"chave":"35261012345678000195550010000001231123456784"}'
const response = await fetch(
  "https://api.fiscalapi.com.br/api/consultar-nfe-xml-sem-certificado",
  {
    method: "POST",
    headers: {
      "X-API-Key": "fapi_sua_chave_aqui",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      chave: "35261012345678000195550010000001231123456784",
    }),
  }
);
const data = await response.json();
console.log(data.resultados[0].status);
import requests

response = requests.post(
    "https://api.fiscalapi.com.br/api/consultar-nfe-xml-sem-certificado",
    headers={"X-API-Key": "fapi_sua_chave_aqui"},
    json={"chave": "35261012345678000195550010000001231123456784"},
)
data = response.json()
print(data["resultados"][0]["status"])
$response = Http::withHeaders([
    'X-API-Key' => 'fapi_sua_chave_aqui',
])->post('https://api.fiscalapi.com.br/api/consultar-nfe-xml-sem-certificado', [
    'chave' => '35261012345678000195550010000001231123456784',
]);
$data = $response->json();

Resposta

Campos de nível superior

CampoTipoDescrição
request_idstringIdentificador único da requisição.
totalintegerSempre 1 (uma chave por requisição).
com_dadointeger1 se a nota foi encontrada, senão 0.
creditos_cobradosintegerConsultas debitadas nesta requisição (0 quando não houve cobrança).
resultadosarrayLista com um resultado (a chave consultada).

Campos de cada resultado (resultados[])

CampoTipoDescrição
chavestringChave de acesso consultada, já normalizada.
statusstringResultado da chave. Veja a tabela de status.
mensagemstringDescrição legível do resultado.
xmlstring | nullXML da nota quando status = ok; caso contrário null.
assinadobooleanSempre false: o XML não traz a assinatura digital.
tipo_xmlstringSempre "leitura".

Valores de status

StatusSignificadoCobra
okXML retornado em xml.Sim
nao_encontradoNão encontramos esta nota. Confira a chave de acesso.Sim, na busca. Repetir a mesma chave em até 1 h (nota recente) ou 24 h não cobra.
erroNão foi possível obter a nota agora. Tente de novo em instantes.Não

Exemplo de resposta

{
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "total": 1,
  "com_dado": 1,
  "creditos_cobrados": 3,
  "resultados": [
    {
      "chave": "35261012345678000195550010000001231123456784",
      "status": "ok",
      "mensagem": "Nota encontrada.",
      "xml": "<nfeProc versao=\"4.00\" ...>...</nfeProc>",
      "assinado": false,
      "tipo_xml": "leitura"
    }
  ]
}

A raiz do XML pode ser nfeProc ou NFe. Não conte com a ordem dos campos do schema nem com a assinatura.

Códigos de erro

Os erros seguem o formato RFC 7807: o código fica no campo title.

CódigoHTTP StatusDescrição
PARAMETRO_AUSENTE400Chave de acesso não informada.
CHAVE_INVALIDA400Chave recusada: tamanho diferente de 44, caractere inválido, dígito verificador, UF, data (AAMM), modelo diferente de 55, tipo de emissão ou CNPJ/CPF do emitente inválidos. A mensagem diz o motivo. Não é cobrada.
API_KEY_ERROR403Chave de API ausente, inválida ou revogada. Não é cobrada.
LIMITE_ATINGIDO402Saldo insuficiente no plano e na recarga, ou conta sem plano ativo.
TERMS_UPDATE_REQUIRED409Os Termos de Uso foram atualizados. Aceite a nova versão no painel para continuar.
(validação)422Corpo inválido: chave ausente ou campo além dela. Resposta padrão de validação, em inglês, no formato {"detail": [...]}.
RATE_LIMIT_EXCEEDED429Limite de requisições por minuto excedido. Aguarde o tempo do header Retry-After.
CONSULTAS_SIMULTANEAS429A conta já tem 2 consultas em andamento. Aguarde alguma terminar (header Retry-After: 5).
LIMITE_FALHAS_DIARIO429Muitas consultas sem resultado no dia, somando as consultas de NF-e com e sem certificado. Tente de novo depois do horário do header Retry-After.
internal_error500Erro inesperado no servidor (vem em type: urn:fiscalapi:error:internal_error; title é Internal Server Error). Não é cobrada.
FEATURE_UNDER_REVIEW503Funcionalidade temporariamente indisponível.
TIMEOUT504A consulta passou de 95 segundos. Não é cobrada; tente de novo. Corpo: {"request_id", "error": "TIMEOUT", "message"}, sem o formato RFC 7807.

XML da NF-e pela chave de acesso · Planos e preços

Esta pagina foi util?

On this page