Esta guía te explica cómo enviar descuentos y cargos en la API, tanto a nivel de detalle en lines como a nivel de factura.1. Estructura general#
Tanto discounts como charges se envían como arreglos de objetos con esta estructura:name: nombre o descripción del descuento o cargo.
type: forma de aplicación del valor.
rate: porcentaje aplicado, solo cuando type es P.
amount: valor monetario del descuento o cargo.
2. Significado de type#
type | Significado | Cómo interpretarlo |
|---|
P | Porcentaje | El ajuste se define por porcentaje en rate sobre la base correspondiente. |
F | Valor fijo | El ajuste se define por valor fijo en amount. |
1.
Si usas P, informa rate con el porcentaje y amount con el valor resultante.
2.
Si usas F, rate debe ir en 0 y el valor aplicable va en amount.
3. A nivel de detalle (lines)#
Usa este nivel cuando el descuento o el cargo aplica solo a una línea específica del documento."lines": [
{
"charges": [
{
"name": "Mi cargo",
"type": "F",
"rate": 0,
"amount": 800
}
],
"discounts": [
{
"name": "Mi descuento",
"type": "P",
"rate": 10,
"amount": 500
}
]
}
]
Interpretación del ejemplo:La línea tiene un cargo fijo de 800.
La misma línea tiene un descuento del 10 % cuyo valor calculado es 500.
4. A nivel de factura#
Usa este nivel cuando el descuento o el cargo aplica al documento completo, no a una línea puntual.{
"charges": [
{
"name": "Mi cargo",
"type": "F",
"rate": 0,
"amount": 800
}
],
"discounts": [
{
"name": "Mi descuento",
"type": "P",
"rate": 10,
"amount": 500
}
]
}
Interpretación del ejemplo:La factura completa recibe un cargo fijo de 800.
La factura completa recibe un descuento del 10 % con valor 500.
5. Diferencia entre nivel detalle y nivel factura#
Nivel detalle (lines[].discounts y lines[].charges): aplica solo al ítem donde lo informas.
Nivel factura (discounts y charges en raíz): aplica al total del documento.
Puedes usar ambos niveles en el mismo documento cuando el negocio lo requiera, siempre que los valores sean coherentes con los totales.6. Propinas (tip)#
La propina se informa en el objeto tip y solo aplica a nivel de factura.{
"tip": {
"base": 50000,
"rate": 10,
"amount": 5000
}
}
Solo se permite manejo por porcentaje.
La propina no puede ser mayor al 10 % del valor total de la factura.
Este cargo no debe enviarse a nivel de línea.
base corresponde al valor sobre el cual se calcula la propina.
rate corresponde al porcentaje aplicado.
amount corresponde al valor calculado de la propina.
Interpretación del ejemplo:La base para la propina es 50000.
La propina se calcula al 10 %.
El valor de la propina es 5000.
7. Validaciones recomendadas#
Acepta solo type en P o F.
Si type es P, valida rate mayor que 0.
Si type es F, permite rate en 0.
Valida que amount corresponda al cálculo esperado cuando type sea P.
Si envías tip, valida que rate sea mayor que 0 y menor o igual a 10.
Si envías tip, valida que amount corresponda al porcentaje aplicado sobre base.
Si envías tip, valida que exista solo a nivel de factura.
8. Errores comunes#
Enviar type diferente de P o F.
Enviar type en P con rate en 0.
Enviar valores en detalle y factura sin reflejarlos correctamente en los totales.
Confundir amount que es el valor monetario con rate que es el porcentaje.
Enviar propina dentro de lines.
Enviar una propina superior al 10 % del total de la factura.
Enviar propina como valor fijo en lugar de porcentaje.
9. Checklist rápido#
Definiste correctamente si el ajuste aplica por línea o por factura.
type corresponde al comportamiento esperado, P o F.
rate y amount son coherentes.
Los ajustes quedaron reflejados en los totales finales del documento.
Si envías tip, está solo a nivel factura y no supera el 10 %.
Modificado en 2026-03-25 20:25:24