Tipos de eventos
Los principales eventos son: factura.creada, factura.enviada, factura.rechazada y factura.aceptada.
Seguridad y firmas
// Express.js (TypeScript)
app.post('/webhooks/verifactu', rawBody(), (req, res) => {
const signature = req.header('X-Verifactu-Signature');
if (!verify(signature, req.rawBody)) return res.sendStatus(401);
const event = req.body; // { eventId, type, data }
handle(event);
res.sendStatus(200);
});
Reintentos e idempotencia
function handle(event){
if (alreadyProcessed(event.eventId)) return;
try {
process(event);
} finally {
markProcessed(event.eventId);
}
}
Buenas prácticas
- Responde 2xx sólo cuando hayas persistido el evento.
- Usa colas para desacoplar el procesamiento.
- Guarda la cabecera de firma y el cuerpo crudo para auditoría.
Recursos
• Probar webhooks en el Playground
• Guía de Webhooks
¿Por qué usar la Verifactu API para webhooks?
La Verifactu API ofrece seguridad de extremo a extremo con firmas criptográficas, reintentos con backoff y deduplicación. Integrar webhooks con la API Verifactu reduce latencia, mejora la consistencia de datos y elimina pooling innecesario.
Verificación de firma: ejemplo ampliado
// Node.js (Express) con cuerpo crudo
app.post('/webhooks/verifactu', rawBody(), (req, res) => {
const signature = req.header('X-Verifactu-Signature');
if (!verify(signature, req.rawBody)) return res.sendStatus(401);
const event = JSON.parse(req.rawBody);
if (alreadyProcessed(event.eventId)) return res.sendStatus(200);
process(event);
res.sendStatus(200);
});
Errores frecuentes
- 401 Firma inválida: comprueba que usas el cuerpo crudo, no el ya parseado.
- 409 Duplicado: marca los
eventIdprocesados. - 5xx intermitente: aplica reintentos con backoff y DLQ.
FAQs
¿Puedo reenviar eventos perdidos?
Sí. Desde tu panel o vía soporte puedes solicitar reenvío por rango temporal.
¿Los webhooks están firmados siempre?
Sí. Verifica siempre la cabecera y conserva el payload crudo para auditoría.
Enlaces internos recomendados
- API Verifactu · visión general.
- API Verifactu · endpoints de eventos.
- Rendimiento · colas y concurrencia.
- Precios · planes y límites.
- Contacto · soporte.