GeekTotal Billing, CRM y facturación

CRM y facturación modular para Ecuador, con cobranza automática y portal de clientes, que corre en hosting cPanel.

Escritorio de GeekTotal Billing con lo facturado, cobrado y vencido del mes, junto a las pantallas de impuestos y plantillas de correo

Qué se necesitaba

Un CRM y sistema de facturación al estilo WHMCS, adaptado a Ecuador, para vender servicios recurrentes y cobrarlos sin trabajo manual, que además se pudiera instalar en el hosting más usado en el país.

Qué construí

Es un proyecto propio que sigo desarrollando y todavía no está en producción. Es un sistema modular con Laravel y Filament. Tiene un panel para el equipo y un portal para los clientes.

  • Clientes: personas o empresas, con validación de cédula, DNI y RUC de Ecuador, correos adicionales para facturación y acceso al portal.
  • Catálogo: productos de pago único o recurrentes, con precios por moneda y ciclo, costo de instalación, impuestos por producto y paquetes con descuento.
  • De la proforma al cobro: la proforma se envía por correo con PDF y enlace, el cliente la aprueba y se convierte en factura. La factura se numera al emitirse y guarda los datos del cliente y el tipo de cambio de ese momento.
  • Pagos: pagos parciales, sin permitir sobrepagos. Pagos en línea con PayPhone y PayPal, y transferencias o depósitos con comprobante que queda pendiente de revisión. Si una factura ya tiene comprobante autorizado, se corrige con una nota de crédito.
  • Renovaciones y cobranza: la factura de renovación se genera sola unos días antes del vencimiento, sin duplicarse. Hay recordatorios antes, el mismo día y después de la fecha, suspensión del servicio por mora y reactivación al pagar.
  • Impuestos y moneda: los impuestos se configuran por producto y se calculan por línea con el redondeo del SRI. La moneda por defecto es USD, con soporte multi-moneda.
  • Correo: plantillas editables, SMTP configurable desde el panel y registro de cada envío.

Módulos

Las integraciones son módulos: una carpeta con su configuración y una clase que cumple un contrato. Hoy hay pasarelas de pago (transferencias, PayPhone y PayPal) y un módulo de facturación electrónica que se puede cambiar según el servicio que se use. También existe el contrato para módulos de aprovisionamiento. Los eventos del sistema (factura pagada, servicio suspendido, comprobante emitido) permiten agregar acciones sin tocar el núcleo.

La lógica de negocio está en servicios separados de la interfaz y se prueba con Pest.

Seguridad

  • Roles: administrador, operador y contador de solo lectura, aplicados en cada recurso y acción.
  • Verificación en dos pasos: con códigos TOTP, opcional para los usuarios del panel.
  • Sesiones separadas: el panel interno y el portal de clientes no comparten sesión, y el portal solo muestra lo que es de cada cliente.
  • Enlaces firmados: sirven para ver una factura, pagarla o subir un comprobante sin iniciar sesión, y no se pueden adivinar ni modificar.
  • Pagos idempotentes: un mismo pago en línea no se registra dos veces aunque la pasarela avise varias veces.
  • Cifrado: las claves de las integraciones y la configuración sensible se guardan cifradas.
  • Archivos privados: los comprobantes de pago y los documentos fiscales se entregan a través de la aplicación, no desde carpetas públicas.
  • Auditoría: se registra el historial de cambios para saber quién modificó qué.
  • Montos: se guardan con precisión decimal y se calculan con aritmética exacta.

Instalación

Se instala con un solo comando y funciona en cPanel: colas, caché y sesiones van en la base de datos, y un único cron ejecuta todas las automatizaciones. No necesita Redis, Node ni Supervisor.