Restofy Docs
Cierre del pedido POST

Guardar la propina

POST /api/checkout/set-tip

Descripción

Aplica la propina que el cliente eligió, por monto o por porcentaje.

Detalles

Guarda la propina sobre lo que el pedido lleva en ese momento y devuelve los totales actualizados. Solo aplica cuando el restaurante dejó la propina como voluntaria: la obligatoria y la deshabilitada no se pueden cambiar desde el celular. Se ajusta solo con el pedido ya enviado, no mientras se arma. Al quitarla, el cliente puede contar el motivo si quiere.

Permisos requeridos

auth-order

Request

Nombre Tipo Requerido Reglas
tipType string Sí
enum:amount,percent,none
amountCents int No
min_value:0
percent int No
min_value:0 max_value:100
reasonCode string No
enum:slow_service,unfriendly,cash_tip,custom
reasonNote string No
max:200

Respuesta

Campos que devuelve dentro de data. Nada fuera de esta lista sale en la respuesta.

Campo Tipo Descripción
productsCents int Total de los productos, en centavos
taxInclusionMode string Si los precios incluyen impuestos
totalBaseCents int Subtotal antes de impuestos, en centavos
taxCents int Impuestos, en centavos
priceCents int Total de los productos con impuestos, en centavos
discountReasonName string Admite vacío Motivo del descuento
discountCents int Descuentos, en centavos
tipAmountCents int Propina, en centavos
tipModeApplied string Cómo se calculó la propina
isTipOverridden bool Si la propina la eligió el cliente
deliveryFeeCents int Costo del domicilio, en centavos
deliveryModeApplied string Cómo se calculó el domicilio
grandTotalCents int Total a pagar, en centavos
balanceCents int Saldo pendiente, en centavos
paymentStatus string Estado del pago

Ejemplo de request

curl -X POST https://restofy.pro/api/checkout/set-tip \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <accessToken>" \
  -d '{
    "tipType": "string"
}'

Los valores son demo: reemplázalos por datos reales del negocio.

Ejemplo de respuesta

Actualizado: 2026-10-09T02:12:12Z
HTTP 200

Request

{
    "tipType": "percent",
    "percent": 10
}

Response

{
    "success": true,
    "message": "Operación realizada correctamente",
    "data": {
        "productsCents": 500000,
        "taxInclusionMode": "inclusive",
        "totalBaseCents": 0,
        "taxCents": 0,
        "priceCents": 500000,
        "discountReasonName": null,
        "discountCents": 0,
        "tipAmountCents": 50000,
        "tipModeApplied": "voluntary",
        "isTipOverridden": 1,
        "deliveryFeeCents": 0,
        "deliveryModeApplied": "disabled",
        "grandTotalCents": 550000,
        "balanceCents": 550000,
        "paymentStatus": "unpaid"
    }
}