Saltearse al contenido
GitHub

Montos

Los montos representan valores monetarios y son fundamentales para cada operación de Open Payments. Ya sea que esté creando un pago entrante, solicitando una cotización o rastreando el progreso de un pago, cada monto consta de tres componentes clave: un valor numérico value, un código de activo assetCode y una escala de activo assetScale. Comprender estos componentes es crucial para desarrollar aplicaciones de Open Payments.

Para maximizar la precisión y evitar errores de redondeo en los cálculos financieros, Open Payments utiliza tipos de datos numéricos sin decimales para representar valores. En el contexto de los lenguajes de programación, esto significa que Open Payments emplea números enteros sin signo de 64 bits para los montos monetarios, en lugar de números de punto flotante.

Un ejemplo de valor es el número 10000.

Los códigos de activo identifican el tipo de moneda o activo que se utiliza en un pago y deben seguir la norma ISO 4217 para la representación de monedas.

Un ejemplo de assetCode ISO 4217 es USD, que representa el dólar estadounidense.

Una escala de activo indica la cantidad de posiciones decimales que utiliza una moneda. Es como especificar si se está contando en dólares, céntimos o unidades más pequeñas.

Las escalas de activo son números entre 0 y 255 que señalan la precisión decimal.

En el caso de USD con una assetScale de 2, el monto a mostrar de $100.00 se almacena y representa como 10000 céntimos.

Así, la fórmula de conversión es la siguiente:

valor10assetScale=monto a mostrar\frac{\text{valor}}{10^{\text{assetScale}}} = \text{monto a mostrar}

Utilizando el ejemplo anterior, la fórmula se ve así:

10000102=10000100=$100.00\frac{10000}{10^2} = \frac{10000}{100} = \$100.00

MonedaCódigo de activoEscala de activoMonto enteroValor existente
Dólar estadounidenseUSD210000$100,00
EuroEUR22550€25,50
Libra esterlinaGBP23250£32,50
Yen japonésJPY01000¥1000
Pesos mexicanosMXN218500$185,00
Dinar jordanoJOD31000د.ا1000
Rand sudafricanoZAR21500R15,00

Utilizando los tres componentes necesarios de value, assetCode y assetScale, USD 100 se representarían en Open Payments usando la siguiente estructura:

{
"value": "10000",
"assetCode": "USD",
"assetScale": 2
}

Esta estructura consistente posibilita pagos en múltiples monedas, cálculos precisos y una integración fluida entre diferentes ASE Entidad que administra la cuenta .