How to find unbilled tickets in HaloPSA
Updated 2026-10-18. Written by the maker of MSP Billing Sentinel.
HaloPSA records the time; your accounting system issues the invoice. If nothing forces the two to agree, billable tickets can close without ever being invoiced. Here is how to check, and how to prevent a repeat.
Find the gap
- Export closed tickets for the last 90 days from HaloPSA with ticket ID, client, summary, technician, closed date, billable flag, hours and rate.
- Export your invoice lines from QuickBooks Online or Xero for the same period plus 30 days.
- Compare them: first by ticket ID found in the invoice line description, then by client, date and hours. The full method is in how to reconcile PSA time entries to invoices.
Common reasons billable tickets go unbilled
- The technician closed the ticket before logging time.
- The ticket was set to non-billable by default and nobody changed it.
- Work outside the agreement was done by email or phone and never became a ticket.
- The invoice was created from a bundle and the line did not carry the ticket number.
- The contract or work type no longer matched the type of work performed.
Stop it recurring
- Put the ticket number on every invoice line so matching is exact.
- Review closed billable tickets weekly, not at the end of the quarter.
- Report on closed tickets with zero time entries.
Skip the spreadsheet
Sentinel reads a HaloPSA ticket export (it recognizes the column layout automatically) alongside a QuickBooks or Xero invoice export, and lists tickets that look unbilled with a dollar figure for each. There is a free preview. It is read-only: it never connects to or changes HaloPSA. Matching is by ticket number, then client, date and hours, so findings still need a human check.