Cierres de caja
POST
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 | Sí |
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
}
}
}