Statements
Open Invoices → Statements in Thermal →
What it's for
Statements lists billing customers with a positive balance on sent or partly
paid invoices. Select customers to download one combined statement PDF or email
each customer its own statement. Open Statements from the Invoices list,
at /invoices/statements. See
Send and collect an invoice for the wider
billing workflow.
The customer shown is the party billed, which can differ from the customer at the service site. Draft, paid, void and deleted invoices are excluded, as are deleted customers. The list's Balance sums open invoice balances before unapplied credits. A statement PDF also shows those credits and deducts them from its final balance due, so that final figure can differ from the list.
Tabs
There are no tabs. Aging and minimum-balance chips filter one customer table. The header count is the number of billing customers in the filtered result.
Panels and controls
Any age, 31+ days, 61+ days and Over 90 days filter by the age bucket of the customer's oldest open invoice. A selected age includes that bucket and older ones. Age is whole UTC days since the invoice's issue date, falling back to its due date; it is not necessarily days past due. Missing or future-dated anchors have no bucket and display a dash.
Any balance, $100+, $500+, $1,000+ and $5,000+ select a minimum open balance. Changing the age preserves the balance filter and vice versa. The filters are in the URL, so a filtered view can be bookmarked.
Search customers… searches the loaded table. The table initially shows 100 rows per page and loads largest balance first, then customer name.
| Column | Shows |
|---|---|
| Customer | Billing party's name; opens its customer record; sortable |
| Balance | Sum of positive open invoice balances before unapplied credits, in US dollars; sortable |
| Oldest bucket | Current (0–30d), 31–60 days, 61–90 days, Over 90 days, or a dash; not sortable |
| Last statement | Most recent recorded PDF-generation date, or Never; sortable |
| Last email | Latest statement-email attempt: Emailed with a date, a not-sent reason, or Never; sortable |
Tick customers to expose the bulk actions:
- Download statements returns one PDF containing a separate statement per selected customer, each starting on a new page. Each statement includes open invoices, unapplied credits, aging totals and balance due. A successful generation is recorded for each customer and refreshes Last statement. This download does not email customers.
- Email statements opens a confirmation listing billing email addresses and customers that Will be skipped, with reasons. Confirming sends each customer its own PDF and reports customer counts as sent and not sent. Last email records the latest attempt. One successful recipient is enough for that customer to count as sent; the label does not prove every billing recipient received the email or that it reached an inbox. Repeating the same send to the same billing address on the same company-calendar day reuses its recorded outcome rather than sending a duplicate; already sent still reads as sent.
No customers match these filters means you can widen age or balance. No customers owe a balance means there are no eligible open invoices in scope. Neither message adds credit-only customers to this invoice-balance list.
What it accepts
| Input | Format | Required | Rule |
|---|---|---|---|
| Aging filter | Any age, 31+ days, 61+ days or Over 90 days | No | URL bucket values are 31, 61 and 91; other values behave as Any age |
| Minimum balance | Positive dollars | No | Presets are whole dollars; a positive finite URL min value is also accepted and rounded to cents. Zero, negative or nonnumeric values remove the minimum |
| Customer selection | Tick customer rows | For download/email | Select 1–500 customers per request |
Download checks the whole selection before producing the PDF. If any customer is unavailable, it returns One or more customers were not found. with no partial PDF or generation records. Email handles unavailable or undeliverable customers as not sent and shows the reason. Missing billing email, disabled statement email, customer stops, suppressed addresses and delivery failures can prevent email.
Generating a statement does not change invoice status, record a payment or apply a credit. Last statement proves generation was recorded; Last email is the separate send-attempt record. Dates in those columns use the company time zone.
How to configure it
Customer billing contacts supply email recipients. Settings → Notifications → Statement sent controls statement email, and company email delivery must be connected. Customer contact restrictions still apply. These email settings do not prevent PDF downloads. Billing addresses, invoice dates/balances and unapplied credits supply statement contents; there is no separate aging policy on this screen.
Who can see it
The screen and its download/email actions require access to both Customers and Invoices. Owners, office managers and dispatchers have that access with the standard roles; technicians do not. Custom roles can narrow it.
Branch-limited users see invoices and billing customers in their effective branch. Every selected customer is checked again when downloading or emailing, so a saved URL or customer selection cannot expand that access.
See Roles & permissions.