Para builders de LATAM
El SaaS boilerplate serio
con MercadoPago nativo
Cobrá en pesos, reais o MXN con MercadoPago adentro — suscripciones recurrentes, webhooks asíncronos firmados e idempotencia ya resueltos. Stripe y Polar también están cableados, para cuando necesites salir al mundo.
Los kits Stripe-first te dejan glue-ando MercadoPago a mano
ShipFast, MakerKit y supastarter son Stripe-first. Pero Stripe no opera directo en Argentina (una restricción del BCRA), y ruteando por dLocal las comisiones reales trepan a 4-6% y liquidan a cuentas en USD/EUR. Para cobrar en ARS, BRL o MXN de forma nativa — con suscripciones recurrentes — MercadoPago es el rail pragmático, y muchas veces el único. Así que todo proyecto LATAM termina igual: glue-ando MercadoPago a Next.js a mano, otra vez.
El dolor de integrar MercadoPago, en palabras de los propios devs
Obligados a testear en producción
"Please fix the sandbox for the Checkout Pro; it's just plainly unacceptable that we need to test our integration in production." (Por favor arreglen el sandbox del Checkout Pro; es inaceptable tener que testear la integración en producción.) — Víctor G. G. Quiroga, github.com/mercadopago/sdk-js discusión #62
Abandonando la integración
"I am almost giving up on integrating with Mercado Pago." (Estoy a punto de abandonar la integración.) — Rafael Cardoso, y "I'm dropping the integration and moving forward with another provider." — Vicente Martínez, github.com/mercadopago/sdk-js discusión #62
La más difícil de testear
"de longe essa é a mais complexa e difícil de testar" (por lejos la más compleja y difícil de testear). — rjslegall, github.com/mercadopago/sdk-js discusión #62
MercadoPago, hecho como lo harías vos si tuvieras el tiempo
Suscripciones recurrentes con la API de preapproval. El webhook asíncrono donde la verdad aterriza después — firmado y verificado. Handlers idempotentes, para que una entrega duplicada nunca cobre dos veces. Es exactamente la plomería en la que tropiezan los que integran a mano, cableada detrás de una interfaz tipada y cubierta por tests. Prendé una sola env var para elegirlo. Ya lo sufrimos por vos.
1 PAYMENT_PROVIDER=mercado-pago
2 MERCADO_PAGO_ACCESS_TOKEN=...
3 MERCADO_PAGO_WEBHOOK_SECRET=...
4
5 // idempotente sobre externalOrderId — una
6 // entrega repetida del webhook registra la
7 // compra una sola vez, vía outbox durable.
Un contrato de billing, tres providers
Cambiá de provider detrás de una interfaz
Stripe, MercadoPago y Polar implementan el mismo port de payment-provider. Elegí uno con una env var; el resto de tu app no cambia.
Todo el ciclo de vida, no el happy path
Checkout, customer portal, cambios de plan, manejo de pagos fallidos y reconciliación en la DB después del webhook — no un cobro suelto.
Webhooks firmados e idempotentes
Cada provider verifica la firma de su webhook y registra las compras de forma idempotente, así el paso asíncrono donde "la verdad aterriza después" nunca cobra dos veces.
Docs reales en EN, ES y PT — no solo locale routing
El locale routing es commodity. Esto es distinto: la documentación del producto misma viene en inglés, español y portugués como páginas reales de Fumadocs, con inglés como fuente canónica y los siblings ES/PT mantenidos en sync. Tu compañero hispano o lusohablante lee la guía de setup en su idioma, no un machine-translate de yapa.
Todo lo demás que un SaaS de verdad necesita — DDD-layered y testeado
Auth
BetterAuth — 2FA, magic-link, OAuth, verificación de email y password reset, ya cableados.
Orgs y RBAC
Organizaciones, miembros, invitaciones, permisos por rol y API keys — multi-tenancy real.
Jobs y events
Colas de BullMQ con un dashboard de Bull Board, más un event bus con outbox durable.
Storage
S3, UploadThing, Supabase o disco local detrás de un solo storage port con keys content-addressed.
Observabilidad
OpenTelemetry, Sentry, Pino y /metrics — cada uno un no-op hasta que lo configures.
Deployá donde quieras
Docker, Railway o un VPS pelado. Sin lock-in a Stripe ni a un solo host.
FAQ del boilerplate con MercadoPago
¿De verdad soporta suscripciones recurrentes de MercadoPago?+
¿Puedo usar Stripe o Polar en lugar de MercadoPago — o además?+
¿Esto es solo locale routing con una etiqueta en español?+
¿Dónde lo puedo deployar?+
Dejá de glue-ar MercadoPago a Next.js a mano.
Arrancá desde una base donde los pesos, el preapproval y el webhook firmado ya están resueltos — y testeados.