Blog

Tips, guides, and privacy advice

← Back to Blog
Consejos para desarrolladores

El ticket del lunes por la mañana: probar el camino del registro al pago tal y como lo vive un usuario real

24 de julio de 2026·11 min read

Imagina un ticket de soporte con un asunto de cuatro palabras: pagué, no pasó nada, ayuda. Llega a las 8:52 de un lunes, el peor momento posible para empezar a descubrir cosas sobre tu flujo de facturación. Si llevas un tiempo trabajando en un producto de pago, alguna versión de esto te sonará.

El cliente no hizo nada raro. Se registró el domingo por la noche, se distrajo antes de abrir el correo de verificación, volvió a la mañana siguiente, fue directo a la página de precios y pagó. El cargo se aprobó. Y después, nada: ni recibo, ni cambio de plan, ni mensaje de bienvenida. Para el producto, esto es un registro a medio terminar que además resulta que ha pagado.

Todas las pruebas están en verde. El registro está probado. El envío de correos está probado. El checkout está probado a fondo, por gente que se lo toma en serio. El bug vive en el único sitio del que nadie es responsable: el proceso que genera el recibo lee un campo que solo se rellena cuando alguien pulsa el enlace de verificación, y este cliente pagó antes de pulsarlo. Una secuencia de eventos completamente normal para él, y que ninguna prueba de la suite ha ejecutado jamás, porque todas parten de un usuario ya verificado.

Eso es lo que pasa con las costuras. El equipo de registro es dueño del registro. El equipo de facturación es dueño de la facturación. El espacio entre ambos pertenece a quien lo atraviese — y si nadie lo hace a propósito, la primera persona en atravesarlo es un cliente que paga, un lunes por la mañana.

Por qué nunca los encuentras: no puedes ser nuevo

Aquí viene la parte incómoda. Incluso sabiendo que existe un bug así, reproducirlo es engorroso, porque no puedes ser un usuario nuevo con facilidad. Tu dirección de correo ya está en la tabla de usuarios. También es una ficha de cliente en la pasarela de pago, un contacto en la herramienta de marketing, una fila en analítica y miembro de dos cohortes de feature flags que ya has olvidado. Tu navegador arrastra una sesión, una tarjeta guardada y un tooltip de onboarding que descartaste el trimestre pasado.

Cuando pruebas el registro con tu propia dirección, recorres un camino que ningún cliente real recorrerá jamás. Te saltas exactamente el tramo donde ellos se atascan, y nunca ves el estado vacío, el upsell de primera vez ni el correo de bienvenida que dejó de enviarse discretamente en marzo.

Ser genuinamente nuevo exige dos cosas a la vez: una identidad que el sistema no haya visto nunca y un navegador que nunca haya conocido al sistema. Ambas son un minuto de preparación. Sáltate cualquiera de las dos y la sesión no te dirá nada.

Preparar el escenario

Una bandeja con correo temporal resuelve la mitad de la identidad: una dirección que no existe en ninguna parte de tu stack, lista en un segundo y todavía legible cuando el recibo aparezca veinte minutos después. El resto es pura disciplina con el estado:

  • Un perfil de navegador limpio, no solo una ventana privada. El incógnito se ocupa de las cookies, pero un perfil aparte también significa cero extensiones y cero tarjetas autocompletadas, y ambas cosas cambian en silencio lo que hace el checkout.
  • Una dirección que este producto no haya visto nunca, para crear un registro en lugar de chocar con uno existente.
  • También una identidad de pago nueva. Reutilizar un cliente de prueba significa reutilizar sus tarjetas guardadas y su historial de facturas, que es exactamente el estado que un comprador primerizo no tiene.
  • Un nombre y una empresa distintos. Los datos que parecen datos de prueba activan validaciones diferentes a los datos que parecen de una persona.
  • Staging, apuntando a la pasarela de pago en modo test. Nunca producción, nunca una tarjeta real.
Guarda la URL de la bandeja en marcadores antes de empezar. La dirección vive en su propio enlace, así que puedes cerrar la pestaña, pasar veinte minutos en el checkout y volver al mismo buzón — algo que importa cuando el recibo llega mucho después del correo de registro.

Paso 1: regístrate y lee el correo de verdad

Pega la dirección y envía. El mensaje debería llegar en un par de segundos; si tarda treinta, anótalo, porque un usuario mirando una pantalla de "revisa tu bandeja" durante medio minuto es un usuario que empieza a dudar de ti. Después léelo de verdad en lugar de limitarte a buscar el botón:

  • Tiempo hasta la llegada. Mídelo. Es la métrica que se degrada bajo carga, y nadie se da cuenta hasta el día del lanzamiento.
  • Quién lo envía. ¿Una marca legible o un hostname no-reply? ¿Una respuesta llega a una persona o se evapora?
  • El enlace, pulsado dos veces. Una para verificar. Otra para confirmar que el token es de un solo uso y que el segundo intento falla con elegancia en vez de lanzar un 500.
  • Caducidad. Deja uno sin usar más allá de su vida útil y comprueba que se rechaza con un mensaje que explique cómo conseguir otro.
  • Mayúsculas y minúsculas. Regístrate otra vez con otra capitalización. El dominio no distingue mayúsculas según la RFC 5321 y casi todos los productos tratan igual la parte local, así que esto no debe crear una segunda cuenta.
  • El estado sin verificar: este es justo el del escenario inicial. Antes de pulsar nada, mira qué te deja hacer ya la aplicación. ¿Puedes invitar a compañeros? ¿Puedes pagar? A veces es deliberado. A veces es un ticket de lunes por la mañana esperando su momento.

Si la verificación es tu principal preocupación, merece una sesión propia: profundizamos en tokens y casos límite en cómo prueban los desarrolladores los flujos de verificación por correo.

Paso 2: el tramo silencioso antes de que se mueva el dinero

Entre verificar y pagar hay un pequeño racimo de mensajes automáticos: bienvenida, recordatorio de onboarding, "termina de configurar tu cuenta". Son los correos menos probados de la mayoría de productos, porque los envían procesos en segundo plano y no un botón que alguien pulsa durante una prueba.

Deja la bandeja abierta y observa. Una bienvenida duplicada, un recordatorio que se dispara noventa segundos después del registro o un saludo dirigido a un nombre que nunca escribiste son defectos reales, y todos invisibles a menos que una persona esté leyendo el buzón.

Paso 3: el paso del pago, siempre en sandbox

Llega la parte que todos rodean de puntillas, porque tocar los pagos da respeto. Solo son peligrosos en el entorno equivocado. Todo proveedor serio ofrece un sandbox precisamente para esto: Stripe publica un juego completo de tarjetas de prueba, y PayPal ofrece cuentas sandbox que se comportan como las reales sin mover un céntimo.

Úsalos. Nunca escribas un número de tarjeta auténtico en un entorno de pruebas: ni el tuyo, y desde luego no el de un compañero o un cliente. Los datos reales de tarjeta arrastran la máquina en la que estás al alcance de PCI DSS, y un servidor de staging es el último sitio donde eso encaja. Los números de prueba existen para que esto nunca tenga que ser una decisión personal.

El valor está en negarse a parar en el camino feliz. Un checkout que solo funciona cuando todo sale bien no está realmente probado:

  • Un éxito limpio. Pago aprobado, plan realmente activado, usuario aterrizando en algún sitio con sentido y no en un panel vacío.
  • Un rechazo normal. ¿El usuario recibe una explicación clara y conserva los datos del formulario, o una traza de error y un carrito vacío?
  • Fondos insuficientes. Distinto de un rechazo genérico, y merece su propio texto.
  • Un desafío 3-D Secure. La autenticación reforzada es obligatoria en muchos mercados. Complétalo una vez y luego repítelo abandonándolo a mitad. Un desafío abandonado no debe dejar atrás una suscripción a medio construir.
  • Tarjeta caducada y CVC incorrecto. Dos rutas de error a las que les encanta fundirse en un único mensaje inútil.
  • El doble envío. Pulsa pagar dos veces, rápido. Un cargo, no dos. Este es el bug más caro de la lista si se escapa.
  • El botón atrás. Paga, vuelve atrás, reenvía. La misma pregunta por otra puerta.
  • Moneda e impuestos. Si cobras distinto por región, prueba dos. El impuesto se calcula en un sitio y se muestra en tres, y los tres se desincronizan.

Si usas Stripe, los números de abajo cubren toda esa lista y te ahorran bucear en la documentación a mitad de la sesión. Combínalos con una fecha de caducidad futura y cualquier CVC de tres dígitos:

  • 4242 4242 4242 4242 — el éxito limpio. Tu referencia.
  • 4000 0000 0000 0002 — un rechazo genérico.
  • 4000 0000 0000 9995 — fondos insuficientes, que debería leerse distinto al usuario que un rechazo genérico.
  • 4000 0000 0000 0069 — tarjeta caducada.
  • 4000 0000 0000 0127 — CVC incorrecto.
  • 4000 0025 0000 3155 — fuerza un desafío de autenticación 3-D Secure. Ejecútalo dos veces: una completándolo y otra abandonándolo a mitad.

Otros proveedores publican conjuntos equivalentes, así que los mismos seis escenarios viajan contigo; solo cambian los números. Conviene revisarlos de vez en cuando en la documentación de pruebas vigente, porque los proveedores los actualizan.

Ejecuta primero los casos de fallo. Una vez que un usuario de prueba está felizmente suscrito, devolverlo a un estado limpio previo al pago es engorroso, mientras que una bandeja nueva y un perfil recién creado te colocan en la línea de salida en segundos.

Paso 4: el recibo forma parte del producto

En el instante en que el pago se aprueba, la bandeja se convierte en la pantalla más interesante de la prueba. Los recibos se construyen los últimos y se olvidan los primeros, pero para el cliente son justamente el documento que demuestra que todo esto ocurrió: el archivo que reenvía a administración, el adjunto de una nota de gastos.

  • El importe coincide con la página de pago. Obvio, y falso más veces de las que te gustaría en cuanto entran descuentos, prorrateos y conversión de divisa.
  • El impuesto está desglosado correctamente para la región que probaste.
  • El nombre del plan es el que ve el cliente, no plan_pro_v2_2024.
  • Número de factura, fecha y datos de la empresa están presentes y son legibles para una persona.
  • El PDF o el enlace a la factura alojada se abre para alguien que no ha iniciado sesión. La persona de administración que recibe el reenvío no tiene cuenta.
  • Todos los enlaces apuntan a algo público. Staging cuela URLs de localhost en los correos con auténtico entusiasmo.

Paso 5: renovaciones y pagos fallidos, sin esperar un mes

Los bugs de suscripción se esconden en el futuro, y por eso sobreviven tanto tiempo. El cargo de renovación, el aviso de tarjeta a punto de caducar, la secuencia de reclamación, el aviso final de cancelación: todo ocurre semanas después de la release, y para entonces ya nadie mira una bandeja de entrada.

No hace falta esperar. Los relojes de prueba de Stripe adelantan a un cliente de prueba por sus ciclos de facturación en segundos, y la mayoría de proveedores tiene un equivalente. Apunta eso a una bandeja desechable y un año de correspondencia de facturación llega en unos minutos:

  • El recibo de renovación sale el día correcto por el importe correcto.
  • El aviso de cargo próximo, si envías uno, llega con suficiente antelación para servir de algo.
  • La secuencia de reclamación escala con sensatez ante una tarjeta que falla y se detiene en el momento en que el pago se aprueba. Nadie que ya haya pagado debería recibir el tercer recordatorio enfadado.
  • Los avisos de bajada de plan y bloqueo coinciden con lo que la cuenta realmente puede seguir haciendo.

Paso 6: cancela y después reembolsa

Recorre el camino hasta el final. Cancela y comprueba que la confirmación dice la verdad sobre si el acceso continúa hasta el final del periodo pagado o se corta de inmediato: esa única frase genera más tickets de queja que ninguna otra en facturación. Después reembolsa desde el lado del proveedor y confirma que una nota de crédito o una confirmación de reembolso llega de verdad al cliente, en lugar de que el dinero se mueva en silencio dentro de un panel que él no ve.

La revisión que se aplica a cada mensaje

Sea lo que sea lo que lo haya generado, cada correo recibe el mismo repaso rápido. Cuestión de segundos, una vez que es un hábito:

  • Ha llegado, y a la bandeja de entrada, no descartado en silencio.
  • Nada se renderiza como un marcador sin resolver. Un token sin sustituir en un saludo es el bug más embarazoso de este artículo, y se publica constantemente.
  • La versión en texto plano existe y se lee bien. Muchos clientes y lectores de pantalla la usan en lugar del HTML.
  • Los enlaces son absolutos y públicos.
  • El correo de marketing lleva una baja funcional, incluida la cabecera de un clic de la RFC 8058, hoy en la práctica obligatoria para remitentes masivos según las directrices para remitentes de Google. Los recibos transaccionales no deberían llevarla.
  • La autenticación pasa. Si el correo de prueba se está entregando mal, entérate ahora: por qué los correos transaccionales acaban en spam repasa las causas.

Por qué una bandeja desechable encaja en este ciclo

Lo que hace viable todo esto es que la bandeja es desechable sin ser inútilmente efímera. Los mensajes llegan en tiempo real, así que ves aterrizar cada uno en el instante en que el sistema lo envía y la causa y el efecto siguen siendo evidentes. La dirección sobrevive una hora, lo que cubre de sobra un registro, un checkout, un desvío por 3-D Secure y un ciclo de facturación acelerado: una bandeja de diez minutos suele caducar justo cuando el recibo estaba a punto de llegar.

Y después no hay nada que recoger. Ni cuentas de prueba acumulándose sobre tu dirección real, ni un buzón de QA compartido donde las sesiones de seis personas se mezclan, ni dudas sobre si el mensaje en pantalla es de la prueba de hoy o de la del jueves pasado. El siguiente intento arranca realmente en blanco, que es justo la idea. Si quieres el detalle de qué ocurre con todo al final de esa hora, lo contamos en qué pasa después de una hora.

Qué detecta esto realmente

Una sesión así saca a la luz de forma fiable una familia concreta de defectos: los que viven entre sistemas en vez de dentro de ellos:

  • Recibos que nunca se envían porque un proceso posterior necesita un campo que rellena un paso sin relación. (Hola, lunes.)
  • Cargos duplicados por un segundo clic impaciente.
  • Correos de bienvenida que se disparan dos veces, o nunca, para quien paga antes de verificar.
  • Pago aprobado mientras el plan falla en silencio al activarse, dejando a un cliente que paga en el nivel gratuito.
  • Desafíos 3-D Secure abandonados que dejan medias suscripciones huérfanas.
  • URLs de staging en correos que estaban a un flag de configuración de llegar a los clientes.
  • Secuencias de reclamación que siguen persiguiendo a alguien que ya pagó.

Una advertencia, dicha sin rodeos

Esta es una técnica para probar software del que eres responsable, en un entorno que controlas, contra un sandbox de pagos. No es una forma de encadenar pruebas gratuitas, saltarse un muro de pago o fabricar cuentas en el servicio de otra persona. Eso es abuso, es la razón por la que los proveedores de correo desechable acaban bloqueados, y no es para lo que sirve esta herramienta.

El límite vale también en sentido contrario: una bandeja desechable es deliberadamente temporal, así que nunca vincules a ella una cuenta que necesites conservar. Si no puedes recuperarla sin ese buzón, usa una dirección real. Alias frente a dirección temporal es la lectura adecuada si dudas de qué lado de esa línea estás.

Conviértelo en un ritual, no en una hazaña

Los equipos que cazan estas cosas no son los que tienen los planes de prueba más elaborados. Son los que recorren el camino entero como desconocidos antes de publicar nada relevante: bandeja nueva, perfil limpio, registro, verificación, pago con tarjeta de prueba, lectura de cada mensaje, cancelación, reembolso. Media hora, completamente manual, y sigue encontrando cosas que la suite automatizada no puede encontrar por estructura, porque está construida sobre las mismas suposiciones que el código.

Ponlo en el calendario: cada dos semanas o antes de cada release que toque registro o facturación. La primera sesión casi siempre destapa algo que nadie había notado, y el ticket del lunes por la mañana deja de ser algo que te pasa a ti. Consigue un correo desechable nuevo y recorre el camino.