Integración de pagos · Colombia

Wompi, Bancolombia y tu pasarela de pagos,
hechos por alguien que ya se los comió.

Ayudo a founders técnicos a integrar pagos en Colombia sin repetir los errores que cuestan plata real: montos mal calculados, webhooks que se pierden en silencio, secretos desincronizados entre servicios. Los cuatro casos de abajo son reales, de un ecosistema fintech propio en producción — no un curso, cicatrices.

Contame tu integración → Ver los bugs reales ↓

Casos reales

Cuatro bugs que ya encontré y arreglé, para que no te toque a ti

De un ecosistema fintech propio en Cloudflare Workers: wallet, exchange, trading, pagos con Wompi/Bancolombia/Truora en producción.

01 · El ×100 que cobra 100 veces de más Dinero real

El problema

Wompi recibe el monto en COP tal cual — el peso no tiene subunidades. Tres lugares distintos del código multiplicaban por 100 "porque cents", cobrando $4.000.000 en vez de $40.000. Volvió a pasar semanas después, esta vez citando mal la propia documentación de Wompi.

Por qué zafó tanto tiempo

El test que debía atraparlo comparaba un substring del URL — "40000" es substring de "4000000", así que el test pasaba con o sin el bug. Se corrigió para comparar el valor exacto parseado.

02 · Webhooks reales bloqueados con 401, silenciosamente Integración

El problema

Un bypass de autenticación para el webhook de Wompi (que obviamente no manda JWT) nunca se generalizó a Bancolombia ni a Truora. Sus confirmaciones reales de transferencia y verificación KYC se rechazaban antes de llegar a verificar su propia firma HMAC.

Cómo se encontró

Corriendo por primera vez una suite de tests que llevaba meses sin poder ejecutarse por un compatibilityDate faltante y dos tablas sin crear en el schema de prueba. Los tests ya estaban escritos esperando el comportamiento correcto.

03 · Un secreto, siete servicios, uno desincronizado Arquitectura

El problema

JWT_SECRET tiene que ser idéntico en los 7 workers que verifican sesión. Uno quedó con un valor distinto y, encima, un bug de encoding decodificaba el secreto como base64 antes de firmar — ningún valor de secreto lo iba a arreglar.

El impacto

El wallet completo no podía autenticar contra exchange, transactions, economy ni trader. Se corrigió el código y se rotaron los 7 secretos en el mismo cambio — rotar uno sin los demás tumba todo otra vez.

04 · Un 403 que llevaba semanas sin causa raíz Producto

El problema

GET /accounts del servicio de pagos a terceros de Wompi devolvía 403 "identity-based policy". Se asumió configuración suelta durante semanas.

La causa real

"Pagos a Terceros" es un producto aparte del checkout normal en Wompi, con su propio plan y modalidad — nunca se había activado. No era un dato faltante, era un servicio apagado.

Con qué trabajo

Stack real, no de manual

Wompi (checkout + payouts)
Bancolombia (transferencias)
Truora (KYC)
Cloudflare Workers
D1 / SQLite
JWT multi-servicio
Webhooks + HMAC
TypeScript / Python

Cómo trabajo

Sin caja negra

01

Verifico en vivo, no solo leo código

Un test en verde no prueba que el dinero se movió bien. Reviso contra el proveedor real cuando el monto lo amerita.

02

Nunca invento un valor de config

Si un 403 o un ID faltante no tiene explicación clara, la busco — no se rellena con un UUID inventado.

03

Te dejo el porqué, no solo el fix

Cada corrección queda documentada: qué pasaba, por qué, y qué prueba evita que vuelva a pasar.

Trabajemos juntos

¿Estás integrando pagos en Colombia?

Contame en qué estás y en qué se traba — auditoría puntual de una integración, o construir la pieza de pagos completa.

davidslt21@gmail.com