> ## Documentation Index
> Fetch the complete documentation index at: https://docs.validatech.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Visualizar NFe

> Consulte diretamente o XML de uma NFe armazenada

## 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.

<Info>
  **Acesso Restrito**

  A consulta é restrita às NF-e armazenadas em sua conta. NFe que não pertençam ao seu CNPJ não serão retornadas.
</Info>

## Endpoint

<api-endpoint method="get" url="/GuardaNFe/Visualizar/{fileName}" />

## Parâmetros

<ParamField path="fileName" type="string" required>
  Nome do arquivo XML da NF-e armazenado no GuardaNFe

  **Formato:** `{chave_nfe}.xml`

  **Exemplo:** `35170608530528000184550000000154301000771561.xml`
</ParamField>

## Headers

<ParamField header="Accept" type="string" default="application/xml">
  Tipo de conteúdo aceito na resposta (`application/xml` ou `application/json`)
</ParamField>

<ParamField header="X-API-KEY" type="string" required>
  Token de autenticação da API
</ParamField>

## Exemplos de Requisição

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.validanfe.com/GuardaNFe/Visualizar/35170608530528000184550000000154301000771561.xml" \
    -H "Accept: application/xml" \
    -H "X-API-KEY: SEU_TOKEN_AQUI"
  ```

  ```javascript JavaScript theme={null}
  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);
  ```

  ```python Python theme={null}
  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 PHP theme={null}
  <?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;
  ?>
  ```
</CodeGroup>

## Códigos de Resposta

<ResponseField name="200" type="Success">
  Retorna o conteúdo XML completo da NF-e
</ResponseField>

<ResponseField name="404" type="Not Found">
  Arquivo não encontrado ou não pertence à sua conta
</ResponseField>

<ResponseField name="401" type="Unauthorized">
  Token de autenticação ausente ou inválido
</ResponseField>

<ResponseField name="500" type="Internal Server Error">
  Erro interno ao processar a requisição
</ResponseField>

## Exemplos de Resposta

<CodeGroup>
  ```xml 200 - Sucesso theme={null}
  <?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>
  ```

  ```json 404 - Not Found theme={null}
  {
      "message": "Arquivo não encontrado."
  }
  ```

  ```json 500 - Internal Server Error theme={null}
  {
      "message": "Erro interno ao processar a requisição."
  }
  ```
</CodeGroup>

## Como Formar o Nome do Arquivo

O parâmetro `fileName` deve seguir o padrão:

<Steps>
  <Step title="Pegue a Chave da NFe">
    **Exemplo:** `35170608530528000184550000000154301000771561`
  </Step>

  <Step title="Adicione a Extensão">
    **Resultado:** `35170608530528000184550000000154301000771561.xml`
  </Step>

  <Step title="Use na URL">
    `/GuardaNFe/Visualizar/35170608530528000184550000000154301000771561.xml`
  </Step>
</Steps>

## Processando a Resposta XML

<CodeGroup>
  ```javascript JavaScript - Parser XML theme={null}
  // 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);
  ```

  ```python Python - Parser XML theme={null}
  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 PHP - Parser XML theme={null}
  <?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;
  ?>
  ```
</CodeGroup>

## Casos de Uso

<Accordion title="Validação de Documentos">
  Verifique a integridade e autenticidade de NFe específicas comparando com os dados originais.
</Accordion>

<Accordion title="Extração de Dados">
  Extraia informações específicas como produtos, valores, ou dados do emitente para relatórios.
</Accordion>

<Accordion title="Auditoria Fiscal">
  Acesse rapidamente documentos fiscais durante processos de auditoria ou compliance.
</Accordion>

<Accordion title="Integração de Sistemas">
  Integre com ERPs ou sistemas contábeis que precisam processar dados de NFe.
</Accordion>

<Warning>
  **Formato do Nome**

  Certifique-se de usar o nome correto do arquivo. Nomes incorretos resultarão em erro 404.
</Warning>

<Tip>
  **Verificação Prévia**

  Use o endpoint [Verificar NFe](/validanfe-api/api-guarda/guarda-checkar) para confirmar se um arquivo está disponível antes de tentar visualizá-lo.
</Tip>
