Descargar XML GET
Devuelve el XML del comprobante emitido en application/xml.
identificacion es el RUC del emisor habilitado en tu API Key y claveAcceso
la clave de 49 digitos del comprobante.
GET /v1/contribuyentes/{identificacion}/comprobantes/{claveAcceso}/xml
Contenido provisional#
Si el SRI aun no entrega el XML autorizado, la respuesta es 200
con un XML de marcacion:
- el documento incluye el comentario
PROVISIONAL, - la cabecera
X-Contenidovaleprovisional.
Ese contenido no es el XML firmado por el SRI. En los SDK, el indicador
provisional queda en true.
curl -s -D - "https://staging-api.mynexusapi.com/v1/contribuyentes/0123456789001/comprobantes/0101202601170123456789012201234567890123456789012/xml" \
-H "X-Api-Key: $ECUAFACT_API_KEY" \
-o comprobante.xml
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", apiKey);
using HttpResponseMessage respuesta = await http.GetAsync(
"https://staging-api.mynexusapi.com/v1/contribuyentes/0123456789001/comprobantes/0101202601170123456789012201234567890123456789012/xml");
byte[] xml = await respuesta.Content.ReadAsByteArrayAsync();
bool provisional = respuesta.Headers.TryGetValues("X-Contenido", out var valores)
&& valores.Contains("provisional");
await File.WriteAllBytesAsync("comprobante.xml", xml);
import os, requests
r = requests.get(
"https://staging-api.mynexusapi.com/v1/contribuyentes/0123456789001/comprobantes/0101202601170123456789012201234567890123456789012/xml",
headers={"X-Api-Key": os.environ["ECUAFACT_API_KEY"]},
timeout=60)
print(r.headers.get("X-Contenido"))
open("comprobante.xml", "wb").write(r.content)
const res = await fetch(
"https://staging-api.mynexusapi.com/v1/contribuyentes/0123456789001/comprobantes/0101202601170123456789012201234567890123456789012/xml",
{ headers: { "X-Api-Key": process.env.ECUAFACT_API_KEY } });
console.log(res.headers.get("X-Contenido"));
const bytes = Buffer.from(await res.arrayBuffer());
await require("node:fs/promises").writeFile("comprobante.xml", bytes);
<?php
$ch = curl_init("https://staging-api.mynexusapi.com/v1/contribuyentes/0123456789001/comprobantes/0101202601170123456789012201234567890123456789012/xml");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("ECUAFACT_API_KEY")],
]);
$raw = curl_exec($ch);
$tamano = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
curl_close($ch);
file_put_contents("comprobante.xml", substr($raw, $tamano));
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
HttpClient cliente = HttpClient.newHttpClient();
HttpRequest peticion = HttpRequest.newBuilder()
.uri(URI.create("https://staging-api.mynexusapi.com/v1/contribuyentes/0123456789001/comprobantes/0101202601170123456789012201234567890123456789012/xml"))
.header("X-Api-Key", System.getenv("ECUAFACT_API_KEY"))
.GET()
.build();
HttpResponse<byte[]> respuesta = cliente.send(peticion, HttpResponse.BodyHandlers.ofByteArray());
String marca = respuesta.headers().firstValue("X-Contenido").orElse("");
Files.write(Path.of("comprobante.xml"), respuesta.body());
using Ecuafact.Sdk.Contracts;
// client: cliente EcuafactClient - ver SDK .NET
ArchivoComprobante xml = await client.DescargarXmlAsync(identificacion, claveAcceso);
if (xml.Provisional)
{
Console.WriteLine("XML provisional");
}
await File.WriteAllBytesAsync("comprobante.xml", xml.Contenido);
# client: cliente EcuafactClient - ver SDK Python
archivo = client.descargar_xml(identificacion, clave_acceso)
print(archivo.provisional)
open("comprobante.xml", "wb").write(archivo.contenido)
import { writeFile } from "node:fs/promises";
// client: cliente EcuafactClient - ver SDK Node.js
const archivo = await client.descargarXml(identificacion, claveAcceso);
console.log(archivo.provisional);
await writeFile("comprobante.xml", archivo.contenido);
<?php
// $client: cliente EcuafactClient - ver SDK PHP
$archivo = $client->descargarXml($identificacion, $claveAcceso);
file_put_contents("comprobante.xml", $archivo->contenido);
import com.ecuafact.sdk.contracts.ArchivoComprobante;
import java.nio.file.Files;
import java.nio.file.Path;
// client: cliente EcuafactClient - ver SDK Java
ArchivoComprobante archivo = client.descargarXml(identificacion, claveAcceso);
Files.write(Path.of("comprobante.xml"), archivo.contenido());
Respuesta#
200 con el archivo en application/xml y Content-Disposition: attachment.
Estados de este endpoint#
| Estado | codigo |
Cuando |
|---|---|---|
| 200 | - | XML (provisional o autorizado) |
| 400 | 301 | La clave de acceso no es valida |
| 401 | 101 | API Key invalida |
| 403 | 103 | El contribuyente no esta habilitado en tu API Key |
| 404 | 502 | El comprobante no existe |
| 429 | 104 | Limite de solicitudes excedido |
Siguientes pasos#
- El PDF del comprobante: Descargar PDF.