User Guide

Invoicing & billing

Generate invoices from approved hours. OT split, additional charges, expenses, and inbound POs all in one flow.

TimeTrack Pro rolls up approved time entries into invoices grouped by (employee, project) with Regular + OT split. Each (employee, project) becomes one invoice line carrying the hours, rate, and amount.

Draft→Sent→Viewed→Paid
Invoices list — search, filter by status (draft / sent / viewed / paid / void), and click into any to edit or send.  Counts strip shows per-status totals.
Invoices list — search, filter by status (draft / sent / viewed / paid / void), and click into any to edit or send. Counts strip shows per-status totals.

Generate Invoice — 6 steps

1️⃣

Pick the client

Modal shows the client's billing cycle + OT multiplier inline.
2️⃣

Date range

Auto-fills based on the client's cycle (e.g. last month for monthly).
3️⃣

Review preview

One row per (employee, project) with billable hours. Uncheck to exclude.
4️⃣

Additional charges

Reimbursements, retainers, fixed fees, one-offs. Per-line taxable checkbox.
5️⃣

Bundle expenses

Select billable expenses to attach as reimbursable lines.
6️⃣

Generate

TimeTrack Pro creates the invoice in draft status.
Inbound Purchase Orders
If your client requires a PO authorizing a specific contractor's work, TimeTrack Pro automatically picks the right PO for each invoice line based on date + project + employee. Mid-period PO rollovers auto-split into multiple invoices (one per PO window). Frozen po_number on each line prevents drift if the PO is edited later.

Two invoice modes

⏱️

Time-tracked (default)

Invoices generate from approved time entries. OT split. Inbound POs auto-applied.
✍️

Free-form

For lawyers / consultants / flat-fee shops who don't track time. Modal hides date/employee pickers; admin types each line directly.

Invoice detail actions

  • ✓Edit lines (staged-edit: Edit / Cancel / Save)
  • ✓Regenerate PDF (Slate+Emerald branded)
  • ✓Send via email with PDF + screenshots
  • ✓Record payments — partial supported
  • ✓Auto-flip to 'paid' when fully paid
  • ✓Void or duplicate to a new draft
Per-line tax override
Some line items shouldn't be taxed (pass-through travel reimbursements). Toggle the per-line Taxable checkbox. For penny-precision parity with external tax engines (Avalara, TaxJar), override the line's tax dollars directly with the Tax cell editor on the invoice detail page.
Tip
Auto-OT-line emission: each (employee, project) with both regular + overtime hours emits TWO invoice lines — one regular, one OT (description carries the multiplier, e.g. " (Overtime 1.50×)"). Detail view + PDF render the OT line with an amber tint.

Email templates

Subject + body templates set per-tenant under Settings → Email → Invoice Templates. Use {invoiceNumber} + {clientName} + {total} placeholders. Per-send overrides on the Send Invoice dialog.

Service column + billable-parties picker

Free-form / additional-charges lines get an optional Service field — frozen text like "Sarah Connor", "Travel reimbursement", "Filing fee". The Generate dialog shows an autocomplete combobox fed by every user who's worked for the client, with their per-client cascaded rate auto-filled when picked. Free text always works too — for one-off charges that don't map to a specific person.

Attachments — auto + ad-hoc

The Send Invoice dialog auto-collects proof-of-work images from every linked time entry (screenshots + kiosk photos + per-session field photos). Per-photo checkbox lets admin select which ones to attach. Ad-hoc file uploads supported too — anything the client should receive alongside the PDF. 25 MB hard cap total. Image compression at send time (opt-out per tenant); originals stay on disk for re-download. Every send is persisted with a send_sequence so re-sends carry a distinct manifest and the audit trail shows every send separately.

Duplicate a past invoice

The Duplicate action on any invoice opens the Generate dialog pre-filled with the source's client + tax + notes + terms + manual lines as additional charges. Time-entry selection stays blank — admin picks fresh entries for the new period. Single mental model: "Duplicate makes a new invoice based on this one." Deactivated source-client blocks with a ValidationError.