Reintentos del webhook
LX CloudPos reintenta de forma agresiva los envíos fallidos, con el fin de evitar la pérdida de eventos relevantes. Existen dos capas: reintentos in-process (en memoria, inmediatos) y reintentos persistentes (cron, distanciados en el tiempo).
In-process (síncronos)
Justo después del envío original, LX CloudPos hace hasta 3 intentos con backoff lineal:
| Intento | Espera previa |
|---|---|
| 1 | 0 s |
| 2 | 2 s |
| 3 | 8 s |
Persistentes (cron)
Si los 3 intentos in-process fallan, el envío queda en cola persistente, con el último estado de Hacienda guardado para poder reenviar el mismo payload. Un cron cada 10 minutos drena esa cola, hasta llegar a 5 intentos totales (3 in-process + 2 por cron).
Esto implica que, si el receptor permaneció fuera de servicio durante algunos minutos, el evento se entrega igualmente con posterioridad: no es necesario que el receptor esté en línea en el instante exacto en que Hacienda resuelve el comprobante.
Cuándo se reintenta
| Respuesta del receptor | ¿Se reintenta? |
|---|---|
2xx (200, 201, 204) | No (éxito) |
4xx excepto 429 | No (error definitivo del receptor) |
429 | Sí (rate limited) |
5xx | Sí (falla transitoria) |
| Timeout (>10 s) | Sí |
| Conexión rechazada | Sí |
Cuándo se detiene el reintento
- Tras los 5 intentos totales (3 in-process + 2 por cron).
- Si se recibe un
4xxdistinto de429en cualquier intento (error definitivo). - Si el
webhookUrlfalla la validación SSRF (URL prohibida).
Cada envío incluye el campo
intentoen el payload y unnonceúnico por intento. La lógica de deduplicación debe tolerar la re-entrega del mismo evento.