Blog
Desarrolladores·12 de junio de 2026 · 7 min

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.

Imagen de portadaRecomendado 16:9

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.