Antylogic
DemoApp login

399 operational guides

Docs sections
DocsTPV
Device

How to Void a Ticket

Cancel an operational TPV ticket before it has any payment or invoice. The ticket becomes void, its lines are cancelled, and it can no longer be charged or invoiced.

In this article

Use this guide when a Harbor Soho TPV ticket was opened by mistake and needs to be cancelled before payment or invoicing.

Voiding is an operational cancellation, not a refund or fiscal correction. Once confirmed, the ticket stops blocking the table and later payment or invoice actions are unavailable.

Before you start

  • Open a ticket from the same Harbor Soho location context as the current operator.
  • Use a ticket that is not already void or closed.
  • Confirm that the ticket has no payment records and no invoice.
  • The operator needs ticket management permission, or TPV use permission for the active service session.
  • For GB documentation captures, use `TPV_TICKET_ID`, `TPV_PAID_TICKET_ID`, `TPV_TERMINAL_ID` and `TPV_STAFF_ID` from the GB runtime.

Instructions

  1. 1.

    Open the ticket detail

    From the TPV floor view, open the unpaid ticket that needs to be cancelled. Check that it belongs to Harbor Soho, is not void or closed, and does not show a paid amount or invoice.

  2. 2.

    Choose Void ticket

    Open the ticket actions menu and select Void ticket. The action is only valid for tickets without payments or invoices and for operators allowed to manage the ticket.

  3. 3.

    Review the confirmation

    Read the destructive confirmation modal before continuing. It explains that all ticket lines will be cancelled and that the ticket will no longer be chargeable or invoiceable.

  4. 4.

    Confirm the void

    Confirm only when the ticket is genuinely disposable. The app sends `PUT /api/app/{orgId}/{locationId}/tickets/{ticketId}` with `{ "status": "void" }` and refreshes the ticket detail.

  5. 5.

    Check the result

    The ticket should now show as void. Its lines remain in the record as cancelled and unpaid, and the ticket should no longer block the table or allow payment or invoice generation.

Validations and limits

  • Tickets with any `ticket_payment` record cannot be voided, even if the UI would not count the amount as effectively paid.
  • Tickets with an invoice cannot be voided, and this action does not create a corrective invoice.
  • Read-only permissions such as `tickets:view` are not enough for this mutation.
  • The dedicated ticket detail checks payment, invoice and status before opening the modal. The main TPV page may still rely on the backend to reject an invoiced ticket.
  • Do not use the ticket update endpoint to close a ticket. This update path only accepts `void` as a status change.

Expected result

The ticket status is `void`, ticket lines are retained as cancelled and unpaid, table assignments are removed by the current update path, and later payment or invoice actions are blocked.

Related articles