Facturacion y Suscripciones¶
MDU usa Stripe para todos los pagos: suscripciones, compras unicas y el sistema de recompensas por referidos.
Planes de Suscripcion¶
| Plan | Generaciones/mes | Exportaciones STL/mes | Precio |
|---|---|---|---|
| Free | 1 | 10 | Gratis |
| Starter | 10 | 30 | Facturacion anual |
| Pro | 30 | 50 | Facturacion anual |
Los limites de plan son aplicados por plans.cjs y verificados via checkGenerationLimit() antes de cada llamada IA.
Note
El IVA esta incluido en todos los precios (tax-inclusive). automatic_tax esta desactivado en Stripe. Declaracion manual trimestral al contador.
Endpoints¶
Suscripciones¶
| Metodo | Ruta | Auth | Descripcion |
|---|---|---|---|
| POST | /api/create-checkout |
Requerido | Crear sesion de checkout Stripe |
| POST | /api/customer-portal |
Requerido | Portal de facturacion Stripe |
| POST | /api/check-subscription |
Requerido | Verificar suscripcion activa |
| GET | /api/usage |
Requerido | Estadisticas de uso del mes |
| POST | /api/validate-promo |
- | Validar codigo promocional |
Compras Unicas¶
| Metodo | Ruta | Auth | Descripcion |
|---|---|---|---|
| POST | /api/texture-checkout |
Requerido | Pago textura (4.50) |
| POST | /api/private-model-checkout |
Requerido | Pago privacidad (4.00) |
| POST | /api/delete-model-checkout |
Requerido | Pago eliminacion (3.50) |
| POST | /api/private-map-checkout |
Requerido | Privacidad mapa (4.00) |
| POST | /api/delete-map-checkout |
Requerido | Eliminacion mapa (3.50) |
Flujo de Checkout¶
1. POST /api/create-checkout { priceId, promoCode? }
→ Verificar invitacion referido → aplicar cupon 15% si anual
→ stripe.checkout.sessions.create()
→ Devolver { url }
2. Usuario completa Stripe Checkout
3. Webhook: checkout.session.completed
→ Activar suscripcion en DB local
4. POST /api/check-subscription
→ Devolver { subscribed, plan_key, rewards }
Seguimiento de Uso¶
{
"plan": "pro",
"plan_name": "Pro",
"usage": {
"generations": { "used": 5, "limit": 30, "remaining": 25 },
"stl_exports": { "used": 3, "limit": 50, "remaining": 47 }
},
"period_start": "2026-03-01T00:00:00.000Z"
}
Flujo de Pago Unico¶
Todos los pagos unicos (textura, privacidad, eliminacion) siguen el mismo patron:
1. POST /api/{accion}-checkout { modelId }
→ Verificar propiedad (WHERE id=$id AND user_id=$userId)
→ Crear sesion checkout Stripe con metadata
→ Devolver { url }
2. Usuario completa pago
3. POST /api/confirm-{accion} { modelId }
→ Verificar propiedad de nuevo
→ Buscar sesion pagada en Stripe
→ Aplicar cambio en DB
→ Devolver { success: true }
Toggle de Privacidad¶
Hacer un modelo/mapa privado requiere:
- Suscripcion activa, O
- privacy_paid = true (compra unica)
Hacer publico es siempre gratis.
Webhooks¶
MDU tiene dos endpoints de webhook Stripe:
| Ruta | Handler | Eventos |
|---|---|---|
/api/webhooks/stripe |
3dplim (Next.js) | Eventos suscripcion 3dplim |
/api/webhooks/mdu-stripe |
mdu-api | Eventos Miniature Forge |
Eventos Webhook mdu-api¶
checkout.session.completed— Activar suscripcion, registrar conteoscustomer.subscription.updated— Actualizar plan_key y estadocustomer.subscription.deleted— Degradar a free
Sistema de Referidos¶
Hitos de Recompensa¶
Cada N referidos suscritos otorga +10 dias bonus:
- Planes anuales: N = 10
- Planes mensuales: N = 30