> ## Documentation Index
> Fetch the complete documentation index at: https://docs.riqra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Montos y moneda

> Cómo se representan los importes en la API.

Los importes se representan como un **string decimal**, no como un número. Cada importe va
acompañado de `currencyCode`, el código de moneda en formato **ISO 4217**.

```json theme={null}
{
  "currencyCode": "PEN",
  "subtotal": "100.00",
  "taxTotal": "18.00",
  "total": "118.00"
}
```

## Por qué string

Un string decimal evita los errores de redondeo de los números de punto flotante. Parsea el
valor con una librería de decimales, no con `float`.

<Warning>
  La escala no está normalizada: el mismo importe puede llegar como `"12"`, `"12.0"` o `"12.00"`.
  No compares importes como texto ni asumas una cantidad fija de decimales. Conviértelos a decimal
  antes de comparar u operar.
</Warning>

## Campos de monto

En el pedido: `subtotal`, `taxTotal`, `total`, `shippingTotal`, `discountTotal`, `amountPaid`.

La identidad que siempre se cumple es:

```
subtotal + taxTotal = total
```

* `subtotal` es la base neta de **todo** (productos + envío), después de descuentos. Equivale a
  `total − taxTotal`.
* `taxTotal` es el **total de impuestos** del pedido.
* `total` es el monto pagado.

<Warning>
  `shippingTotal` y `discountTotal` son **informativos**: reflejan el costo de envío y el descuento
  tal como los vio el comprador, y **ya están incluidos** en `subtotal`/`total`. No los sumes para
  reconstruir el total — la única identidad es `subtotal + taxTotal = total`.
</Warning>

`shippingTotal` es el costo de envío tal como lo vio el comprador (con o sin impuesto, según cómo
tu tienda muestre los precios).

`discountTotal` es el descuento de productos y de pedido tal como lo vio el comprador. Los
descuentos de **envío** no van aquí: se reflejan como un `shippingTotal` menor y aparecen en
`promotions`.

`promotions` lista las promociones aplicadas: `id`, `code`, `title`, `class` (`GOODS` / `ORDER` /
`SHIPPING`) y `amount`. El `id` es la clave con la que cada línea referencia la promoción.

En cada línea: `price`, `listPrice`, `discountTotal`, `discountAllocations`, `subtotal`, `taxTotal`, `total`.

En cada línea se cumple `subtotal + taxTotal = total`.

`price` es el precio unitario cobrado, **antes de promociones**. `listPrice` es el precio de lista
de la variante al momento del pedido. Es `null` cuando la variante no tiene precio de lista.
`discountTotal` es el descuento por **promociones** de la línea (la diferencia entre `listPrice` y
`price` es una negociación aparte, no va aquí). `taxTotal` es el impuesto de **productos** de la
línea; la suma de `taxTotal` de las líneas no equivale al `taxTotal` del pedido cuando el envío
tiene impuesto (el del pedido también incluye el impuesto del envío).

`discountAllocations` desglosa el `discountTotal` de la línea por promoción: cada entrada tiene
`promotionId` (referencia a `promotions[].id`) y `amount`. Las asignaciones de una misma promoción
suman exactamente su `amount`.

Todos comparten la misma `currencyCode` del pedido.
