Upgrade y portal de facturacion
Stripe Checkout para cambiar de plan y Customer Portal para gestionar pagos.
Mejora tu tenant mediante Stripe Checkout o gestiona una suscripcion existente en el Stripe Customer Portal. Ambos flujos requieren autenticacion JWT del panel (JwtAuthGuard + contexto de tenant).
Flujo de suscripcion
Listar planes disponibles
GET /billing/plans Authorization: Bearer <jwt>Devuelve planes activos con limites mensuales de email, tokens IA y price IDs de Stripe.
Iniciar checkout
POST /billing/checkout Authorization: Bearer <jwt> X-Tenant-Id: clxxxxxxxx Content-Type: application/json{ "planSlug": "pro", "successUrl": "https://tu-app.com/billing/success", "cancelUrl": "https://tu-app.com/billing/cancel" }Respuesta:
{ "url": "https://checkout.stripe.com/..." }— redirige el navegador del admin a esa URL.Stripe completa el pago
Stripe envia
checkout.session.completedaPOST /billing/webhook. MailingCore activa la suscripcion y otorga los tokens IA mensuales del plan.Verificar suscripcion
GET /billing/subscription Authorization: Bearer <jwt> X-Tenant-Id: clxxxxxxxxConfirma slug del plan, estado y fechas del periodo actual antes de reanudar envios de alto volumen.
Customer Portal
Para actualizar metodo de pago, facturas, cancelacion o reactivacion:
POST /billing/portal
Authorization: Bearer <jwt>
X-Tenant-Id: clxxxxxxxx
Respuesta: { "url": "https://billing.stripe.com/..." }. La URL de retorno apunta por defecto al dashboard.
Cuando hacer upgrade
| Situacion | Accion |
|---|---|
X-Quota-Warning: true en envios | Valora subir de plan antes del 110 % de gracia — ver Aplicacion de cuota |
| HTTP 429 cuota mensual excedida | POST /billing/checkout con un planSlug superior, o espera al siguiente ciclo |
| Mas dominios, miembros o plantillas | Compara tiers en Planes y precios |
Atajo en el panel
La ruta Billing del dashboard replica estos endpoints: ver uso actual, lanzar checkout o abrir el Customer Portal sin curl.