Saltar al contenido
VeloraBlog
← Todos los artículos

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 segundos

Casos 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.