Saltar al contenido
VeloraBlog
← Todos los artículos

12 de junio de 2026

¿Cómo formato un monto en pesos argentinos (ARS) correctamente para mostrar al usuario?

En Argentina el separador decimal es la coma y el separador de miles es el punto: $1.234.567,89 es el formato estándar. En JavaScript: new Intl.NumberFormat('es-AR', { style: 'currency', currency: 'ARS' }).format(monto) genera el formato correcto automáticamente.

Implementaciones verificadas

// JavaScript — Intl estándar ECMAScript
const formatter = new Intl.NumberFormat('es-AR', {
  style: 'currency',
  currency: 'ARS',
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
});
formatter.format(1234567.89);
// → "$\u00a01.234.567,89"

// Sin símbolo (para campos de input)
new Intl.NumberFormat('es-AR', {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
}).format(1234567.89);
// → "1.234.567,89"
# Python — babel
from babel.numbers import format_currency
format_currency(1234567.89, 'ARS', locale='es_AR')
# → '$\xa01.234.567,89'

Gotchas críticos

Al parsear input del usuario: si el usuario ingresa 1.234,56, no podés pasarlo directo a parseFloat() (devuelve 1.234, trunca los decimales). Hay que normalizar primero: reemplazar . por ` y , por .` antes de parsear.

Para WSFE/ARCA: el XML espera montos con punto decimal y sin separador de miles — 1234567.89. El formato display y el formato API son opuestos. Siempre convertí antes de enviar a ARCA.