He aqui un numero que mantiene despiertos a los fundadores de micro-SaaS por la noche: $0.35.
Eso es aproximadamente lo que Stripe cobra por procesar un pago de $1.99. La comision de Stripe es 2.9% + $0.30, que en una transaccion de $1.99 resulta en $0.30 + $0.06 = $0.36. Lo que significa que el 18% de tus ingresos va a procesamiento de pagos antes de pagar servidores, entrega de email, DNS, o tu cafe de la manana.
Sabiamos esto cuando pusimos el precio de 0cron en $1.99/mes. Tambien sabiamos que cada competidor en el espacio de tareas cron cobra $5-$20/mes por aproximadamente el mismo conjunto de funcionalidades. El punto de precio de $1.99 es una posicion de mercado deliberada: accesible para desarrolladores independientes, freelancers y equipos pequenos en mercados emergentes donde $20/mes para una herramienta de utilidad no es justificable.
La economia funciona porque el producto es un solo binario Rust ejecutandose en un solo servidor. Nuestro costo de infraestructura por usuario se mide en fracciones de centavo. Pero hacer que el sistema de facturacion en si funcione -- integracion con Stripe, gestion de pruebas gratuitas, ciclo de vida de suscripcion, manejo de webhooks -- tomo 366 lineas de Rust y dos migraciones de base de datos.
La arquitectura de facturacion
El sistema de facturacion tiene cuatro componentes:
- billing.rs (366 lineas) -- Interacciones con la API de Stripe: sesiones de checkout, portal de cliente, manejo de webhooks
- billing_checker.rs -- Tarea en segundo plano: recordatorios de prueba gratuita, degradaciones automaticas, verificaciones de estado de suscripcion
- Migracion 002 -- Anade columnas de facturacion a la tabla de usuarios
- Migracion 005 -- Anade la tabla de deduplicacion billing_reminders
El flujo es sencillo. Un usuario se registra y obtiene una prueba gratuita de 60 dias con acceso completo. Antes de que expire la prueba, recibe tres emails de recordatorio (a 10 dias, 3 dias y 1 dia). Si se suscribe a traves de Stripe Checkout, su plan se actualiza a "pro". Si no, el verificador en segundo plano los degrada a "free" cuando la prueba expira.
Toda la comunicacion con Stripe sucede a traves de webhooks. Nunca consultamos la API de Stripe para verificar el estado de suscripcion. En cambio, Stripe nos envia eventos -- suscripcion creada, actualizada, eliminada, pago fallido -- y actualizamos nuestra base de datos en respuesta.
Verificacion de firma de webhook
La parte mas critica en seguridad del sistema de facturacion es el endpoint de webhook. Verificamos cada solicitud usando el esquema de firma HMAC-SHA256 de Stripe:
rustfn verify_stripe_signature(
payload: &str,
signature_header: &str,
webhook_secret: &str,
) -> Result<()> {
// Parse t= and v1= from header
// Verify timestamp is within 5 minutes
// Compute expected HMAC-SHA256 signature
// Compare signatures
}El proceso de verificacion tiene tres pasos: parsear el encabezado, verificar la marca de tiempo (dentro de 5 minutos para prevenir ataques de replay), y verificar el HMAC.
El manejador de webhook: cuatro tipos de eventos
Manejamos exactamente cuatro eventos:
- checkout.session.completed -- Activa la suscripcion del usuario
- customer.subscription.updated -- Maneja cambios de estado (activo, prueba, vencido)
- customer.subscription.deleted -- Degrada a "free", envia email de cancelacion
- invoice.payment_failed -- Envia email de fallo, degrada despues del 4to intento fallido
La prueba gratuita de 60 dias
La prueba gratuita de 60 dias es nuestra mejor funcionalidad de crecimiento. Mas larga de lo que cualquiera espera, permite a los usuarios construir dependencia real del producto. La tasa de conversion de prueba a pago es mas alta que el promedio de la industria porque para el dia 60, los usuarios tienen 20-50 tareas activas que no quieren perder.
La economia: haciendo funcionar $1.99
A $1.99/mes, despues de las comisiones de Stripe ($0.36), obtenemos neto aproximadamente $1.63 por suscriptor mensual. Nuestro costo de infraestructura es aproximadamente $40/mes para un servidor dedicado. A $1.63 de ingreso neto por usuario por mes, necesitamos 25 usuarios pagando para alcanzar el punto de equilibrio en infraestructura.
El punto de precio de $1.99 funciona porque el costo marginal de cada usuario adicional es casi cero. Un binario Rust manejando tareas cron usa CPU insignificante.
Esta es la Parte 6 de una serie de 10 partes sobre la construccion de 0cron.dev.