Back to 0fee
0fee

Conversión de divisas en más de 25 monedas

Cómo 0fee.dev maneja la conversión de divisas en más de 25 monedas con APIs gratuitas, caché y detección de localización. Por Juste A. Gnimavo y Claude.

Juste A. Gnimavo (Thales) & Claude | March 27, 2026 3 min 0fee
EN/ FR/ ES
currencyconversioninternationalization

Un orquestador de pagos que sirve a más de 200 países debe manejar la conversión de divisas como una preocupación de primera clase. Cuando un comerciante en Abiyán cobra 10.000 XOF y quiere ver sus ingresos en USD, o cuando un desarrollador keniata cobra su API en KES pero paga comisiones de plataforma en USD, la capa de conversión debe ser rápida, precisa y resiliente.

0fee.dev soporta más de 25 monedas en África, Europa, Asia y las Américas. Así es como construimos el sistema de conversión.

Separación de moneda origen/destino

La decisión de diseño fundamental fue separar las monedas de origen y destino a nivel de transacción. Cada transacción registra ambas, más la tasa utilizada, para auditabilidad completa.

La API de divisas: fawazahmed0/currency-api

Para tasas de cambio, usamos la API gratuita fawazahmed0/currency-api -- un proyecto de código abierto que agrega tasas de múltiples fuentes y las publica diariamente mediante CDN.

¿Por qué una API gratuita en lugar de un servicio de pago como Open Exchange Rates o XE? Costo cero, precisión suficiente para nuestro caso de uso (las tasas diarias son suficientes), entrega respaldada por CDN con casi 100 % de disponibilidad, y sin claves API que gestionar.

Caché de 24 horas con respaldo en localStorage

Las tasas de cambio no cambian por segundo para nuestros propósitos. Cacheamos las tasas por 24 horas, con una estrategia de caché multicapa:

La cadena de respaldo es: caché en memoria -> localStorage -> llamada API -> caché expirada -> tasas codificadas. Un comerciante nunca debería ver un error de "tasa no disponible".

Tasas de respaldo codificadas

Como último recurso absoluto, mantenemos tasas codificadas que se actualizan manualmente cada trimestre. Incluyen soporte para tasa inversa y conversión a través de USD para pares no directos.

Selector de moneda en el encabezado del panel

El encabezado del panel incluye un selector de moneda que permite a los comerciantes ver todos los valores monetarios en su moneda preferida. Cuando la moneda seleccionada cambia, todos los valores del panel -- saldo, montos de transacciones, gráficos de ingresos, totales de facturas -- se reconvierten usando las tasas cacheadas.

Detección de localización del navegador

En la primera visita, detectamos la localización del usuario y establecemos una moneda predeterminada sensata basada en su configuración regional del navegador. Los desarrolladores francófonos de África Occidental obtienen XOF, los nigerianos NGN, los keniatas KES, etc.

Lecciones aprendidas

  1. Gratuito no significa poco fiable. La API de divisas fawazahmed0 ha sido más estable que algunas alternativas de pago que evaluamos.
  1. Cachea agresivamente. Las tasas de cambio para nuestro caso de uso no necesitan actualizaciones en tiempo real. El caché de 24 horas elimina el 99 % de las llamadas API.
  1. Siempre ten un respaldo. El caché de tres capas (memoria, localStorage, codificado) significa que la conversión de divisas nunca falla.
  1. Almacena la tasa con la transacción. Sin la tasa de cambio registrada en el momento de la transacción, la auditoría retroactiva es imposible.
  1. El panorama de divisas de África es complejo. XOF y XAF tienen el mismo valor (ambos vinculados al EUR) pero son monedas diferentes usadas en zonas económicas diferentes. Tratarlas como intercambiables es un error.

Este artículo es parte de la serie "Cómo construimos 0fee.dev". 0fee.dev es un orquestador de pagos que cubre más de 53 proveedores en más de 200 países, construido por Juste A. GNIMAVO y Claude desde Abiyán sin ingenieros humanos. Sigue la serie para conocer la historia completa de la construcción.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude zerosuite

Funciona, y no está terminado

El director recorrió él mismo todos los canales de senndo — cinco canales, de uno en uno y en campaña, la importación, las estadísticas, un reembolso, la API — y todo respondió. El archivo de seguimiento seguía diciendo que no, y la única línea que bloqueaba no era código: era un documento que había dejado de ser cierto en silencio. Cuatro afirmaciones ciertas al escribirse y falsas al leerse, y las guardas legibles por una máquina que ahora atrapan cada una de esas formas.

12 min Sep 14, 2026
senndocpaaslaunch-readinessdocumentation +8
Thales & Claude zerosuite

El navegador en manos de Claude: manejar el propio Chrome del CEO

Claude-in-Chrome permite que una sesión de Claude Code maneje el navegador real del director — mismo perfil, mismas sesiones abiertas. Qué hace la herramienta en realidad, por qué es mejor que pedirle a una persona que haga clic y lo cuente, y dónde el humano sigue ganando. Anclado en el día en que Claude recorrió un alta de cliente completa en la consola de producción de senndo, con mensajes facturados incluidos.

9 min Aug 18, 2026
claude-in-chromebrowser-automationclaude-codeclaude-fable-5 +9
Thales & Claude deblo

El segfault que no era nuestro: cómo lanzamos el tracking del día de lanzamiento de Déblo en la noche del despliegue — analítica condicionada por entorno, atribución nativa de las tiendas, tres bugs que el compilador no podía ver y un build sin memoria que diagnosticamos en lugar de revertir

El 1 de julio de 2026 — el día del lanzamiento — el riesgo nunca fue el texto. Era que las campañas de pago salieran a ciegas. Este es el build-log de cómo desplegamos la analítica y la atribución de instalaciones de Déblo como código en la noche del lanzamiento: etiquetas GA4, Meta y LinkedIn condicionadas por entorno que se despliegan sin riesgo antes de que existan las cuentas publicitarias; atribución enrutada por los canales nativos de las tiendas en lugar del pixel web; una auditoría adversarial que atrapó tres bugs que tanto el typechecker como el build dieron por buenos; y un despliegue en Easypanel que hizo segfault en el primer build — que demostramos que no era nuestro código antes de tocar una sola línea.

18 min Jul 1, 2026
deblolaunch-dayclaude-opus-4.8claude-code +26