SIFENDE
Referencia APIDocumentos Electrónicos

Descargar XML

GET /api/v1/documento-electronico/:cdc/xml — descargá el XML firmado del documento, con el código QR, tal como se envió a SIFEN.

El XML firmado es el documento legal; el KuDE es su representación gráfica. Guardalo junto al KuDE cuando el documento esté aprobado.

GET /api/v1/documento-electronico/:cdc/xml

Retorna el XML firmado del documento, con el código QR, tal como se envió a SIFEN.

curl "https://api.sifende.com.py/api/v1/documento-electronico/$CDC/xml" \
  -H "Authorization: Bearer $SIFENDE_API_KEY" \
  -o "$CDC.xml"

Autenticación

Authorization: Bearer {api-key} — requerido. El documento tiene que pertenecer al contribuyente y al ambiente de la clave.

Path parameters

ParámetroTipoDescripción
cdcstringCDC del documento, 44 dígitos

Respuestas

200 OK

Content-Type: application/xml

El body es el XML firmado. Conserva Content-Disposition: attachment; filename="{cdc}.xml".

El XML está disponible desde que el documento se registra, pero sólo es el comprobante válido cuando SIFEN lo aprueba. Consultá el estado y guardá el XML cuando sea APROBADO o APROBADO_OBSERVACION. En SANDBOX, el XML no tiene validez fiscal.

Errores

StatusTipoDescripción
401—API key ausente o inválida
403document-archivedEl período de acceso del plan actual finalizó
403plan-operation-not-allowedEl plan de la clave no incluye la API de integración
404documento-electronico-not-foundDocumento no encontrado o no accesible para esta clave
409documento-xml-not-availableEl documento existe pero todavía no tiene XML firmado
500internal-errorError al procesar la solicitud

Un CDC de otro contribuyente o de otro ambiente responde 404, igual que uno inexistente.

Un documento archivado responde el Problem Detail document-archived y no entrega el XML.

Ejemplo

async function descargarXml(cdc: string): Promise<string> {
  const res = await fetch(
    `https://api.sifende.com.py/api/v1/documento-electronico/${cdc}/xml`,
    { headers: { Authorization: `Bearer ${process.env.SIFENDE_API_KEY}` } },
  );

  if (res.status === 200) return res.text();

  const problem = await res.json();
  throw new Error(`No se pudo descargar el XML (${problem.status}): ${problem.type}`);
}

On this page

Usamos cookies necesarias para que el sitio funcione. Con tu permiso, también usamos herramientas de analítica para entender cómo se usa el sitio y para medir nuestras campañas publicitarias. Política de privacidad