Antylogic
DemoApp login

399 operational guides

Docs sections
DocsTPV
Device

Close Service Session

Close Harbor Soho's active service session after every linked ticket is final and every till for the service has already been closed. Antylogic records the server close time and, from POS, can store the selected staff member as the closer.

In this article

Use this guide at the end of a lunch or dinner service, after payments, ticket resolution and till reconciliation are finished. Closing the service is a control step; it does not settle payments, close tickets, void tickets, close tills, cancel payment operations or clear output jobs.

The usual entry point is POS > active service header > More POS actions > Close service. KDS can expose the same close action from the active-service modal, but the backend validations are the same and the close mutation still needs effective tpv:use.

Before you start

  • Harbor Demo Group and Harbor Soho, or another valid organisation and location, are selected.
  • An active service session exists for the selected location, such as Soho lunch service.
  • The operator has effective tpv:use for the location. KDS also needs KDS access and enable_kds to load the board.
  • Every ticket linked to the service is already paid, closed or void.
  • No cash_register_session with status open exists for the same location and service session, including tills opened from another terminal.
  • In POS, select the staff member closing the service if closed_by_staff_id should be recorded.

Instructions

  1. 1.

    Check the active service

    Open the Harbor Soho POS floor view and confirm that the current service is active. Before using Close service, make sure the floor team has finished every ticket in the service.

  2. 2.

    Close open tills first

    Review the till state before closing the service. POS enables Close service only when no open cash register session remains for the same service session, and the backend check is not limited to the current terminal.

  3. 3.

    Use Close service from POS

    From the active service header, open More POS actions and choose Close service. In the POS path, the selected staff member is sent as closed_by_staff_id. No confirmation modal is implemented, so choosing the action sends the request immediately.

  4. 4.

    Treat KDS as an alternate entry point

    The KDS board can expose Close service from the active-service control modal. It uses the same backend close action and the same ticket and till validations, but KDS sends no staff closer.

  5. 5.

    Confirm the closed state

    After a successful close, the service session is marked closed, closed_at is set by the server in UTC, active-service queries refresh, and POS returns to the no-active-service state.

Validations and limits

  • The service session must exist and belong to the current location; otherwise the backend treats it as not found.
  • The close request body must decode as a JSON object with optional closed_by_staff_id.
  • The backend close endpoint requires effective tpv:use. tpv:manage and tpv:close-service are not standalone permissions for this endpoint because the tpv:use guard runs first.
  • Ticket status validation is exact: every linked ticket must be paid, closed or void.
  • Open till validation checks cash_register_session records for the location and service session with status open, not only the current terminal.
  • The frontend uses POST /api/app/{orgId}/{locationId}/service-sessions/{sessionId}/close; the backend also accepts PUT on the same route.
  • The inspected POS and KDS paths do not show a confirmation modal before sending the close mutation.
  • Do not document an already-closed-session rejection unless that backend validation is added.

Expected result

The service session is closed with status closed and a server-generated closed_at value. POS may store closed_by_staff_id, KDS omits it, the close event is logged, and the returned service detail recalculates billing from non-void tickets.

Related articles