Restofy Docs

Reporte completo del cierre de caja

POST /api/cash-closures/get-report

Descripción

Devuelve el reporte consolidado de una sesión de caja: ventas, medios de pago, propinas, gastos, cancelaciones y cuadre de efectivo.

Detalles

Retorna toda la información necesaria para revisar el cierre de una sesión: totales de ventas, desglose por medio de pago, propinas (por medio y por mesero), gastos, salidas de efectivo, cuadre del efectivo esperado contra lo declarado y resumen de órdenes. Falla si la sesión no existe o no pertenece a una caja a la que el usuario tiene acceso.

Permisos requeridos

cash.closing.totals.view

Request

Nombre Tipo Requerido Reglas
cashRegisterSessionId int
min_value:1

Ejemplo de request

curl -X POST https://app.restofy.co/api/cash-closures/get-report \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <accessToken>" \
  -d '{
    "cashRegisterSessionId": 1
}'

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

Ejemplo de respuesta

Actualizado: 2026-07-15T13:20:48Z
HTTP 200

Request

{
    "cashRegisterSessionId": 2
}

Response

{
    "success": true,
    "message": "Operación realizada correctamente",
    "data": {
        "session": {
            "id": 2,
            "cashRegisterId": 1,
            "cashRegisterName": "Caja Principal",
            "cashierId": 15,
            "cashierName": "App Testing",
            "openedAt": "2026-07-15T13:18:35.000Z",
            "closedAt": null,
            "status": "open",
            "cashDeclarationStatus": "pending",
            "methodsDeclarationStatus": "pending",
            "notes": null
        },
        "cashBalance": {
            "components": [
                {
                    "code": "opening_base",
                    "label": "Base de apertura",
                    "sign": "+",
                    "amountCents": 0,
                    "included": true
                },
                {
                    "code": "cash_received",
                    "label": "Recibido en efectivo",
                    "hint": "Total cobrado con medio de pago efectivo",
                    "sign": "+",
                    "amountCents": "0",
                    "included": true
                },
                {
                    "code": "prepaid_received",
                    "label": "Recibido por gift cards y anticipos",
                    "hint": "Gift cards y anticipos cobrados en efectivo",
                    "sign": "+",
                    "amountCents": "0",
                    "included": true
                },
                {
                    "code": "expenses_paid",
                    "label": "Gastos pagados desde caja",
                    "sign": "-",
                    "amountCents": "0",
                    "included": true
                },
                {
                    "code": "tip_payouts",
                    "label": "Propinas pagadas a empleados",
                    "hint": "Entregadas al personal desde la gaveta",
                    "sign": "-",
                    "amountCents": "0",
                    "included": true
                },
                {
                    "code": "delivery_payouts",
                    "label": "Domicilios pagados al domiciliario",
                    "hint": "Pagados al domiciliario desde la gaveta",
                    "sign": "-",
                    "amountCents": "0",
                    "included": true
                },
                {
                    "code": "base_payout",
                    "label": "Base sacada de caja",
                    "hint": "Base retirada de la gaveta al final del turno",
                    "sign": "-",
                    "amountCents": "0",
                    "included": true
                },
                {
                    "code": "prepaid_refunded",
                    "label": "Devuelto por anulaciones",
                    "hint": "Gift cards y anticipos anulados con devolución en efectivo",
                    "sign": "-",
                    "amountCents": 0,
                    "included": false
                },
                {
                    "code": "other_movements",
                    "label": "Otros movimientos de caja",
                    "hint": "Traslados, abonos, retiros, etc.",
                    "sign": "±",
                    "amountCents": "0",
                    "included": true
                }
            ],
            "expectedCashCents": 0,
            "baseCents": 0,
            "cashReceivedCents": "0",
            "cashExpensesCents": "0",
            "tipPayoutsCents": "0",
            "deliveryPayoutsCents": "0",
            "basePayoutsCents": "0",
            "otherMovementsCents": "0",
            "prepaidReceivedCents": "0",
            "prepaidRefundedCents": 0,
            "totalInCashCents": 0
        },
        "declaration": {
            "items": [
                {
                    "paymentMethodId": 1,
                    "code": "pay.cash",
                    "name": "Efectivo",
                    "iconFontAwesome": "fa-solid fa-money-bill-wave",
                    "color": "#22c55e",
                    "isCash": true,
                    "requiresDeclaration": 1,
                    "systemCents": 0,
                    "declaredCents": 0,
                    "diffCents": 0
                }
            ],
            "totalDiffCents": 0
        },
        "paymentMethods": [],
        "salesData": {
            "incomeCents": "0",
            "discountCents": "0",
            "taxCents": "0",
            "tipCents": "0",
            "deliveryCents": "0",
            "deliveryCount": "0",
            "grandTotalCents": "0",
            "paidCents": "0",
            "orderCount": 0
        },
        "tips": {
            "byPaymentMethod": [],
            "byWaiter": []
        },
        "expenses": {
            "cash": {
                "totalCents": 0,
                "byCategory": []
            },
            "other": {
                "totalCents": 0,
                "byCategory": []
            },
            "bySource": []
        },
        "otherIncome": {
            "cash": {
                "totalCents": 0,
                "byConcept": []
            },
            "other": {
                "totalCents": 0,
                "byConcept": []
            },
            "bySource": []
        },
        "salesByRevenueAccount": [],
        "invoicing": [],
        "denominations": [],
        "cashHandover": [],
        "cancellations": {
            "cancelledCount": 0,
            "cancelledAmountCents": "0",
            "compedCount": 0,
            "compedAmountCents": "0"
        },
        "accounts": [
            {
                "accountId": 16,
                "accountName": "Caja Principal",
                "accountTypeCode": "asset.cash",
                "accountTypeName": "Caja física",
                "balanceCents": 20000000
            },
            {
                "accountId": 25,
                "accountName": "Banco general ",
                "accountTypeCode": "asset.bank",
                "accountTypeName": "Cuenta bancaria",
                "balanceCents": 0
            },
            {
                "accountId": 9101,
                "accountName": "Bancolombia cuenta principal",
                "accountTypeCode": "asset.bank",
                "accountTypeName": "Cuenta bancaria",
                "balanceCents": 1850000000
            },
            {
                "accountId": 18,
                "accountName": "Datáfono / Terminal POS",
                "accountTypeCode": "asset.bank",
                "accountTypeName": "Cuenta bancaria",
                "balanceCents": 0
            },
            {
                "accountId": 9102,
                "accountName": "Davivienda ahorros",
                "accountTypeCode": "asset.bank",
                "accountTypeName": "Cuenta bancaria",
                "balanceCents": 920000000
            },
            {
                "accountId": 9103,
                "accountName": "Tarjeta de credito BBVA",
                "accountTypeCode": "asset.bank",
                "accountTypeName": "Cuenta bancaria",
                "balanceCents": 0
            },
            {
                "accountId": 9111,
                "accountName": "Boveda principal",
                "accountTypeCode": "asset.safe",
                "accountTypeName": "Caja fuerte / Bóveda",
                "balanceCents": 500000000
            },
            {
                "accountId": 9112,
                "accountName": "Buzon nocturno",
                "accountTypeCode": "asset.safe",
                "accountTypeName": "Caja fuerte / Bóveda",
                "balanceCents": 0
            },
            {
                "accountId": 55,
                "accountName": "Caja fuerte del sistema",
                "accountTypeCode": "asset.safe",
                "accountTypeName": "Caja fuerte / Bóveda",
                "balanceCents": -20000000
            }
        ],
        "ordersSummary": {
            "orderCount": 0,
            "totalCents": "0"
        },
        "kpis": {
            "cashSalesCents": "0",
            "grossIncomeCents": "0",
            "tipsCents": "0",
            "expensesCents": "0",
            "differenceCents": 0
        }
    }
}