Cristóbal Dotte
September 4, 2023
Descubre cómo construimos Bemmbo Pay, la primera billetera digital B2B en Chile.
Una de las razones por la cual partimos Bemmbo fue la cantidad excesiva de papeles de facturas que vimos en empresas tradicionales como ferreterías, comercializadoras y otras del rubro. Era impresionante la cantidad de veces que revisaban un montón de papeles, una y otra vez, para ver si no habían pagado de más, si la cuenta a la cual iban a transferir era la correcta o si había sido firmada (aprobada) por las áreas involucradas en el pago (y más verificaciones que depende de cada empresa).
También conocimos empresas más tecnológicas, como startups, que llevaban sus finanzas en Excel y generaban un archivo para subir al banco y así pagarles a sus proveedores. Sin embargo, el Excel crecía y crecía, y se perdía mucha información importante, y sobre todo, tiempo valioso de personas de finanzas que tenían que navegar haciendo la misma revisión que con papeles hacían las empresas mas tradicionales. Gente súper creativa y talentosa tenía que estar revisando constantemente errores en vez de estar viendo cual es el mejor proveedor para cada una de sus áreas, haciendo tarea más analítica de planificación, pero en cambio, se veían estancados en un montón de papeles y tareas repetitivas.
Me nacía la pregunta, por qué el pago entre empresas no podía ser igual de fácil que el de personas? Claro, una persona no tiene que pagar 1000 cosas en una semana, pero al menos con aplicaciones como MACH, Tenpo, entre otros, se puede transferir entre personas la comida de una junta de un fin de semana a la velocidad del internet sin problemas. Quizás el pago de empresas con el pago de personas no son comparables, pero no podía evitar pensar que se le había dado harto más cariño al pago de las personas que al de las empresas, se había optimizado hartos procesos, hasta llegar a solamente apretar dos botones (seleccionar contacto, el monto y transferir, aun que a veces ni el monto hay que seleccionar porque el mismo amigo te manda un cobro, con el monto pre-seleccionado, diciendo que son 10.000 por el asado del fin de semana pasado).
Pensándolo bien, lo clave es que se optimizaron un montón de procesos, lo unico que cambia es que para empresas son distintos. Para empresas está la centralización de los pago (proveedores, rendiciones y pagos variados), aprobación (entre personas solamente tienes que estar de acuerdo contigo mismo, en la empresas hay que estar de acuerdo entre áreas y con la gente de la $$), ejecutar el pago y luego contabilizarlo (si, las empresas tienen software contables para estados de resultados y cosas por el estilo).
En este blog, nos enfocaremos en la ejecución del pago y como logramos hacer que la experiencia sea lo más parecido a como pagan las personas hoy en día. Actualmente la ejecución del pago en Bemmbo se ve mas o menos así:
Seleccionas los pagos que quieres pagar (rendición de gastos, pago a proveedores, devolución a un cliente, etc).
Seleccionas tu billetera digital (Bemmbo Pay) y transfieres. Tratando de ser lo más simple posible.
Empresas como MACH y Tenpo tenían una billetera digital donde las personas mantienen un saldo, reciben dinero y transfieren. Nosotros queríamos lo mismo para las empresas, partimos diseñando en un bosquejo súper simple para aterrizar la idea y cómo pasar de nóminas engorrosas a una solución con un par de clicks. El bosquejo se veía algo así:
El bosquejo muestra 3 partes claves, primero es recibir fondos, mantener un saldo dentro de la aplicación y transferir fondos. Decidimos dar la primera iteración a esta solución, para los más interesados en el hands-on, ahora voy a detallar en alto nivel cómo abordamos las partes claves del bosquejo y creamos la primera versión de Bemmbo Pay.
Queríamos llevar un registro de los abonos, transferencias, y un saldo final de nuestra billetera digital. Este problema es conocido y ha sido solucionado por varias empresas tecnológicas como Starbucks, Uber, Tinder y -como les había mencionado antes- MACH y Tenpo. Como personalmente había trabajado en MACH, tenía una noción de cómo se hacía. La idea es digitalizar el libro contable que utiliza un contador para llevar los registros de entrada y salida de dinero de una entidad, en este caso, las empresas que usan Bemmbo. Nuestros amigos de Platanus, especificamente el crack de Jaime Bünzli, escribió sobre este concepto y les dejo el blog para que puedan leer más en profundidad. Yo les contaré cómo lo hicimos en Bemmbo. Como somos de re utilizar hartos recursos que generosamente los desarrolladores de AWS han programado para nosotros, buscamos si había algo pre-hecho pero de muy buena calidad (porque manejaríamos dinero, algo importante) y nos encontramos con QLDB: Una base de datos construida por AWS exclusivamente para problemas de transaccionabilidad.
La gracia de QLDB es que viene con conceptos claves de lo que significa tener un libro contable dentro de una aplicación: inmutabilidad, auditable (criptográficamente) y aguanta transacciones como concepto de escritura en la base de datos. Les explicaré brevemente porqué son importantes estos conceptos:
Sin más vueltas, decidimos implementarlo, pero como queríamos que fuese más simple, buscamos si alguien lo había hecho por nosotros y nos encontramos una versión ya implementada en Java, nuestro equipo la adaptó a Typescript y tarán: teníamos una primera versión de un libro contable, con saldo, transferencias y auditable con un esfuerzo ideal para una primera iteración de nuestra billetera digital.
Empezamos a hacer una prueba de la billetera digital con dos de nuestros clientes que más confianza nos tienen. Para modelar el ingreso de dinero, nos aliamos con nuestros amigos de Shinkansen (más adelante explicaré su importancia en nuestro MVP) y abrimos una cuenta en su banco partner. La idea es que nuestros clientes abonaran dinero a esta cuenta y nosotros lo modeláramos como que abono a su billetera, y así fue, esperábamos el abono en nuestra cuenta gracias a la magia de Fintoc y su API para escuchar actualizaciones de movimientos en una cuenta bancaria. La primera versión de la solución de abonos se veía de la siguiente forma:
La primera iteración hicimos validaciones de unicidad de los movimientos y alguno que otro caso borde. Suena a una solución simple (gracias a Fintoc), sin embargo, surgieron problemas que nos obligaron a iterar en cómo recibíamos los movimientos. Detallaré más en la segunda iteración.
Ok, teníamos una forma para recibir dinero en nuestra cuenta bancaria y además teníamos modelado -gracias a QLDB y nuestros amigos de AWS- las billeteras de nuestros clientes. Con saldo, registro de movimientos, auditable y robusta. Ahora tocaba mover el dinero hacia afuera. Aquí donde aparece otro partner clave en esta travesía: Shinkansen.
La historia con Shinkansen es particular porque fuimos su primer cliente y tuvimos la oportunidad de probar e iterar con ellos su producto en un estado bien inicial. Lo que hacen es proveer una API para mover dinero conectándose directamente con los cables de los bancos. Justo lo que nos faltaba, una API para mover dinero de nuestra cuenta (billetera de nuestros clientes, virtualizada con QLDB) a sus proveedores, colaboradores y otras empresas. La primera solución se veía más o menos así:
Luego de un par de intentos logramos hacer la primera transferencia usando Bemmbo en tiempo real, miren que feliz estábamos
Todo lo mencionado anteriormente fue una primera iteración de nuestra billetera digital que fue utilizada por clientes con una confianza tremenda en nosotros. Para poder disponibilizar esta billetera a todos nuestros clientes, antes tuvimos que pasar por varios aprendizajes que los resumiré a continuación.
Estos aprendizajes no los hubiésemos tenido si no nos lanzábamos con una primera iteración y la confianza de nuestros primeros clientes. Por otro lado, la habilidad de poder iterar de manera veloz fue clave también y eso se lo atribuyo a dos cosas: nuestra infraestructura nos permite tomar cosas pre-hechas y avanzar muy rápido (en este blog pueden leer más sobre nuestra infraestructura) y además tener un servicio al cliente que de seguridad a los clientes que sea lo que sea que pase, se lo solucionaremos y rápido.
Un último factor a considerar para poder haber creado Bemmbo Pay y haberle podido dar una experiencia más cercana a los pagos entre personas a nuestros clientes, fue el gran equipo que estuvo detrás de esto. Si bien todo el equipo aportó su granito de arena, Rodrigo Valdes y Vicente Manriquez fueron los que llevaron un simple bosquejo a una solución robusta utilizada por múltiples clientes. Además de su tremenda calidad técnica, destaco mucho su capacidad de iterar y de estar comprometidos con la calidad de experiencia de pago que tienen nuestros clientes. ¡Son unos grandes!
Si bien ahora nuestros clientes pueden pagar en un par de clicks, nos falta mucho por avanzar, pero tenemos claro una cosa: Seguiremos creando el software donde los equipos de finanzas de LATAM se transformen en súper equipos y no pararemos hasta lograrlo.
Cualquier duda no duden en escribirme a cristobal@bemmbo.com