PagoKit
Next.js · TypeScript · Mercado Pago

Cobrá con Mercado Pago sin perder pagos ni dar acceso gratis.

Un starter con la parte difícil ya resuelta: webhooks firmados, el estado siempre leído de la API, órdenes que aguantan notificaciones duplicadas o desordenadas, suscripciones, reembolsos y reintentos que no se pierden.

El núcleo es gratis y de código abierto (MIT). La edición Pro se paga una sola vez.

Pasa los 12 casos de falla de Simulacro
// app/api/webhooks/mercadopago/route.ts
export async function POST(req: Request) {
  const r = await handleWebhook({
    url: req.url,
    headers: req.headers,
    body: await req.text(),
  }, webhookDeps());
  // 401: firma inválida
  // 500: Mercado Pago reintenta
  return Response.json(r, { status: r.status });
}

// pro/effects.ts: una vez por cambio de estado
["subscription.charge_paid"]: (p, ev) =>
  sendEmail({ to: p.payerEmail, … })

Los errores que cuestan plata, ya resueltos

Integrar el checkout lleva una tarde. Lo que lleva semanas (y aparece en producción) es todo lo que pasa después del pago.

Webhooks falsos

Cualquiera puede hacer un POST a tu endpoint. PagoKit verifica la firma x-signature (HMAC-SHA256, comparación en tiempo constante) y rechaza el resto.

Confiar en la URL de retorno

?status=approved lo escribe cualquiera. La orden solo cambia con el webhook verificado y el pago leído de la API.

Notificaciones duplicadas

Mercado Pago reintenta. Los efectos (emails, acceso) se disparan una vez por cambio de estado, no por notificación.

Eventos fuera de orden

Un pending que llega después del approved no deshace el pago: solo se aceptan transiciones que avanzan.

Cobrar un monto equivocado

Un precio que vino del navegador, una preferencia vieja o un link reutilizado. Se valida monto y moneda contra la orden o el plan antes de dar acceso.

Avisos que se pierden

Si tu servidor de email se cae, el efecto queda en un outbox y se reintenta con backoff. Si un webhook nunca llega, la conciliación lo detecta.

Precios

Pago único, sin suscripción. Proyectos ilimitados, propios o de clientes.

Gratis

USD 0

Para pagos únicos con Checkout Pro.

  • Webhook con firma verificada
  • Estado leído de la API, nunca del payload
  • Máquina de estados contra duplicados y desorden
  • Validación de monto y moneda
  • Cliente con reintentos e idempotencia
  • 39 tests
Próximamente en GitHub

Agencia

USD 99 pago único

Para todo el equipo de una agencia o empresa.

  • Todo lo de Pro
  • Licencia para todo el equipo
  • Proyectos ilimitados de clientes
Próximamente

¿Preferís no integrarlo vos? Lo integro yo en tu proyecto o en el de tu cliente: escribime.

Preguntas

¿En qué países funciona?

En todos los que usan la API de Mercado Pago (Argentina, Brasil, México, Uruguay, Chile, Colombia, Perú). La moneda sale de tus productos y planes.

¿Necesito Vercel?

No. Es una app de Next.js estándar: corre en Vercel, en un VPS o en Docker. Los crons se pueden disparar desde Vercel Cron, GitHub Actions o cualquier scheduler.

¿Qué base de datos usa la versión Pro?

Postgres 13 o superior: Neon, Supabase, Vercel Postgres o el tuyo. Las migraciones son archivos SQL comunes.

¿Puedo usarlo en proyectos de clientes?

Sí, en proyectos ilimitados. Lo que no se puede es revenderlo o publicarlo como plantilla.

¿Es oficial de Mercado Pago?

No. Es un proyecto independiente, no afiliado ni avalado por Mercado Pago.

Quién lo hizo

Javier Sivack, ingeniero backend con experiencia en sistemas bancarios, pagos e integraciones de APIs. PagoKit reúne lo que hace falta para que un cobro en producción no se pierda ni se duplique.

Está hecho con Claude, una IA, como compañero de programación: yo lo dirijo, lo pruebo contra Mercado Pago real y respondo por él. Cada caso tiene su test, y si encontrás un error, lo arreglo.

¿Necesitás una integración a medida con Mercado Pago, MercadoLibre u otra API? Escribime.