ESS Admin

Batch Invoicing

Why batch?

  • Convert a group of jobs (and optional separate labour bundles) into invoice drafts in minutes instead of opening each job manually.
  • Apply uniform filters (date range, clients, job status) so monthly or quarterly runs stay consistent.
  • Preview totals, fix exceptions, and then commit the run so every invoice lands in the standard wizard for a final polish/send.
  • Track existing runs from the dashboard, retry failed entries, and keep visibility over how much revenue is waiting to be issued.

You’ll find batching under Invoicing → Batch runs (/app/invoicing/batches).


Dashboard overview

  • Metrics cards: show how many batches are tracked this quarter, how many entries are ready, and the total collectible amount across previews.
  • Recent batches table: each row lists the run label (timestamp), status (Draft, Previewed, Committed, Failed), ready/error counts, invoice count, collectible total, and created date. View opens the drawer with full details.
  • New batch button: launches the wizard if you need to build a fresh run.
  • Run drawer: displays summary totals, grouped entries, and history. From here you can:
    • Commit ready entries if you previewed earlier but didn’t finish.
    • Retry failed entries (single entry or “Retry all issues”)—helpful after fixing a job.
    • Open invoice drafts that were committed already (quick links in the list).
    • Inspect history (previewed/committed timestamps, who performed the action).

Entry badges show status per invoice: Pending, Ready, Error, or Committed.


Wizard Step 1 – Filters

Launch via New batch. The first step decides which jobs and timesheet labour bundles qualify.

  • Date range: optional From / To (Sydney timezone). Typically set to the month you’re billing.
  • Clients: select specific customers or leave blank to include everyone. Use the “Reset filters” button to clear selections.
  • Job status: pick at least one of Active work (In Progress) or Finalised. Both are selected by default so you catch progress claims plus final invoices.
  • Eligible jobs table: shows everything that matches your filters with job number, client, job status, billing stage badge (Unbilled, In progress, Fully billed), created date, billable-now amount, and remaining balance. Each row links to the job detail page for spot checks.
  • Start batch: once you’re happy, click Start batch to create the run and move to selection. The run remembers your filters so you can revisit them later from the dashboard.

Filters only define eligibility. You’ll still hand-pick which jobs/labour bundles become invoices in Step 2.


Wizard Step 2 – Select work

This step groups eligible work by client so you can control which customers are included.

  • Client summary cards: show total remaining value, billable-now amount, and timesheet labour totals per customer. Each card lets you select/deselect all of that client’s items at once.
  • Job rows: display job number, billing stage, remaining and billable amounts. Use the checkboxes to include them.
  • Timesheet labour bundles: live under the same client card. Each bundle lists hours, amount, and the underlying technician entries. Select them when you want to invoice labour separately from the job.
  • Selection panel (right column): live tally of:
    • Jobs selected vs total.
    • Billable-now amount and outstanding balance for the current selection.
    • Labour amount/hours if you picked separate labour.
    • Number of clients covered.
  • Actions:
    • Select all / Clear selection per client.
    • View job links in case you need more context.
    • Continue to preview once you have at least one job or labour bundle selected.

Selections persist if you hop back and forth between steps or return to the run later.


Wizard Step 3 – Preview & commit

Here the system generates a preview for each entry and surfaces totals plus any blockers. Drafts are only created when you open an invoice or commit the batch.

  • Summary bar: shows ready vs error counts, requested total, collectible total, and counts by category (progress/final/labour).
  • Filter summary: displays the filters you used (date range, clients, job statuses) for quick reference.
  • Preview cards: grouped by category:
    • Each card represents one future invoice with status badge (Ready, Needs attention, Pending, Committed).
    • Buttons let you Open invoice (continues editing that draft in the invoice wizard), Preview PDF (loads the polish document in a dialog), or Remove the entry from the run if you no longer want to bill it.
    • Error cards include inline messages (e.g., “Job has no billable allocations”) so you know what to fix on the job before retrying.
  • Refresh preview: regenerates all entries if you adjusted job progress in another tab.
  • Commit batch: enabled when at least one entry is Ready. Committing:
    • Finalises every ready entry, generates invoice drafts, and shows quick links to the newest invoices.
    • Leaves error entries in place so you can retry them later.
    • Redirects you back to the batch dashboard with a toast summarising successes/failures.

Use the Back to selection button if you realise you need to add or remove jobs before committing.


After committing

  • Each committed entry becomes a normal invoice draft. Look in Invoices → Recent for rows tagged with Batch run · {timestamp} to see which drafts came from the run.
  • Polish/Send/Mark paid in the usual place (Step 4 of the invoice wizard). Batch mode never auto-emails customers—it only prepares the drafts.
  • The run stays visible in the dashboard, showing how many entries were committed vs still pending. Use it to track outstanding work or export historical runs.

Handling errors & retries

  • Error entries remain in the run with status Needs attention. Common causes: job progress not saved, zero billable balance, or timesheet bundle already invoiced.
  • Fix the underlying issue (e.g., update the job’s Progress tab, remove duplicate labour) and return to the run drawer.
  • Use Retry all issues to reprocess every error in the run, or open an individual entry and click Retry entry.
  • Successful retries move entries to Ready, so you can commit again. Failures stay flagged with the latest error message for more troubleshooting.

Tips & troubleshooting

  • No jobs in Step 1: Verify the date range and status filters. Clearing them back to defaults usually exposes eligible work.
  • Selections lost: Selections are stored per run. If you start a brand-new run, you’ll need to reselect jobs. Reopening an existing run keeps your previous picks.
  • Preview stuck on “loading”: Refresh the page. If the issue persists, clear a few selections and add them back to narrow down the problematic job.
  • Invoicing labour only: Use the Separate labour bundles in Step 2. Those entries create standalone invoices that list only the labour rows you selected.
  • Can’t commit: The summary shows 0 ready when every entry still has validation errors. Open the error cards, follow the fix instructions, refresh, and try again.