Troubleshooting de webhooks
”No recibo webhooks”
Debe verificarse lo siguiente:
- La API key tiene
webhookUrlconfigurada (solicitar confirmación al administrador). - La URL es HTTPS y resuelve a una IP pública válida (no RFC1918 ni link-local).
- El endpoint responde con
2xxen menos de 10 s. - El comprobante se emitió vía API: los emitidos desde el POS web no disparan webhooks.
- Hacienda ya respondió. Si el comprobante está en
procesando, todavía no hay nada que notificar.
”Recibo 401 o firma inválida”
Debe verificarse lo siguiente:
- Se utiliza el mismo
webhookSecretque se generó al crear o rotar la key. - Se lee el body crudo antes de parsearlo (sin re-serializar el JSON).
- La comparación se realiza con una función timing-safe (
timingSafeEqual,hmac.compare_digest,hash_equals, etc.). - No se agregan ni se eliminan espacios, BOM ni newlines del body antes del HMAC.
”Recibo el mismo evento varias veces”
Es un comportamiento esperado durante un reintento. Debe implementarse la deduplicación por nonce: el nonce cambia en cada intento, por lo que sirve como clave única de “envío”.
”Recibí webhook pero el comprobante no aparece en GET /facturas/{clave}”
Es improbable, pero puede ocurrir por una race condition. Debe reintentarse el GET con backoff exponencial. Si la situación persiste por más de un minuto, debe abrirse un ticket de soporte.