Webhooks vs polling: cómo saber si Hacienda aceptó tu factura
Al emitir recibís un 202, no una aceptación. Estas son las dos formas de enterarte del resultado — y por qué el webhook gana.
Cuando emitís un comprobante con la API, la respuesta es 202 Accepted: lo encolamos para firmarlo y enviarlo a Hacienda. La aceptación real llega segundos después. Hay dos maneras de enterarte.
Polling
Consultás el estado cada cierto tiempo:
curl https://api.facturaencr.com/v2/efactura/documents/<id> \
-H "X-API-Key: efk_…" -H "X-API-Secret: efs_…"
Funciona, pero desperdicia llamadas y puede chocar con tu rate limit si consultás muy seguido.
Webhooks (recomendado)
Registrás una URL HTTPS y te avisamos apenas cambia el estado:
{
"event": "document.accepted",
"documentId": "65fe…",
"clave": "50609032600310123456700100001010000000001199999999",
"haciendaStatus": "aceptado",
"occurredAt": "2026-05-20T14:32:30.000Z"
}
Los eventos más usados son document.accepted, document.rejected y document.error.
Verificá la firma SIEMPRE
Cada webhook viaja firmado con HMAC-SHA256 en el header X-Efactura-Signature: t=<unix>,v1=<hmac>. Antes de procesarlo, recalculá el HMAC sobre t.body con tu secret y compará en tiempo constante. Rechazá firmas con más de 5 minutos de antigüedad (anti-replay).
Reglas de oro
- Respondé 2xx en menos de 10 segundos; si tardás, reintentamos con backoff.
- Procesá de forma idempotente: un evento puede llegar duplicado.
- Nunca confíes en un webhook sin verificar la firma.
Empezá a emitir con la API
Sandbox gratis. Tus primeros 100 documentos sin costo. Pagás solo por lo que emitís.
