Documentación / API / Facturas

Obtener una factura

GEThttps://api.cfdi.express/v1/invoices/{id}API key

Devuelve la factura con su estatus, UUID, datos de cancelación y las URLs firmadas del XML, el PDF y el ZIP.

Es el endpoint que consultas cuando el timbrado respondió 202: repite hasta que status sea stamped.

Las URLs de archivos aparecen dentro de files cuando files.status es ready y expiran en 15 minutos. Vuelve a pedir el recurso para obtener URLs frescas.

También sirve para notas de crédito: son recursos invoice con kind: "credit_note".

Autenticación
Authorization: Bearer sk_test_... | sk_live_...

Parámetros

Parámetros de ruta

CampoTipoDescripción
idreqstringId de la factura.

Ejemplos

cURL
curl https://api.cfdi.express/v1/invoices/inv7k3q9x2m4v1t8p6d0n5cb \
  -H "Authorization: Bearer sk_test_..."
Node.js — descargar el PDF
const invoice = await fetch(
  `https://api.cfdi.express/v1/invoices/${invoiceId}`,
  { headers: { Authorization: `Bearer ${process.env.CFDI_API_KEY}` } },
).then((r) => r.json());

if (invoice.files.status === "ready") {
  const pdf = await fetch(invoice.files.pdfUrl); // vigente 15 min
  await writeFile(`${invoice.uuid}.pdf`, Buffer.from(await pdf.arrayBuffer()));
}

Respuesta

200 OK
{
  "id": "inv7k3q9x2m4v1t8p6d0n5cb",
  "object": "invoice",
  "livemode": false,
  "status": "stamped",
  "kind": "nominal",
  "uuid": "9f1b2c3d-4e5f-4a6b-8c9d-0e1f2a3b4c5d",
  "serie": "A",
  "folio": 128,
  "folioText": "#1001",
  "metodoPago": "PUE",
  "formaPago": "03",
  "usoCfdi": "G03",
  "currency": "MXN",
  "subtotal": 3163.79,
  "discount": 0,
  "total": 3670.00,
  "saldoPendiente": null,
  "receiver": {
    "rfc": "XIA190128J61",
    "name": "XENON INDUSTRIAL ARTICLES",
    "zip": "01160",
    "regimenFiscal": "601"
  },
  "merchantId": "mkq2f8v3x1t7p9d4n6c0b5rz",
  "files": {
    "status": "ready",
    "xmlUrl": "https://files.cfdi.express/9f1b2c3d....xml?X-Amz-Expires=900&...",
    "pdfUrl": "https://files.cfdi.express/9f1b2c3d....pdf?X-Amz-Expires=900&...",
    "zipUrl": "https://files.cfdi.express/9f1b2c3d....zip?X-Amz-Expires=900&..."
  },
  "cancellation": null,
  "stampedAt": "2026-08-18T17:42:10.512Z",
  "createdAt": "2026-08-18T17:42:08.907Z"
}

Errores

StatuscodeCuándo aparece
401unauthorizedFalta el header Authorization o la llave es inválida.
404not_foundLa factura no existe en tu cuenta o pertenece al otro modo.

Notas

  • Si el timbrado falló, el recurso trae failure: { code, detail } con el motivo.

Continuar