Listar facturas
Devuelve las facturas del tenant con paginación, ordenadas de más reciente a más antigua.
Authorization
ApiKeyAuth API key con prefijo qapi_live_ o qapi_test_, o JWT (access_token) obtenido vía POST /v1/auth/login. QAPI detecta el tipo automáticamente por el prefijo del token.
In: header
Query Parameters
Filtrar por tipo de DTE (ej. FACT).
Con "true" excluye las facturas certificadas con MOCK (pruebas) — útil para conciliación contable.
Response Body
application/json
application/json
curl -X GET "https://example.com/v1/invoices"{
"data": [
{
"id": "inv_V1StGXR8_Z5jdHi6",
"status": "PENDING",
"tipo_dte": "FACT",
"moneda": "GTQ",
"gran_total": 112,
"numero_acceso": 543219876,
"certificador": "MOCK",
"uuid_sat": "91cfb67b-89f6-4d15-a97b-76fa68e0db9c",
"serie": "QAPI",
"numero_dte": 42,
"pdf_url": "http://example.com",
"referencia_interna": "string",
"integrity_checksum": "string",
"error_code": "string",
"error_message": "string",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"certified_at": "2019-08-24T14:15:22Z",
"cancelled_at": "2019-08-24T14:15:22Z"
}
],
"total": 0,
"page": 0,
"limit": 0
}{
"type": "https://docs.dtevia.com.gt/errors/validation-error",
"title": "VALIDATION_ERROR",
"status": 422,
"detail": "Error de validación",
"instance": "/v1/invoices",
"invalid_params": [
{
"field": "items.0.impuestos.0.monto_impuesto",
"message": "MontoImpuesto IVA inválido. Esperado ~12 (MontoGravable 100 × 0.12), recibido 10"
}
]
}Perfil del usuario autenticado
Devuelve el perfil del usuario y del tenant, incluyendo el certificador activo de la cuenta ("MOCK" hasta que QAPI active el certificador real en modo live). Requiere JWT — no acepta API keys.
Emitir factura
Crea y envía una factura al certificador. Responde `202` con `status: "PROCESSING"` inmediatamente — la certificación es asíncrona. Consultá el estado final con `GET /v1/invoices/{id}` (polling) o configurá un webhook. Con una API key `qapi_test_` la factura siempre certifica con MOCK (sin validez tributaria, no consume cuota). Tipos implementados: `FACT` (Régimen General, con IVA) y `FPEQ` (Pequeño Contribuyente, sin IVA) — los demás responden 501. En modo live, el tipo debe corresponder a la afiliación IVA del emisor configurado (GEN → FACT, PEQ → FPEQ) y el NIT del payload debe coincidir con el del emisor (cuenta o proyecto).