Visualizar NFe
curl --request GET \
--url https://api.validanfe.com/GuardaNFe/Visualizar/{fileName} \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}"
headers = {"X-API-KEY": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<x-api-key>'}};
fetch('https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}")
.header("X-API-KEY", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"200": {},
"401": {},
"404": {},
"500": {}
}API Guarda
Visualizar NFe
Consulte diretamente o XML de uma NFe armazenada
GET
/
GuardaNFe
/
Visualizar
/
{fileName}
Visualizar NFe
curl --request GET \
--url https://api.validanfe.com/GuardaNFe/Visualizar/{fileName} \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}"
headers = {"X-API-KEY": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<x-api-key>'}};
fetch('https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}")
.header("X-API-KEY", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"200": {},
"401": {},
"404": {},
"500": {}
}Objetivo
Este endpoint permite consultar diretamente uma NF-e armazenada no GuardaNFe, retornando o XML completo do documento como resposta. Ideal para integrações que precisam acessar um documento específico de forma rápida e segura, utilizando apenas o nome do arquivo da NF-e.Acesso RestritoA consulta é restrita às NF-e armazenadas em sua conta. NFe que não pertençam ao seu CNPJ não serão retornadas.
Endpoint
Parâmetros
string
required
Nome do arquivo XML da NF-e armazenado no GuardaNFeFormato:
{chave_nfe}.xmlExemplo: 35170608530528000184550000000154301000771561.xmlHeaders
string
default:"application/xml"
Tipo de conteúdo aceito na resposta (
application/xml ou application/json)string
required
Token de autenticação da API
Exemplos de Requisição
curl -X GET "https://api.validanfe.com/GuardaNFe/Visualizar/35170608530528000184550000000154301000771561.xml" \
-H "Accept: application/xml" \
-H "X-API-KEY: SEU_TOKEN_AQUI"
const fileName = "35170608530528000184550000000154301000771561.xml";
const response = await fetch(
`https://api.validanfe.com/GuardaNFe/Visualizar/${fileName}`,
{
method: 'GET',
headers: {
'Accept': 'application/xml',
'X-API-KEY': 'SEU_TOKEN_AQUI'
}
}
);
const xmlContent = await response.text();
console.log(xmlContent);
import requests
fileName = "35170608530528000184550000000154301000771561.xml"
url = f"https://api.validanfe.com/GuardaNFe/Visualizar/{fileName}"
headers = {
"Accept": "application/xml",
"X-API-KEY": "SEU_TOKEN_AQUI"
}
response = requests.get(url, headers=headers)
xml_content = response.text
print(xml_content)
<?php
$fileName = "35170608530528000184550000000154301000771561.xml";
$url = "https://api.validanfe.com/GuardaNFe/Visualizar/" . $fileName;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/xml',
'X-API-KEY: SEU_TOKEN_AQUI'
]);
$xml_content = curl_exec($ch);
curl_close($ch);
echo $xml_content;
?>
Códigos de Resposta
Success
Retorna o conteúdo XML completo da NF-e
Not Found
Arquivo não encontrado ou não pertence à sua conta
Unauthorized
Token de autenticação ausente ou inválido
Internal Server Error
Erro interno ao processar a requisição
Exemplos de Resposta
<?xml version="1.0" encoding="UTF-8"?>
<nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe versao="4.00" Id="NFe35170608530528000184550000000154301000771561">
<ide>
<cUF>35</cUF>
<cNF>00077156</cNF>
<natOp>VENDA</natOp>
<mod>55</mod>
<serie>0</serie>
<nNF>15430</nNF>
<dhEmi>2017-06-05T08:31:06-03:00</dhEmi>
<tpNF>1</tpNF>
<idDest>1</idDest>
<cMunFG>3550308</cMunFG>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV>9</cDV>
<tpAmb>1</tpAmb>
<finNFe>1</finNFe>
<indFinal>1</indFinal>
<indPres>0</indPres>
<procEmi>0</procEmi>
<verProc>3.10.31</verProc>
</ide>
<emit>
<CNPJ>56776378000136</CNPJ>
<xNome>COMERCIO DE TESTE LTDA EPP</xNome>
<!-- Mais dados do emitente -->
</emit>
<dest>
<CPF>67879577696</CPF>
<xNome>MARIA FICTICIA DOS SANTOS</xNome>
<!-- Mais dados do destinatário -->
</dest>
<!-- Produtos, impostos, totais, etc. -->
</infNFe>
</NFe>
<protNFe versao="4.00">
<!-- Protocolo de autorização -->
</protNFe>
</nfeProc>
{
"message": "Arquivo não encontrado."
}
{
"message": "Erro interno ao processar a requisição."
}
Como Formar o Nome do Arquivo
O parâmetrofileName deve seguir o padrão:
1
Pegue a Chave da NFe
Exemplo:
351706085305280001845500000001543010007715612
Adicione a Extensão
Resultado:
35170608530528000184550000000154301000771561.xml3
Use na URL
/GuardaNFe/Visualizar/35170608530528000184550000000154301000771561.xmlProcessando a Resposta XML
// Usando DOMParser no navegador
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlContent, "text/xml");
// Extrair dados específicos
const nfe = xmlDoc.getElementsByTagName("NFe")[0];
const infNFe = nfe.getElementsByTagName("infNFe")[0];
const emit = infNFe.getElementsByTagName("emit")[0];
const nomeEmitente = emit.getElementsByTagName("xNome")[0].textContent;
console.log("Emitente:", nomeEmitente);
import xml.etree.ElementTree as ET
# Parse do XML
root = ET.fromstring(xml_content)
# Namespace da NFe
ns = {'nfe': 'http://www.portalfiscal.inf.br/nfe'}
# Extrair dados
emit = root.find('.//nfe:emit', ns)
nome_emitente = emit.find('nfe:xNome', ns).text
print(f"Emitente: {nome_emitente}")
<?php
// Parse do XML
$xml = simplexml_load_string($xml_content);
// Registrar namespace
$xml->registerXPathNamespace('nfe', 'http://www.portalfiscal.inf.br/nfe');
// Extrair dados
$emit = $xml->xpath('//nfe:emit')[0];
$nome_emitente = (string)$emit->xNome;
echo "Emitente: " . $nome_emitente;
?>
Casos de Uso
Validação de Documentos
Validação de Documentos
Verifique a integridade e autenticidade de NFe específicas comparando com os dados originais.
Extração de Dados
Extração de Dados
Extraia informações específicas como produtos, valores, ou dados do emitente para relatórios.
Auditoria Fiscal
Auditoria Fiscal
Acesse rapidamente documentos fiscais durante processos de auditoria ou compliance.
Integração de Sistemas
Integração de Sistemas
Integre com ERPs ou sistemas contábeis que precisam processar dados de NFe.
Formato do NomeCertifique-se de usar o nome correto do arquivo. Nomes incorretos resultarão em erro 404.
Verificação PréviaUse o endpoint Verificar NFe para confirmar se um arquivo está disponível antes de tentar visualizá-lo.