402

Payment Required

El código que nunca se usó para lo que se diseñó pero que ahora significa "saca la cartera". APIs, límites y suscripciones.

💳 Client Error

💰 ¿Qué narices es esto?

El código 402 Payment Required es el "dinero por favor" de HTTP. Fue diseñado en los 90s para pagos digitales que nunca llegaron a materializarse masivamente. Es como construir un peaje para carros voladores en 1995. Oficialmente está "reservado para uso futuro", pero en la práctica se ha convertido en el código favorito para decir "esto cuesta dinero, amigo".

Aunque el estándar HTTP lo dejó como placeholder, la industria tech se lo apropió creativamente. Hoy se usa principalmente cuando has agotado tu plan gratuito, cuando intentas usar features premium sin pagar, o cuando tu API key de freemium ya no puede más. Es el equivalente digital de "se terminó la prueba gratis, ahora paga".

El 402 aparece típicamente cuando:

  • Agotaste el límite de tu plan gratuito (API calls, storage, etc.)
  • Intentas acceder a features premium sin suscripción
  • Tu periodo de prueba gratis expiró
  • Necesitas agregar créditos a tu cuenta
  • El servicio requiere verificación de método de pago

🎯 Dato curioso

Stripe usa 402 cuando hay problemas con pagos. Twitter lo usaba para límites de API. Muchos servicios prefieren 429 (Too Many Requests) porque es más estándar, pero el 402 es más expresivo para temas de dinero.

Lo gracioso del 402 es que técnicamente no existe un estándar sobre cómo implementarlo. Cada servicio lo interpreta a su manera. Algunos lo usan para límites de rate, otros para features premium, otros para cuentas suspendidas por falta de pago. Es como un idioma que todos entienden pero nadie habla igual. Por eso siempre revisa la documentación específica del API que estés usando.

🔧 Cómo manejar esto

🖥️ Para servidores (generar 402s útiles)

  1. Sé específico en el mensaje: "Plan gratuito agotado" vs "Pago requerido".
  2. Incluye información de upgrade: Links a planes, precios, pasos.
  3. Muestra el límite actual: "500/500 requests usadas este mes".
  4. Sugiere acciones concretas: Qué debe hacer el usuario.
  5. Considera alternativas: A veces 429 es más apropiado.

📱 Para desarrolladores frontend

  1. UX clara de monetización: Explica por qué necesita pagar.
  2. Muestra planes disponibles: Con comparación de features.
  3. Facilita el upgrade: Un click al proceso de pago.
  4. Trackea límites proactivamente: Avisa antes del 402.
  5. Maneja gracefully: No rompas la experiencia del usuario.

Problemas típicos con 402

  • Mensaje genérico o confuso:
    Si solo devuelves "Payment Required" sin detalles, el usuario no sabe qué debe pagar ni por qué. Sé específico: límite, feature premium, trial expirado, etc.
  • No incluir información de upgrade:
    Si no das un enlace o instrucciones para actualizar el plan, el usuario se queda bloqueado y frustrado.
  • Usar 402 para rate limiting puro:
    Para límites de uso temporales (rate limit), el código correcto es 429. Usa 402 solo cuando realmente se requiere pago.
  • No mostrar el límite alcanzado:
    Si no informas cuántas peticiones o recursos quedan, el usuario no puede anticiparse ni planificar.

🚀 Respuesta rápida para emergencias

🔥 Si todos los usuarios ven 402:
1. Comprueba los límites de uso y planes activos.
2. Verifica que los pagos y renovaciones se procesan correctamente.
3. Asegúrate de que el endpoint de upgrade funciona.
4. Revisa logs de facturación y errores de integración.
⚡ Si el usuario no puede pagar o actualizar:
1. Comprueba que el enlace de upgrade es visible y funcional.
2. Ofrece soporte rápido (chat, email).
3. Permite reintentar el pago o cambiar método.
🎯 Truco de monetización:
Avisa al usuario antes de llegar al 402 (notificaciones, emails, banners). Así mejoras la conversión y evitas frustración.