12 de junio de 2026
¿Cómo verifico la firma de un webhook de MercadoPago (x-signature)?
MercadoPago firma sus webhooks con HMAC-SHA256 en el header x-signature. El formato es ts=<timestamp>,v1=<hash>. Hay que construir el manifest id:<data.id>;request-id:<x-request-id>;ts:<ts>; y compararlo con el hash usando tu secret de webhook. Tenés 22 segundos para responder 200.
Implementación paso a paso
1. Extraer del header x-signature: ts y v1
Formato: "ts=1704908010,v1=618c85345248dd..."
2. Construir el manifest string:
"id:{data.id};request-id:{x-request-id};ts:{ts};"
3. Generar HMAC-SHA256 del manifest con tu webhook secret
4. Comparar en tiempo constante (crypto.timingSafeEqual) con v1
5. Rechazar si no coinciden (return 400)
6. Procesar y responder 200/201 en menos de 22 segundosCasos especiales
- QR codes: NO pueden usar validación de firma con secret key. Usar filtrado por IP o validación alternativa.
- Reintentos: Si respondés 4xx o 5xx, MP reintenta cada 15 minutos por al menos 3 intentos.
- Sandbox vs producción: el secret de sandbox NO es el mismo que el de producción — configurar URLs separadas en el panel.