PDF de la factura
Redirige (302) a la representación gráfica de la factura provista por el certificador. Disponible para facturas CERTIFIED y también CANCELLED (el DTE anulado conserva su PDF, re-renderizado por el certificador con la marca ANULADO). En entorno test/sandbox (MOCK) el destino no resuelve a un PDF real — la factura de prueba se ve y descarga con el visualizador integrado del dashboard (botón "Ver factura").
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
Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/v1/invoices/inv_V1StGXR8_Z5jdHi6/pdf"{
"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"
}
]
}{
"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"
}
]
}Anular factura
Anula una factura certificada ante la SAT. Solo facturas en estado `CERTIFIED` pueden anularse. El body es obligatorio: requiere `motivo` y `fecha_anulacion` con offset de Guatemala (-06:00).
Emitir factura de prueba
Crea una factura de prueba usando siempre el certificador MOCK, sin importar el certificador del tenant. Sin costo ni validez tributaria. Aplica las mismas 14 validaciones que producción. La respuesta incluye `links.self` apuntando a `GET /v1/invoices/{id}` — las facturas de sandbox **se consultan y anulan por los endpoints normales de Facturas**, no existe un GET/cancel bajo /v1/sandbox. Diferencias vs producción: no dispara webhooks, no consume cuota del plan, `referencia_interna` se prefija con "[SANDBOX]", y aplica un límite diario por tipo de DTE según tu plan (starter/business: 20, enterprise: 50).