How to mark a TPV invoice as sent
Record that an already issued TPV invoice has been sent outside Antylogic. The action updates the invoice to `sent`, records `sent_at`, and may attach the PDF when document storage is available; it does not send email, SMS, WhatsApp, or a shared link.
In this article
Use this guide when a Harbor Soho operator has already issued an invoice for a paid TPV ticket and needs to record that delivery happened outside the app.
The action lives on the TPV ticket detail invoice card. It is a status update, not a delivery-channel workflow, so it does not create delivery history by itself.
Before you start
- The operator is signed in to Harbor Demo Group and working in Harbor Soho.
- The TPV ticket belongs to the active location and already has a non-void invoice.
- The ticket detail can be opened with `tpv:use`, and the action requires `tpv:invoice` or `tickets:manage`.
- For GB demo capture, use `TPV_PAID_TICKET_ID`. If it is not already issued and unsent, issue the invoice first in the documentation runtime and record that seed gap.
Instructions
- 1.
Open the invoiced TPV ticket
Open the paid Harbor Soho ticket from the TPV floor or by deep link. The invoice card must already be present because this action does not create an invoice or fiscal record.
- 2.
Check that the action is available
Confirm that the invoice is not already sent or void, and that the card offers `Mark sent`. Operators without invoice rights will not see or complete the action.
- 3.
Select `Mark sent`
Press `Mark sent` on the issued invoice card. The app calls `POST /api/app/{orgId}/{locationId}/tickets/{ticketId}/invoice/send` with no request body.
- 4.
Confirm the sent state
After success, the ticket detail refreshes, the invoice status becomes `sent`, `sent_at` is recorded by the backend, and the direct action is no longer shown.
Validations and limits
- The direct action records a sent status only; it does not send email, WhatsApp, SMS, or a shared invoice link.
- The endpoint has no request body for channel, recipient, provider, or staff selection.
- Void invoices and invoices blocked by fiscal validation cannot be marked as sent.
- If the invoice is already `sent` and already has `sent_at`, the backend returns the existing invoice without changing the original sent time.
- If the invoice has no PDF and document storage is configured, the backend can generate and attach the PDF before marking it sent.
- If document storage is not configured, the invoice can become `sent` without a new `file_id`.
- The direct endpoint does not create an `invoice_delivery_attempt`; use the invoice delivery flow when delivery history is required.
Expected result
The TPV invoice is recorded as sent, with a backend `sent_at` timestamp and refreshed ticket data. The ticket keeps its existing invoice details, and operators can distinguish this manual status update from app-driven delivery flows.