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.
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.
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.
Campos de monto
En el pedido: subtotal, taxTotal, total, shippingTotal, discountTotal, amountPaid.
La identidad que siempre se cumple es:
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.
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.
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.