Banking as a Service: una plataforma bancaria construida de principio a fin
Una plataforma multi-entidad con la que una empresa da de alta sus sociedades en Europa y Estados Unidos, cobra a sus clientes con enlaces de pago y facturas, aprueba y paga gastos de proveedores desde sus cuentas bancarias y lo mantiene todo sincronizado con su contabilidad. Como CTO fraccional de CoinPanel, la diseñé y construí completa.
- Mi papel
- CTO fraccional, arquitectura y desarrollo completo
- Cliente
- CoinPanel, Suecia
- Stack
- Python, FastAPI, PostgreSQL, React 19, Cloud Run
- Integraciones
- Stripe Connect, Revolut, Xero, Wise

- 187operaciones de API documentadas
- 6integraciones financieras y contables
- 3entornos: test, sandbox y producción
- EU + USentidades legales desde un mismo backend
El reto
Pasar de un producto de trading a una plataforma que otras empresas pudieran integrar para cobrar, pagar y conciliar, con la seguridad y la trazabilidad que exige el sector financiero, operando en dos jurisdicciones y sin un equipo grande detrás.
Qué construí
- Backend en Python con FastAPI y PostgreSQL: un monolito modular con rutas separadas por audiencia (empresa, cliente final, pagos públicos, webhooks).
- Cobros con Stripe Connect: cada entidad legal es una cuenta conectada, con credenciales separadas para Europa y Estados Unidos.
- Pagos y tesorería con Revolut Business y Wise, incluidos borradores que requieren confirmación humana antes de ejecutarse.
- Sincronización bidireccional con Xero y Hiveage, reversible factura a factura, y lectura automática de facturas con OCR.
- Gastos de proveedor con flujo de aprobación por roles y pista de auditoría completa.
- Consola de desarrollador para clientes: API keys, webhooks firmados y documentación OpenAPI.
- Frontend en React 19, TypeScript y Vite; infraestructura en Google Cloud con Terraform y CI/CD en GitHub Actions.
La plataforma



Seguridad y trazabilidad
Webhooks verificados
Firma comprobada en cada webhook entrante (Stripe, Revolut, Wise) y firma HMAC en los salientes, con protección frente a reenvíos.
Secretos fuera del código
Credenciales en Secret Manager, tokens OAuth de terceros cifrados en reposo y API keys guardadas solo como hash.
Control de acceso por roles
Cinco niveles de permiso declarados en cada endpoint, y tokens que no sirven fuera de su audiencia.
Doble control en pagos
Un proveedor no se puede pagar hasta que alguien aprueba sus datos bancarios, y queda registrado quién y cuándo.
Trazabilidad de extremo a extremo
Un identificador por petición en todos los logs estructurados: cualquier operación se sigue desde la respuesta HTTP.
Protección SSRF
Las URLs de webhook de los clientes se validan contra redes privadas antes de cada entrega.
Decisiones técnicas
Outbox para los webhooks
Los eventos a partners se encolan y se entregan con reintentos: un partner caído nunca bloquea ni pierde un pago.
Versión de código en el token
Cambiar una constante invalida todas las sesiones al instante, sin tabla de revocación ni consultas extra.
El sandbox como producto
El mismo contenedor sirve los tres entornos; en sandbox activa la documentación, límites y datos demo para una demo pública autoservicio.
Resultado
Una plataforma BaaS en producción, con releases etiquetadas y auditables, un sandbox abierto que usan clientes, ventas e inversores, y la base técnica que CoinPanel construyó sobre su experiencia en cripto-trading en tiempo real.