Subcontractor spend & margin
Open Reports โ Subcontractor Spend in Thermal โ
What it's for
Subcontractor spend & margin answers how much subcontractor cost is recorded
on jobs, which party it belongs to and how it compares with those jobs' associated
revenue. Open it from Reports at /reports/subcontractor-spend. See
Manage subcontractors for the party records
and See how the business is doing
for the wider reporting workflow.
Tabs
There are no tabs. Date/branch filters sit above three summary tiles and the Spend by subcontractor table.
Panels and controls
From and To default to the trailing 90 days through today. They select when jobs were created, not when the subcontractor was paid or a visit took place. Branch narrows available branches; Filter applies the selection. Clear, shown for a selected branch, removes that requested branch filter while retaining the date range and your access limits. The favorite star saves a report shortcut when available.
- Subcontractor spend totals the recorded subcontractor cost on included jobs. Its footer counts named subcontractor rows and excludes the Unassigned bucket.
- Associated revenue totals signed revenue-attribution amounts on those same jobs, including reversals and credits. The event's own date does not select the period; the job's creation date does.
- Margin is associated revenue minus subcontractor spend. The footer shows that margin divided by associated revenue, or no revenue when it is zero.
| Column | Shows |
|---|---|
| Subcontractor | Party name; a named row opens its record |
| Jobs | Number of scoped jobs attributed to this party |
| Spend | Sum of the jobs' recorded subcontractor costs |
| Revenue | Sum of signed associated revenue on those jobs |
| Margin | Revenue minus Spend; negative figures are highlighted |
| Margin % | Margin รท Revenue, displayed as a percentage; N/A when Revenue is zero |
A job is assigned to a named subcontractor only when its non-canceled visits have exactly one distinct subcontractor. Several visits by the same party still count once. Jobs with no subcontractor visit or more than one distinct party go to Unassigned, which has no record link. This avoids inventing a cost split or counting one job's money twice. A missing party name reads Unknown subcontractor.
Deleted and canceled jobs are excluded. Groups with both zero spend and zero revenue are omitted. Jobs in other statuses can contribute; the report is not limited to completed work. It loads largest spend first and initially shows 25 rows per page. No subcontractor spend in this period means no group has spend or revenue under the selected filters.
Margin subtracts only subcontractor spend. It does not subtract labour, materials, overhead or other costs, and spend is recorded job cost rather than proof of payment to the subcontractor. Use job costing for the fuller picture.
Export offers CSV, XLSX and PDF for the report's selected scope. CSV and XLSX include up to 50,000 rows per section; PDF includes up to 2,000. A truncated export says how many rows were included. The money display is in US dollars; there is no currency selector or exchange-rate conversion on this screen.
What it accepts
| Filter | Format | Required | Rule |
|---|---|---|---|
| From / To | YYYY-MM-DD | No | Missing or malformed dates use the default bounds; From later than To is clamped to To |
| Branch | Available branch | No | Restricted users remain in their allowed branch |
Both calendar bounds are inclusive for job creation. This is a read-only report; change subcontractor assignments or recorded costs on the source jobs.
How to configure it
Visit subcontractor assignments determine attribution. Recorded job subcontractor cost and signed job-revenue entries determine the figures. Branch scope governs visibility; there is no report setting that splits a multi-party job's cost automatically.
Who can see it
Owners, office managers and dispatchers can open Reports with the standard roles; technicians cannot. Custom roles can narrow access. Branch-limited users remain in their allowed branch, including on exports; changing the URL does not expand their scope. Company-wide users can compare available branches.
See Roles & permissions. This report and its exports also require permission to view costs. Access to Reports alone does not grant access to spend or margins.