Manejo de errores

Todos los errores de la API siguen el mismo formato: error es un mensaje legible para humanos y code es el código estable de máquina contra el que debes programar tu lógica.

json
{
  "ok": false,
  "error": "La empresa no tiene folios disponibles para el tipo 33.",
  "code": "NO_FOLIOS"
}

Errores HTTP comunes

Código Descripción Qué hacer
400 Request inválido (datos faltantes o mal formados) Revisar el body del request
401 No autenticado Renovar el JWT o verificar la API Key
403 Sin permisos Verificar el rol del usuario o plan
404 Recurso no encontrado Verificar el ID o folio en el path
409 Conflicto (ej: folio ya usado) Verificar el estado actual del recurso
422 Validación fallida El SII rechazó los datos del DTE
429 Rate limit superado Esperar el tiempo indicado en Retry-After
503 Servicio no disponible Redis no disponible, reintentar en 30s

Errores de emisión DTE

Cuando el job de emisión falla (estado: "failed"), el campo error del resultado contiene el detalle:

Error Descripción
SII_REJECTED El SII rechazó el DTE. Ver detail para el código SII.
NO_FOLIOS No hay folios disponibles para el tipo de DTE.
CERT_ERROR Error con el certificado digital (vencido o inválido).
XML_SIGN_ERROR Error al firmar el XML. Verificar el certificado.

Reintentos

La API no reintenta automáticamente los requests fallidos del cliente. Sin embargo, Folyo reintenta el envío al SII de forma automática antes de marcar el job como failed.

Para los webhooks, Folyo reintenta la entrega hasta 5 veces con backoff exponencial.