El problema
Muchos negocios viven de cobrar en cuotas: la pensión del colegio, la cuota del lote, la mensualidad del gimnasio, el tratamiento en partes de una clínica. Y casi todos cobran igual: una hoja de cálculo, un recordatorio escrito a mano por WhatsApp y un comprobante de Yape que alguien revisa en la noche para descontar del saldo.
Lo que construí
Un motor de cobranza que hace el recorrido completo:
- Alta del deudor, con su cronograma de cuotas y su regla de mora.
- Recordatorio por WhatsApp, con un enlace propio.
- Un portal donde el deudor entra con su DNI y un código, sin crear cuenta, y ve su estado de cuenta.
- Un QR interoperable, que se paga con Yape, Plin o la app de cualquier banco.
- El saldo baja solo cuando el pago se confirma.
Del otro lado, un panel con la cartera ordenada por atraso, la ficha de cada deudor y el historial de recordatorios.
Cómo está hecho
Un monorepo en TypeScript: la API en NestJS, el panel y el portal en Next.js, y PostgreSQL con Prisma.
El dinero no se redondea, se reparte. Todo se calcula en céntimos enteros: cuando una deuda no se divide exacta entre las cuotas, el residuo va a la última, nunca se pierde. La mora corre sobre el saldo, con interés simple, y cada pago se imputa en orden: primero la mora, luego el interés y al final el capital.
- El aislamiento entre clientes lo impone la base de datos, no el código: Row Level Security con tres roles. Un error en una consulta no puede mostrar la cartera de otro negocio.
- El QR sigue el estándar EMVCo, con su código de verificación, y el aviso de pago llega por un webhook firmado e idempotente: el mismo aviso dos veces no descuenta dos veces.
- Los recordatorios prefieren callar. Uno por barrido, cuatro como máximo y solo entre las 8 y las 20 horas, como pide el Código de Protección al Consumidor.
- La API se niega a arrancar si detecta secretos de desarrollo en producción.
Estado hoy
Pausado. El motor funciona de punta a punta en local, con 300 pruebas en verde, pero no está desplegado: falta conectar un proveedor de pagos real, el monitoreo de errores y el comprobante electrónico, que llegaría por Comprobia. No tiene clientes.
Las pantallas de esta página son un prototipo de diseño con datos de demostración: siguen los estados, las reglas de mora y de avisos y los textos del código real, pero el negocio, las personas y los montos son inventados.
Lo que aprendí
Que en cobranza el error caro no es técnico: es cobrar mal. Un céntimo que se pierde en el redondeo o un recordatorio a las once de la noche cuestan más confianza que cualquier caída del servidor. Por eso las reglas de dinero y de contacto tienen más pruebas que todo lo demás.



