Caso

Una plataforma de facturación para SaaS

Suscripciones, planes y cargos automáticos con un cálculo preciso del dinero y tareas idempotentes.

Año
2024
Cliente
Producto SaaS (B2B)
Rol
Senior Backend Developer
U

Descripción

La plataforma de facturación gestiona las suscripciones de un producto SaaS: planes de precios, períodos de prueba, mejoras y rebajas con recálculo proporcional, renovaciones automáticas, facturas y documentos de cierre. La implementé en Laravel con un cálculo estricto del dinero en unidades mínimas enteras y cálculos mediante bcmath, eliminando cualquier error de redondeo. Los cargos y renovaciones automáticos se realizan mediante tareas en cola idempotentes diseñadas para los reintentos: cada operación está protegida por una clave única y una comprobación de estado para que nunca se cobre dos veces a un cliente. El planificador genera los cargos a diario y lanza las renovaciones con protección contra el solapamiento. Todas las transiciones de estado de las suscripciones se registran para la auditoría, y la integración con el proveedor de pagos se basa en webhooks con deduplicación. PostgreSQL almacena los datos con un esquema bien pensado y restricciones de integridad que garantizan la consistencia de los registros financieros.

Problema

La facturación hecha en casa permitía errores de redondeo durante el recálculo proporcional, a veces cobraba a los clientes dos veces durante los fallos y no ofrecía un historial transparente de los cargos para el soporte y la contabilidad.

Solución

Pasé todos los cálculos monetarios a unidades mínimas enteras y bcmath, convertí los cargos en tareas en cola idempotentes con deduplicación, añadí un registro de transiciones de estado y la generación automática de cargos mediante el planificador.

Resultados

Los errores de redondeo y los cargos dobles se eliminaron por completo, las disputas de facturación se redujeron en un 70%, el cierre mensual para la contabilidad se aceleró al doble y la plataforma da servicio a más de 12.000 suscripciones activas.

Tecnologías