# Montos y fechas

Montos como texto decimal, monedas y zona horaria.

Los montos son texto decimal, nunca números: `"1500.00"`. Las fechas son ISO 8601 en UTC. Los números de punto flotante pierden centavos; el texto no.

## Montos

- Hasta dos decimales. `"1500"`, `"1500.5"` y `"1500.50"` son válidos.
- Sin ceros a la izquierda, signo ni separadores de miles.
- CLP, JPY y PYG no llevan decimales: enviarlos responde `400 invalid_request`.
- En respuestas, un monto de salida puede ser negativo o traer más decimales. Sin ceros de relleno y con mínimo dos decimales: `"1500000.555"`, `"10.00"`.
- Monto y moneda llegan juntos: sin moneda segura, ambos son `null`.

## Monedas

Códigos en mayúsculas de 3 a 5 letras, como `MXN`, `USD` o `USDC`.

## Fechas

UTC con milisegundos: `2026-11-04T18:00:00.000Z`. El `created_at` del sobre de un webhook trae microsegundos: interpreta las fechas como ISO 8601, sin fijar el número de decimales. Convierte a tu zona al mostrarlas. Los filtros `from` y `to` de [`GET /v1/movements`](/docs/operaciones/listar-movimientos/) usan el mismo formato; `from` se incluye y `to` no.

## Campos que pueden ser nulos

Muchos campos de respuesta son `null` cuando el dato aún no existe. Un `final_amount` nulo no significa cero.

## Errores comunes

- Serializar el monto como número en JSON: responde `400 invalid_request`.
- Comparar montos como texto: `"10.00"` y `"10.000"` son iguales. Conviértelos a un tipo decimal.
- Asumir exactamente dos decimales en una respuesta.

## Qué sigue

[Versionado](/docs/versionado/).
