Shifts

Cash shifts track a cashier's working period — opening float, all orders taken, and closing reconciliation. Every order can be linked to a shift for accurate end-of-day reporting.

List shifts

bash
GET /v1/slate/shifts
NameTypeRequiredDescription
filter[status]stringNoopen or closed.
pageintegerNoPage number.
per_pageintegerNoResults per page. Max 100.

Get a shift

bash
GET /v1/slate/shifts/:id

Open a shift

bash
POST /v1/slate/shifts
NameTypeRequiredDescription
actionstringYesMust be "open".
starting_cashnumberNoOpening cash float in the drawer. Defaults to 0.
bash
curl -X POST https://api.hldgroup.org/v1/slate/shifts \
  -H "x-internal-secret: <key>" \
  -H "x-tenant-id: ten_01hxyz" \
  -H "x-user-id: usr_01hxyz" \
  -H "x-platform-role: tenant-system-admin" \
  -H "Content-Type: application/json" \
  -d '{ "action": "open", "starting_cash": 200.00 }'
json
{
  "data": {
    "id": "shft_01hxyz",
    "tenant_id": "ten_01hxyz",
    "opened_at": "2025-06-01T08:00:00Z",
    "opened_by_user_id": "usr_01hxyz",
    "starting_cash": 200.00,
    "closing_cash": null,
    "status": "open"
  }
}
Note:Only one shift can be open per tenant at a time. Opening a second shift while one is open returns 409 Conflict.

Close a shift

bash
POST /v1/slate/shifts
NameTypeRequiredDescription
actionstringYesMust be "close".
shift_idstringYesID of the open shift to close.
closing_cashnumberNoActual cash count at close for reconciliation.
bash
curl -X POST https://api.hldgroup.org/v1/slate/shifts \
  -H "x-internal-secret: <key>" \
  -H "x-tenant-id: ten_01hxyz" \
  -H "x-user-id: usr_01hxyz" \
  -H "x-platform-role: tenant-system-admin" \
  -H "Content-Type: application/json" \
  -d '{ "action": "close", "shift_id": "shft_01hxyz", "closing_cash": 348.50 }'