Billing
Open Settings → Billing in Thermal →
What it's for
Billing is the org-wide rulebook for money movement: how invoices are taxed and numbered, whether a deposit or call-out fee is charged automatically, what payroll cadence drives payout timing, and how billable time gets rounded. It's one long settings form, grouped into named sections, rather than a record you create — every field here is a default that other screens (work orders, proposals, invoices, payroll) read from.
Reach it from Settings → Organization → Billing in the sidebar, at
/settings/billing.
Tabs
This screen has no tabs. It's a single scrolling form broken into named sections: Invoicing defaults, Proposal defaults, Payroll, Time validation, Deposits, Call-out fee, Billable time rounding, Not-to-exceed (T&M), Subcontractor insurance (COI), Document numbers, Price Book, AP matching, and Service agreements.
Panels and controls
Invoicing defaults
Tax engine picks how new invoices are taxed: Manual applies the flat Sales tax rate below; Stripe Tax resolves a jurisdiction-aware rate from the service-site address, falling back to the flat rate if unavailable; None never charges tax. Payment terms sets net-days until an invoice is due. Default invoice notes pre-fills every new invoice. Billing engine picks what drives rental and lease cycle invoicing. Prebill approval policy decides whether invoices need department-manager review before they can be sent — Optional, Required above a dollar threshold, or Always required.
Proposal defaults
Default validity window (days), the APR and term months shown on a proposal's financing teaser, and a toggle requiring internal approval before a draft quote can be sent to the customer.
Payroll
Cadence (weekly, biweekly, semimonthly, monthly) and an anchor date — any real date that fell on-cycle — that the Commissions screen's payout stat and the payroll-export window are computed from.
Time validation
Minimum hours per pay period, a maximum-hours-per-day flag (never blocks a save, just flags), and a late-entry window in days. Two toggles: require job or phase attribution on chargeable time (travel and non-chargeable time are always exempt), and require a work location once the org has more than one branch.
Deposits
Off by default. When on, an accepted proposal generates a payable deposit invoice, computed by basis — a percent of the total, a fixed dollar amount, or parts-and-materials cost only. A mandatory-above dollar threshold, once set, means the office can no longer waive the deposit past that total. Treatment decides whether a paid deposit is credited on the final invoice or held as a refundable hold.
Call-out fee
Off by default. A flat fee per visit, covering either drive time only or drive time plus the first hour, with an optional toggle to bill a full first hour as a minimum even on a shorter visit.
Billable time rounding
Rounds the billable on-site duration computed from arrival/completion timestamps — never the raw audit timestamps or the daily timecard. Pick a labor pricebook item to auto-generate the appointment labor line, and a rounding mode (exact, round up to 5/15/30 minutes, or add a flat 15 minutes).
Not-to-exceed, COI, document numbers, Price Book, AP matching, service agreements
The remaining sections set: the NTE warn threshold and whether it blocks adding items past the cap; subcontractor COI enforcement (none, warn, or block) and its expiring-soon window; the INV/P/WO/PO document-number prefixes; Price Book margin floor, rounding, and Member/Commercial tier defaults, plus PO receipt costing method; AP matching's dollar and percent tolerances for auto-matching a bill line to its receipt; and the service-agreement renewal horizon, expiry grace period, and default renewal escalation percent.
What it accepts
| Field | Format | Required | Rule |
|---|---|---|---|
| Sales tax rate | Percent, up to 2 decimals | No | "Tax rate must be a percentage between 0 and 100 (e.g. 8.25)." |
| Payment terms | Whole days, 0–365 | No | "Payment terms must be a whole number of days (0–365)." |
| Prebill threshold | Dollars, 0 or more | No | "Prebill threshold must be a non-negative dollar amount." |
| Proposal validity | Whole days, 1–365 | No | "Proposal default validity must be a whole number of days (1–365)." |
| Financing APR | Percent, 0 or more | No | "Financing APR must be a non-negative percentage." |
| Financing term | Whole months, 1–120 | No | "Financing term must be a whole number of months (1–120)." |
| Payroll anchor date | Date | No | "Payroll anchor date must be a valid date." |
| Min hours / period | Whole, 0–168 | No | "Minimum hours per period must be a whole number (0–168)." |
| Max hours / day | Whole, 1–24 | No | "Maximum hours per day must be a whole number (1–24)." |
| Late-entry window | Whole days, 0–90 | No | "Late-entry window must be a whole number of days (0–90)." |
| Deposit percent | Percent, 0 or more | No | "Deposit percent must be a non-negative number." |
| COI warn window | Whole days, 1–180 | No | "COI warning window must be a whole number of days (1–180)." |
| Document prefixes | Letters and numbers, up to 8 chars | No | "Document prefixes use letters and numbers only (up to 8 characters)." |
| AP percentage tolerance | Percent, 0 or more | No | "AP matching percentage tolerance must be a non-negative number." |
| Renewal horizon | Whole days, 1–365 | No | "Renewal horizon must be a whole number of days (1–365)." |
| Expiry grace period | Whole days, 0–365 | No | "Expiry grace period must be a whole number of days (0–365)." |
| Renewal escalation | Percent, 0–100 | No | "Default renewal escalation must be a percentage between 0 and 100." |
Every field on this form is optional — blank falls back to the system default, not an error.
How to configure it
This screen configures everything downstream of it: new invoices, proposals, payroll runs, deposit invoices, call-out fee lines, billable time lines, and service-agreement renewal transitions all read their defaults from here. Labor rate scales (a separate screen) prices labor itself — Billing only sets tax, terms, and fee behavior around that price. Branches can override the tax rate, NTE settings, and Price Book tier deltas per location; a blank branch override falls back to what's set here.
Who can see it
- Owners see Billing in the Settings sidebar and can change every field on this form.
- Office managers have access to the Settings area, so the screen and its fields are open to them if they navigate directly, even though the sidebar link is shown to owners.
- Dispatchers and technicians cannot reach Settings at all. The save action is checked on the server, so the gate holds regardless of what the sidebar shows.
The full role matrix is on Roles & permissions.