bitcoin · Principiante

Convertir MXN a sats sin perder precisión

Flujo reproducible para cotizar Bitcoin, fijar el precio de una venta y redondear sats correctamente.

El problema

Un comercio fija precios en MXN, pero una invoice Lightning expresa el importe en millisatoshis. La conversión debe usar una cotización identificable y evitar decimales binarios.

Implementación

Prerequisitos

  • Una fuente de precio BTC/MXN.
  • Un tipo decimal o enteros para importes monetarios.
  • Un timeout y política de precio vencido.

La relación básica es:

const SATS_PER_BTC = 100_000_000;
const sats = Math.ceil((amountMxn / btcMxn) * SATS_PER_BTC);

En producción, reemplaza number por una librería decimal. Guarda amountMxn, btcMxn, sats y quotedAt; así la venta puede auditarse aunque cambie el mercado.

Validación

Prueba importes pequeños, precios con decimales, respuestas vencidas y valores cero. Nunca genera una invoice si falta cotización o excede la edad permitida.

Errores comunes

  • Recalcular sats después de mostrar el QR.
  • Redondear hacia abajo y cobrar menos.
  • No guardar la cotización usada.

Conclusión

Fijar el precio es parte del checkout, no una operación visual. Una cotización guardada hace que el resultado sea reproducible.

Sigue construyendo

Explora el proyecto detrás de estas decisiones.

Ver Lightning PoS