Configurar Pagos
Sección titulada «Configurar Pagos»TalentBricksAI usa Stripe como procesador principal. Los planes de precios se gestionan desde el Admin Panel — no hay que tocar código ni variables de entorno para cambiar precios.
Planes actuales
Sección titulada «Planes actuales»Personales (/pricing)
Sección titulada «Personales (/pricing)»| Plan ID | Tipo | Precio | Período |
|---|---|---|---|
monthly-subscription | Suscripción | $19/mes | Mensual |
annual-subscription | Suscripción | $190/año | Anual |
credits-10 | Créditos | $10 (único) | One-time |
Equipos (/teams)
Sección titulada «Equipos (/teams)»| Plan ID | Seats máx | Precio ref. | Estado |
|---|---|---|---|
team-10 | 10 | $99/mes | ACTIVE |
team-50 | 50 | $399/mes | ACTIVE |
team-100 | 100 | $699/mes | ACTIVE |
enterprise | ilimitado | Precio custom | ACTIVE |
team-10-annual | 10 | ~$950/año | DRAFT |
team-50-annual | 50 | ~$3820/año | DRAFT |
team-100-annual | 100 | ~$6700/año | DRAFT |
Variables de entorno requeridas
Sección titulada «Variables de entorno requeridas»Solo estas dos variables son obligatorias para que Stripe funcione:
STRIPE_API_KEY=sk_test_51...STRIPE_WEBHOOK_SECRET=whsec_...Los Price IDs de Stripe ya no son variables de entorno requeridas — se gestionan desde el Admin
Panel. Si los tienes en .env.server, el seed los migra automáticamente a la base de datos la
primera vez.
# Opcionales — solo necesarios durante la migración inicialPAYMENTS_MONTHLY_SUBSCRIPTION_PLAN_ID=price_xxxPAYMENTS_ANNUAL_SUBSCRIPTION_PLAN_ID=price_xxxPAYMENTS_CREDITS_10_PLAN_ID=price_xxxFlujo de configuración inicial
Sección titulada «Flujo de configuración inicial»1. Crear los productos en Stripe
Sección titulada «1. Crear los productos en Stripe»En el Dashboard de Stripe (Product catalog > Products) o con el CLI, crea un producto por plan con
su precio correspondiente. Copia el price_xxx de cada uno.
# Ejemplo con Stripe CLIstripe products create --name="Monthly Subscription" --description="Acceso mensual a todos los cursos"stripe prices create --product=prod_XXX --unit-amount=1900 --currency=usd --recurring[interval]=month
stripe products create --name="Annual Subscription" --description="Acceso anual a todos los cursos"stripe prices create --product=prod_YYY --unit-amount=19000 --currency=usd --recurring[interval]=year
stripe products create --name="10 Credits" --description="Pack de 10 créditos"stripe prices create --product=prod_ZZZ --unit-amount=1000 --currency=usd2. Migrar Price IDs a la base de datos
Sección titulada «2. Migrar Price IDs a la base de datos»Opción A — Seed automático desde env vars (recomendado para primera vez):
- Agrega los Price IDs al
.env.server(temporalmente) - Ejecuta:
wasp db seed seedPricingPlans - El seed detecta que
stripePriceIdestá vacío en DB y lo migra desde el env var - Puedes quitar las vars del
.env.server— ya no son necesarias
Opción B — Desde el Admin Panel (cualquier momento):
- Ve a
/admin/pricing - Edita el plan (
monthly-subscription, etc.) - Pega el
price_xxxen el campo Stripe Price ID - Guarda
Opción C — Botón Sync en el Admin Panel:
- Ve a
/admin/pricing→ edita un plan - Haz clic en Sync con Stripe
- El sistema crea el producto y precio en Stripe automáticamente y guarda el ID en DB
3. Configurar webhooks
Sección titulada «3. Configurar webhooks»Desarrollo local:
stripe listen --forward-to localhost:3001/payments/stripe-webhook# Copia el whsec_... a STRIPE_WEBHOOK_SECRET en .env.serverProducción:
- Stripe Dashboard → Developers → Webhooks → Add endpoint
- URL:
https://tu-dominio.com/payments/stripe-webhook - Eventos requeridos:
checkout.session.completedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedinvoice.payment_succeededinvoice.payment_failed
Gestionar precios desde el Admin Panel
Sección titulada «Gestionar precios desde el Admin Panel»Ver todos los planes
Sección titulada «Ver todos los planes»Ve a /admin/pricing. Hay tres tabs: Todos / Personal / Equipos.
La columna Stripe muestra:
- ✅ verde con
price_xxx→ plan sincronizado con Stripe, listo para checkout - ⚠️ amarillo “No configurado” → falta el Stripe Price ID, el checkout fallará
Editar un plan
Sección titulada «Editar un plan»- Clic en Editar en cualquier plan
- Campos disponibles:
- Precio — actualiza el precio en la DB (no afecta Stripe automáticamente)
- Stripe Price ID — pega aquí el
price_xxxde Stripe - Stripe Product ID — se rellena automáticamente al hacer Sync
- Estado —
DRAFT(oculto),ACTIVE(visible),ARCHIVED,HIDDEN - Es mejor oferta — muestra badge destacado en la página de precios
Activar planes anuales de equipos
Sección titulada «Activar planes anuales de equipos»Los planes team-10-annual, team-50-annual y team-100-annual están en estado DRAFT. Para
activarlos:
- Crea los productos y precios en Stripe Dashboard (con facturación anual)
- En
/admin/pricing, edita cada plan anual - Pega el
price_xxxen Stripe Price ID - Cambia estado de
DRAFTaACTIVE
Lógica de checkout
Sección titulada «Lógica de checkout»Usuario compra un plan → 1. Busca el plan en DB por planId 2. Si existe y tiene stripePriceId → usa ese Price ID para el checkout ✅ 3. Si existe pero stripePriceId es null → fallback al env var 4. Si el env var también está vacío → error 500 claro para el admin 5. Si el plan no existe en DB → error 404Esta arquitectura permite cambiar los Price IDs desde el Admin Panel sin reiniciar el servidor.
Modelo de suscripción exclusiva
Sección titulada «Modelo de suscripción exclusiva»Un usuario no puede tener una suscripción personal y de equipo al mismo tiempo. Si intenta comprar, recibe un error claro en la página de precios.
Estados de suscripción (usuario)
Sección titulada «Estados de suscripción (usuario)»export enum SubscriptionStatus { Active = "active", // Suscripción activa — badge verde CancelAtPeriodEnd = "cancel_at_period_end", // Cancela al vencimiento — badge amarillo PastDue = "past_due", // Pago fallido — badge rojo Deleted = "deleted", // Suscripción terminada — badge gris}Página “Mi Plan”
Sección titulada «Página “Mi Plan”»/account → sección de plan actual. Permite al usuario:
- Ver estado de su suscripción
- Acceder al Stripe Customer Portal para cancelar, actualizar pago o ver facturas
Habilitar el Customer Portal en Stripe Dashboard: Settings → Billing → Customer portal.