Cálculos: impuesto, propina y traslado de la comisión al cliente
8.1 Impuesto sobre ventas
Se calcula solo sobre el subtotal.
{ "amount": 100, "sales_tax_type": "percentage", "sales_tax_value": 15 }
-> subtotal 100, sales_tax_amount 15, total 115
fixed suma un monto en lugar de un porcentaje. Un porcentaje no puede pasar de 100.
8.2 Propina
tip_enabled: true obliga a elegir entre dos modos; omitir ambos devuelve 422
("Seleccione un tipo de propina o permita la seleccion del cliente en el checkout.").
Propina fija - la define el comercio y queda reflejada en el total desde la creación:
{ "amount": 100, "tip_enabled": true, "tip_type": "percentage", "tip_value": 10 }
-> total 110
Elegida por el cliente - el total en la creación no incluye propina; el cliente la agrega en el checkout:
{
"amount": 100, "tip_enabled": true,
"tip_customer_selectable": true,
"tip_preset_percentages": [10, 15, 20],
"tip_allow_custom": true,
"tip_min_amount": 0, "tip_max_amount": 50
}
-> total 100 at creation; the customer decides when paying
tip_max_amount no puede pasar de amount - si lo hace, devuelve 422.
8.3 Trasladar los costos al cliente (service_fee_enabled)
Cuando está activo, la comisión de ROKI, el cargo de 3-D Secure y el impuesto sobre esa comisión
se le trasladan al cliente. ROKI recalcula el total con un cálculo inverso para que al
comercio le quede neto el amount que pediste.
{ "amount": 100, "service_fee_enabled": true }
-> subtotal 100, service_fee_amount 5.52, total 105.52
Nunca repliques este cálculo del lado del integrador. Las tasas, el cargo fijo y el umbral son
configuración por comercio y cambian. Lee service_fee_amount y total de la respuesta - esa es
la única fuente correcta. La comisión se calcula sobre la base completa (monto más impuesto más
propina fija).
El nombre del campo es exactamente service_fee_enabled. Las variantes service_fee,
service_fee_type/service_fee_value y pass_fees_to_customer se ignoran en silencio: la API
devuelve 201 y el pago se crea sin traslado de la comisión al cliente. Ver 12.1.
8.4 Enlaces reutilizables (reusable)
Por defecto un enlace se consume al pagarse: después muestra "Enlace no disponible". Con
reusable: true el enlace acepta más de un cobro - útil para enlaces fijos que se comparten en redes
sociales.
