Unbilled Jobs

View jobs that are done but have not been invoiced, see what each job needs next, and generate the invoice from the list.

Overview

The Unbilled Jobs list collects every job whose status is marked as billable and that has no real invoice (Drafts and Voids do not count as invoiced). Jobs are sorted oldest-first so the longest-stuck work surfaces at the top. The total count appears as a badge on the Unbilled sidebar item.

Before you begin

  • You need permission to view jobs.

  • The Invoicing module must be enabled on your account.

  • At least one Job status must be marked as billable. The list is empty otherwise.

Marking a status as billable

  1. Open Settings → Status Options → Job.

  2. Click the invoice-dollar icon next to a status (most teams pick Completed).

  3. The icon turns green. Jobs in that status now appear in the Unbilled list until they have a sent invoice.

Expected result: the Unbilled sidebar item appears with a count badge showing the number of jobs waiting to be billed.

You can mark more than one status as billable. Click the icon again to turn it off.

Opening the Unbilled list

  1. Click Unbilled in the sidebar, or visit /jobs/unbilled directly.

  2. The list shows job number, status, title, customer, address, and the time the job moved into its current status.

Generating an invoice from an unbilled job

Each row's primary action depends on what the job needs next:

  • Create Invoice — the job has line items and no invoice yet. Click to generate a Draft invoice and open it.

  • Add Products — the job has no line items. Click to open the job and add them first.

  • Review Draft — a Draft invoice already exists. Click to open the draft, finish it, and send it.

Expected result: when an invoice on the job is moved to Sent, Paid, Partially Paid, Viewed, or Overdue, the job leaves the Unbilled list and the sidebar badge counts down.

Per-job billing summary

Open any job that has at least one invoice. The Details column shows three values:

  • Invoiced — total of every non-Draft, non-Void invoice on this job.

  • Paid — total of every payment applied to those invoices.

  • Outstanding — what is still owed. Highlighted in red when positive.

The values update as invoices are sent, paid, or voided.

Excluding non-billable jobs

Some completed jobs are not supposed to be invoiced — warranty work, callbacks, internal or comp visits, service-plan-covered visits, and work bundled into a parent Sales Order or Project. There are two ways to keep them out of the list.

Per job (one click)

  1. On the job's row in the Unbilled list, click the menu.

  2. Choose Mark as Not Billable and pick a reason: Warranty, Service Plan, Internal, Bundled (parent), or Other.

Expected result: the job leaves the list, the sidebar badge counts down, and the reason appears in the Details column on the job page. To clear the reason, edit the job and set the Non-Billable Reason field to Billable (default).

Per job-type (default for new jobs)

  1. Open Settings → Job Types and edit the type (for example, Warranty Callback).

  2. Set Default Non-Billable Reason and save.

Expected result: every new job created with that type starts non-billable with the chosen reason and stays out of the Unbilled list. Individual jobs can still be overridden from their edit form.

What counts as invoiced

A job is considered invoiced when it has at least one invoice that is:

  • Not in Draft status.

  • Not in Void status.

  • Not discarded.

A job whose only invoice is Draft still appears in the Unbilled list — that is the draft that has not been sent.

Permissions

Anyone with permission to view jobs can see the Unbilled list and the per-job billing summary. Marking a status as billable, or setting a default non-billable reason on a job-type, requires the same permission as editing the relevant Settings page.

Known limitation

If a job is invoiced indirectly through its parent Sales Order rather than directly on the job, the Unbilled list still shows it. Use Mark as Not Billable → Bundled (parent) to keep these out of the queue.