Ir al contenido
API v1.0.0 · COMPROBANTES

Listado y cambios

El listado devuelve los comprobantes de la empresa en el ambiente del token, con filtros y paginación. Con cambiadoDesde sirve para seguir los cambios de estado sin consultar cada comprobante.

Filtros

Todos los parámetros son opcionales y se combinan:

ParámetroFiltra por
desde, hastaFecha de emisión (yyyy-MM-dd), incluidas. Sin cambiadoDesde, hasta es hoy y desde 30 días antes de hasta. El rango máximo es de 366 días.
tipoFACTURA, NOTA_CREDITO o RETENCION.
estadoUno de los estados, por ejemplo EN_PROCESO.
establecimiento, puntoEmisionCódigos de 3 dígitos. puntoEmision requiere establecimiento.
identificacionIdentificación del cliente o del sujeto retenido.
numeroNúmero completo, 001-001-000000148.
referenciaLa referencia que tu sistema envió al emitir.
origenAPI, API_ANTERIOR o APP. No incluye los comprobantes creados antes de la versión 1 del API, que tienen origen en null.
cambiadoDesdeComprobantes creados o modificados desde ese instante. Ver Seguir los cambios.

Incluye los comprobantes emitidos desde la aplicación. Un parámetro inválido responde 400 PARAMETRO_INVALIDO con el nombre del parámetro en campo.

Paginación y orden

  • pagina empieza en 1; porPagina es 20 por defecto y 100 como máximo.
  • paginacion en la respuesta trae pagina, porPagina, total (comprobantes que cumplen el filtro) y paginas.
  • Sin cambiadoDesde, el orden es por fecha de emisión, del más reciente al más antiguo.
  • Con cambiadoDesde, el orden es por fechaActualizacion, del cambio más antiguo al más reciente.

Cada elemento de datos es un resumen: tipo, número, clave de acceso, estado, fechas, receptor, total, referencia y origen (null en los comprobantes anteriores a la versión 1). Para los ítems, los totales o los mensajes del SRI, consulta el comprobante por su clave de acceso.

Buscar un comprobante de tu sistema

Con referencia encuentras los comprobantes que emitiste para un pedido o una venta:

Terminal
curl "https://api.golem.ec/v1/comprobantes?referencia=PED-2026-00481" \
  -H "Authorization: Bearer $GOLEM_TOKEN"

referencia no es única: un comprobante devuelto y el que lo reemplaza pueden tener la misma. Revisa estado en cada resultado.

Seguir los cambios

Cada comprobante tiene fechaActualizacion, que cambia cuando cambia su estado, cuando se anula o cuando se modifica otro dato. Con cambiadoDesde obtienes los comprobantes que cambiaron desde tu última consulta, sin consultar cada clave de acceso:

  1. La primera vez, consulta con cambiadoDesde igual al momento desde el que quieres sincronizar (hasta 90 días atrás).
  2. Procesa los comprobantes de la respuesta en orden y guarda el mayor fechaActualizacion que procesaste.
  3. En la siguiente consulta, usa ese valor como cambiadoDesde. Si la respuesta trajo una página completa, consulta de inmediato; si no, espera al siguiente ciclo (por ejemplo, un minuto).
Terminal
curl "https://api.golem.ec/v1/comprobantes?cambiadoDesde=2026-09-26T09:15:04.120-05:00&porPagina=100" \
  -H "Authorization: Bearer $GOLEM_TOKEN"

El filtro incluye el instante indicado (es “igual o posterior”), así que el último comprobante de la consulta anterior vuelve a aparecer: descarta los que ya procesaste con la misma claveAcceso y la misma fechaActualizacion. Usa el valor tal como viene en la respuesta, con milisegundos y zona horaria, y codifica el + si tu zona lo lleva.

Con cambiadoDesde, desde y hasta no tienen valor por defecto: si los envías, filtran además por fecha de emisión. Un cambiadoDesde anterior a 90 días responde 400 PARAMETRO_INVALIDO.

Node.js 18+
// Sincroniza los cambios de estado. `ultimo` es el mayor fechaActualizacion ya procesado (guárdalo en tu base).
async function sincronizar(ultimo) {
  for (;;) {
    const url = new URL('https://api.golem.ec/v1/comprobantes');
    url.searchParams.set('cambiadoDesde', ultimo);
    url.searchParams.set('porPagina', '100');
    const respuesta = await fetch(url, { headers: { Authorization: `Bearer ${process.env.GOLEM_TOKEN}` } });
    if (!respuesta.ok) throw new Error(`Golem respondió ${respuesta.status}`);
    const { datos } = await respuesta.json();
    for (const comprobante of datos) {
      await actualizarEnMiSistema(comprobante); // debe tolerar recibir dos veces el mismo cambio
      ultimo = comprobante.fechaActualizacion;
    }
    if (datos.length < 100) return ultimo;
  }
}

Las consultas del listado cuentan para el límite general de 60 solicitudes por minuto por token.

Listar comprobantes

GET /comprobantes

  • Requiere token

Lista los comprobantes de la empresa del token en su ambiente. Incluye los emitidos desde la aplicación y desde el API.

  • Sin cambiadoDesde: filtra por fecha de emisión (desde/hasta, rango de hasta 366 días) y ordena del más reciente al más antiguo.
  • Con cambiadoDesde: devuelve los comprobantes creados o modificados (estado, anulación u otro dato) desde ese instante, ordenados por fechaActualizacion del más antiguo al más reciente. desde y hasta son opcionales y no tienen valor por defecto. Guarda el fechaActualizacion del último comprobante que procesaste y úsalo como cambiadoDesde en la siguiente consulta: es la forma recomendada de seguir los cambios de estado, en lugar de consultar cada clave de acceso.

Límites: 60 solicitudes por minuto por token.

Parámetros

Parámetros de listar comprobantes
Campo Descripción
tipo
consulta string

Tipo de comprobante.

  • Valores: FACTURA, NOTA_CREDITO, RETENCION
estado
consulta string

Estado del comprobante.

  • Valores: EN_PROCESO, AUTORIZADO, NO_AUTORIZADO, DEVUELTO, ERROR, ANULADO
cambiadoDesde
consulta string (date-time)

Instante ISO 8601 (con zona). Devuelve los comprobantes con fechaActualizacion igual o posterior, del más antiguo al más reciente. No puede ser anterior a 90 días.

desde
consulta string (date)

Fecha de emisión inicial, incluida. Sin cambiadoDesde, por defecto 30 días antes de hasta.

hasta
consulta string (date)

Fecha de emisión final, incluida. Sin cambiadoDesde, por defecto hoy.

establecimiento
consulta string

Código del establecimiento.

  • Formato ^\d{3}$
puntoEmision
consulta string

Código del punto de emisión. Requiere establecimiento.

  • Formato ^\d{3}$
identificacion
consulta string

Identificación del cliente o del sujeto retenido.

  • De 3 a 20 caracteres
numero
consulta string

Número completo del comprobante.

  • Formato ^\d{3}-\d{3}-\d{9}$
referencia
consulta string

Referencia que envió el integrador al emitir.

  • Hasta 100 caracteres
origen
consulta string

Canal por el que se creó el comprobante.

  • Valores: API, API_ANTERIOR, APP
pagina
consulta integer

Número de página, desde 1.

  • Desde 1
  • Por defecto 1
porPagina
consulta integer

Comprobantes por página.

  • Desde 1, hasta 100
  • Por defecto 20
X-Request-Id
cabecera string

Identificador propio de la solicitud (hasta 64 caracteres: letras, números y -). Si no lo envías, Golem genera uno. Vuelve en la cabecera de respuesta y en los errores; cítalo al escribir a soporte.

  • Hasta 64 caracteres
  • Formato ^[A-Za-z0-9-]{1,64}$

Ejemplo de solicitud

Los ejemplos leen el token de la variable de entorno GOLEM_TOKEN.

Terminal
curl "https://api.golem.ec/v1/comprobantes?cambiadoDesde=2026-09-26T09%3A15%3A04.120-05%3A00&porPagina=100" \
  --max-time 30 \
  -H "Authorization: Bearer $GOLEM_TOKEN"

Respuestas

200 application/json

Página de comprobantes.

Esquema ListaComprobantes.

Respuesta 200: Primera página de facturas de septiembre
{
  "datos": [
    {
      "tipo": "FACTURA",
      "codDoc": "01",
      "claveAcceso": "2609202601179000000000120010010000001498765432115",
      "numero": "001-001-000000149",
      "estado": "EN_PROCESO",
      "ambiente": "PRODUCCION",
      "fechaEmision": "2026-09-26",
      "fechaAutorizacion": null,
      "fechaActualizacion": "2026-09-26T09:15:04.120-05:00",
      "receptor": {
        "identificacion": "0990000000001",
        "razonSocial": "CLIENTE DEMO S.A."
      },
      "total": 89.7,
      "referencia": "PED-2026-00482",
      "origen": "API"
    },
    {
      "tipo": "FACTURA",
      "codDoc": "01",
      "claveAcceso": "2409202601179000000000120010010000001481234567815",
      "numero": "001-001-000000148",
      "estado": "AUTORIZADO",
      "ambiente": "PRODUCCION",
      "fechaEmision": "2026-09-24",
      "fechaAutorizacion": "2026-09-24T10:42:31-05:00",
      "fechaActualizacion": "2026-09-24T10:42:33.512-05:00",
      "receptor": {
        "identificacion": "0990000000001",
        "razonSocial": "CLIENTE DEMO S.A."
      },
      "total": 89.7,
      "referencia": null,
      "origen": "API"
    },
    {
      "tipo": "FACTURA",
      "codDoc": "01",
      "claveAcceso": "2009202601179000000000120010010000001472468135717",
      "numero": "001-001-000000147",
      "estado": "AUTORIZADO",
      "ambiente": "PRODUCCION",
      "fechaEmision": "2026-09-20",
      "fechaAutorizacion": "2026-09-20T16:05:12-05:00",
      "fechaActualizacion": "2026-09-20T16:05:13.004-05:00",
      "receptor": {
        "identificacion": "1700000001001",
        "razonSocial": "PERSONA DEMO"
      },
      "total": 23,
      "referencia": null,
      "origen": "APP"
    }
  ],
  "paginacion": {
    "pagina": 1,
    "porPagina": 20,
    "total": 3,
    "paginas": 1
  }
}
Errores: HTTP 400, 401, 429, 500
Códigos de error de listar comprobantes
HTTP Código Causa y solución
400 JSON_INVALIDO

El cuerpo no es un JSON válido.

Revisa la sintaxis cerca de la línea y la columna que indica el mensaje.

400 VALIDACION

Uno o más campos no cumplen el formato. detalles lista cada campo con su código: CAMPO_REQUERIDO, CAMPO_DESCONOCIDO, TIPO_INVALIDO, FORMATO_INVALIDO, VALOR_INVALIDO, LONGITUD_INVALIDA o DECIMALES_EXCEDIDOS.

Corrige los campos de detalles. Los campos que el API no conoce se rechazan: revisa los nombres.

400 PARAMETRO_INVALIDO

Un parámetro de la ruta o de la consulta no es válido: por ejemplo, una clave de acceso sin 49 dígitos, un rango de fechas de más de 366 días o un cambiadoDesde anterior a 90 días.

Corrige el parámetro que indica campo.

400 IDEMPOTENCY_KEY_INVALIDA

La cabecera Idempotency-Key no tiene entre 8 y 100 caracteres, o usa caracteres distintos de letras, números, -, _, . y :.

Genera la clave con un UUID v4.

400 TOKEN_EN_URL

La URL incluye token, access_token o api_key.

Envía el token solo en la cabecera Authorization. Revoca ese token y crea otro: la URL pudo quedar en registros.

401 TOKEN_REQUERIDO

Falta la cabecera Authorization.

Envía Authorization: Bearer <token>.

401 TOKEN_INVALIDO

El token no existe o no tiene el formato de un token de Golem.

Copia el token completo, con su prefijo. Si no lo tienes, crea otro: Golem no puede mostrarlo de nuevo.

401 TOKEN_REVOCADO

El token fue revocado.

Crea otro en Cuenta > API e integraciones.

429 LIMITE_EXCEDIDO

Se superó un límite de solicitudes por minuto.

Repite la solicitud después de los segundos de Retry-After.

500 ERROR_INTERNO

Error inesperado de Golem.

Si ocurrió al emitir, repite la solicitud con la misma Idempotency-Key. Escribe a [email protected] con el requestId.

Formato y lista completa en Errores.

Soporte del API: [email protected], incluido en el precio. Cita el requestId del error o la cabecera X-Request-Id de la respuesta.

Los mantenimientos programados se avisan por correo con 24 horas de anticipación.