Job Costing
1. Overview
Section titled “1. Overview”The Job Costing module tracks the complete financial lifecycle of projects — from initial contract and cost estimates through expense posting, billing, and closeout. It integrates with Accounts Receivable (invoices and payments), Inventory (material picks and allocations), and the General Ledger (cost postings and contract distributions).
Key capabilities include:
- Job management — track projects from contract through close, with customer and site linking
- Contracts and change orders — maintain original contract value and approved change orders
- Billing — bill each contract the way it was sold: progress (pay applications), time & material (the job’s costs), or a simple invoice, all from Bill Job
- Cost estimates — budget by cost category (material, labor, subcontractors, other)
- Expense posting — post individual labor, material, subcontractor, and other expenses
- Material posting — bulk-post material usage with inventory allocation
- Actual vs. Estimate (AvE) — compare budgeted and actual costs at any point
- Job close — finalize accounting and GL distributions at project completion
2. Key Concepts
Section titled “2. Key Concepts”-
Job — A project tracked from contract through completion. Each job is linked to a customer and site, has a type that controls available cost entry types, and accumulates costs against estimates. Jobs can be open (active) or closed (finalized). Example: Job J-1050, “HVAC Installation — Greenfield Construction, Building C.”
-
Job Contract & Change Orders — The original contract establishes the agreed revenue for the job and how it is billed (Progress, Time & Material, or Simple Invoice). Change orders add or subtract from the contract they change as scope changes occur. The Total Contract Amount = Original Contract + All Approved Change Orders.
-
Cost Estimate — A budget for the job broken down by cost category (Electrical, Mechanical, etc.) and cost type (Material, Labor, Subs, Other). Estimates are set per contract/change order and provide the baseline for Actual vs. Estimate comparisons.
-
Job Cost Entry — An individual expense posted to a job. Each entry has a cost type (Labor, Material, Subs, or Other), an amount, and optional overhead. Labor entries include hours; material entries include quantity. These accumulate as the job’s actual cost.
-
Overhead / Burden — Indirect costs applied as a percentage of direct costs. Each Job Cost Category has overhead factors (Material Factor, Labor Factor, Subs Factor). When a $1,000 labor expense is posted to a category with a 15% Labor Factor, the application calculates $150 in overhead. Burden % on the job applies to all labor costs.
-
WIP (Work in Progress) — Jobs flagged as “WIP Reportable” are included in work-in-progress financial reporting. WIP compares earned revenue against costs incurred to determine over/under billing positions — critical for construction accounting.
-
CPI (Cost Performance Index) — Budgeted Cost of Work Performed (BCWP) ÷ Actual Cost, where BCWP = Percent Complete × Estimated Cost. A CPI of 1.0 means the job is exactly on budget. Above 1.0 = under budget (good). Below 1.0 = over budget (investigate). The CPI is displayed on the per-job metrics dashboard with color coding: green (≥ 1.0), yellow (0.9–1.0), red (< 0.9).
3. How It Connects
Section titled “3. How It Connects”Upstream — Where Job Costing gets its data:
- CRM → A proposal can use Conversion Type = Job, which structures the proposal’s line items for job work, but jobs are created manually in Job Costing → Manage Jobs (the Create Job form). There is no automatic job creation that pre-populates customer, site, or estimated values from a proposal.
- Payroll (Timesheets) → Timesheet entries allocated to a job create labor cost entries when synced to payroll
- Accounts Payable → Vendor invoice lines distributed to a job create subcontractor or material cost entries
- Inventory → Material picks and allocations for a job create material cost entries; inventory is drawn from warehouse locations
Downstream — Where Job Costing sends its data:
- Accounts Receivable → Job invoicing creates AR invoices linked to the job. Invoice amounts appear in the Billing & Collections section of the job dashboard.
- General Ledger → Job expense postings create GL entries (debit expense accounts, credit cost accounts). Job close creates final GL distributions to the contract closing account.
- Reports → Job profitability, WIP, and Actual vs. Estimate reports read directly from job cost data.
Key Integration Point — Actual vs. Estimate: Every expense posted to a job is compared against the cost estimate on the per-job dashboard. This real-time comparison drives CPI, forecast final cost, and margin erosion/growth metrics. When a vendor invoice from FastPipe Supply is distributed to Job J-1050 in AP, the material expense immediately appears in the job’s Actual vs. Estimate comparison, updating the CPI and forecast.
4. Job Cost Dashboard
Section titled “4. Job Cost Dashboard”Navigation: Job Costing → Dashboard (the screen header reads “Job Cost Dashboard”)
The dashboard provides cross-job analysis with six charts, each with a date range filter (Start Date / End Date).
| Chart | Type | Description |
|---|---|---|
| Expenses by Cost Type | Bar chart | Total expense dollars grouped by job cost entry type (the named entry types such as “Direct Labor” or “Materials”), not the four Labor/Material/Subs/Other buckets. Y-axis formatted as currency. Zoom and navigator enabled. |
| Expenses by Job Type | Bar chart | Total expense dollars grouped by job type. Hover tooltip shows the full job type name. Zoom and navigator enabled. |
| AvE by Job Type | Grouped bar chart | Actual vs. Estimate cost comparison by job type. Two bars per job type: Actual and Estimate. Y-axis in dollars. Zoom and navigator enabled. |
| Labor Productivity (Hours) by Job Type | Grouped bar chart | Actual vs. estimated labor hours by job type. Y-axis in hours (2 decimal places). Zoom and navigator enabled. |
| Gross Margin by Job Type | Grouped bar chart | Actual vs. estimated gross margin percentage by job type. Y-axis as percentage (2 decimal places). Zoom and navigator enabled. |
| Contract Totals | Dual-axis bar chart | Dollar amounts and counts of job contracts by bucket (All, Contract, Change Order, and Pending Change Order). Left axis: amount ($); right axis: count. |
5. Jobs
Section titled “5. Jobs”Navigation: Job Costing → Manage Jobs
Search Jobs
Section titled “Search Jobs”Manage Jobs is a configurable search grid — columns can be shown, ordered, pinned, and saved per user. Click any row to open the job’s View screen in a new tab.
The toolbar provides:
- Search for a Job — quick text search that filters as you type.
- Open / All / Closed toggle — filter by job status. Open shows only open jobs, Closed only closed jobs, and All shows both.
- Tags filter — narrow the list to jobs carrying selected tags (requires the tag permission).
- Salesman column — the job’s assigned salesman is available as a column on the grid (show, order, and filter it like any other column).
- Edit / Delete row actions (require the Edit Job / Delete Job permissions) and a + header button to create a new job (requires the Create Job permission).
Create / Edit Job
Section titled “Create / Edit Job”| Field | Required | Description |
|---|---|---|
| Customer | Yes | The customer associated with this job |
| Site | Yes | The customer site address where work is performed. After selecting, the full address is displayed below. |
| Job ID | No | Unique job identifier. Optional and manually entered on create (must be unique if provided); read-only on edit. |
| Project Name | No | Descriptive project name |
| Job Type | Yes | The job type classification (controls which cost entry types are available and GL accounts) |
| Salesman | No | The salesman responsible for this job (selected from your salesman list) |
| Start Date | No | Planned start date |
| End Date | No | Planned end date |
| Customer Purchase Order Number | No | The customer’s PO number referencing this job |
| Commission | No | Commission dollar amount (default $0.00) |
| Retention | No | Retainage percentage held back from invoices, entered as a percent (default 0%). The View screen displays this as “Retention %”. |
| Burden | No | Labor burden percentage applied to labor costs; entered as a percent (default 0%) |
| Certified | No | Checkbox — marks the job as certified payroll |
| WIP Reportable | No | Checkbox — includes this job in Work-in-Progress reporting (default checked) |
| Notes | No | Free-text internal notes (multiline, 10 rows) |
Custom fields (configured per your site) appear at the bottom of the form.
Click Create (new job) or Save (existing job) to submit.
View Job
Section titled “View Job”The View Job screen is divided into a collapsible upper summary section and a lower tab section.
Upper Section — Job Summary
Section titled “Upper Section — Job Summary”The upper section can be collapsed or expanded using the expand/collapse button. It displays:
Left column — Customer & Site:
- Customer profile (name, contact info)
- Site address
Right column — Job Details:
| Field | Description |
|---|---|
| Job ID | |
| Salesman | The salesman responsible for the job |
| Customer PO Number | |
| Start Date / End Date | |
| Retention % / Burden % | |
| Project Name | |
| Contract Date | |
| Closed Date | When the job was closed (blank if open) |
| Last Change Date | Most recent change order date |
| Last Invoice Date | Most recent invoice date |
| Last Paid Date | Most recent payment date |
| Total Contract Amount | Original contract + change orders |
| Contract Amount | Original contract value |
| Change Order Amount | Approved change order total |
| Pending Change Order Amount | Total of change orders not yet approved by the customer (not included in the contract total) |
| Last Invoice Amount | Most recent invoice amount |
| Last Paid Amount | Most recent payment amount |
| Estimated Cost | Total estimated cost from the estimate |
| Estimated Hours | Total estimated labor hours |
| Commission | Commission dollar amount |
| Invoiced to Date | Cumulative invoiced amount |
| Paid to Date | Cumulative amount collected |
Status Chips (top of screen):
- Job Type — displays the assigned job type
- Open (green) or Closed (red) — current status
- Certified (yellow/warning) — appears when certified payroll is enabled
- WIP Reportable — appears when WIP reporting is active
- Tags — any tags applied to this job (requires tag permission)
Upper Tabs
Section titled “Upper Tabs”| Tab | Description |
|---|---|
| General | The summary fields described above |
| Notes | Job notes in formatted display |
| Custom Fields | Values for any configured custom fields |
Lower Tabs
Section titled “Lower Tabs”| Tab | Description |
|---|---|
| Dashboard | Per-job KPI dashboard (see Section 6) |
| Contracts | The job’s contracts, each followed by its change orders, with each contract’s billing type and each change order’s status. A contract’s ID links to its contract view screen; + creates a contract and the row icons add a change order, edit, or delete (see The Contracts tab). |
| Estimates | Estimated costs by category and cost type |
| Actual vs Est | Side-by-side comparison of actual vs. estimated costs by category |
| Invoices | AR invoices linked to this job |
| Job Expenses | All posted job expense entries |
| Job Expense Logs | Audit log of changes to job expense entries |
| Appointments | Read-only list of the job visits scheduled against this job — assigned date and time, appointment ID, status, scheduled employee, duration, completed date and time, work performed, and internal notes, with a View Forms action per row. Appointments are scheduled from the dispatch board and worked from the mobile app, not created or edited here. Visible with permission to view appointments. |
| Forms | The forms filled out on this job’s appointments, grouped by appointment; pick a form to view its captured field values. Visible with permission to view forms. |
| Communications | Communications (calls, emails, texts) logged against this job |
| Purchase Orders | Inventory purchase orders linked to this job |
| Attachments | Files and documents attached to this job |
Actions Dropdown
Section titled “Actions Dropdown”| Action | Description |
|---|---|
| Bill Job | Bill the job — opens Post Job Invoice for a Progress contract or Post Sale for a Time & Material or Simple Invoice contract, asking which contract when there are several (see Billing a job). Disabled if closed. |
| Manage Estimates | Navigate to the Estimates screen for this job (disabled if closed) |
| Post Expense | Navigate to Post Job Expense pre-loaded with this job (disabled if closed) |
| Close Job | Close the job and finalize GL distributions. Toggle — shows Reopen Job when closed. |
| Preview Pick Ticket | Preview the inventory pick ticket for this job |
| Email Pick Ticket | Email the pick ticket |
| Audit Job | View an audit trail of changes to this job |
| Edit Job | Navigate to the edit form (disabled if closed) |
| Delete Job | Delete the job after confirmation (disabled if closed) |
Job Expenses Tab — Rate Visibility
Section titled “Job Expenses Tab — Rate Visibility”Navigation: View Job screen → Job Expenses tab.
The Job Expenses tab lists every posted expense entry for the job. What labor cost detail a user sees in this grid depends on the Job Cost Show Rates misc permission.
When a user does not have the Job Cost Show Rates permission:
| Column | Behavior without permission |
|---|---|
| Regular Hours | Hidden — the column is removed from the grid and cannot be re-added through the column chooser. |
| Overtime Hours | Hidden — the column is removed from the grid and cannot be re-added through the column chooser. |
| Doubletime Hours | Hidden — the column is removed from the grid and cannot be re-added through the column chooser. |
| Expense Amount | Blank for Labor-type entries (the value is suppressed). Shown normally for non-Labor entries. |
| Overhead Amount | Blank for Labor-type entries (the value is suppressed). Shown normally for non-Labor entries. |
Users with the permission see all three hours columns and the Expense Amount and Overhead Amount values for labor entries as normal.
Actual vs Est Tab
Section titled “Actual vs Est Tab”The Actual vs Est tab on the View Job screen presents a side-by-side, per-cost-category grid comparing estimated costs against job-to-date (JTD) actuals. Each row is a Job Cost Category; the grid includes one row for every category that appears in either the job’s estimates or its posted expenses.
The Job Cost Category column is pinned to the left and sorted in ascending order. All dollar columns are formatted as currency and hour/quantity columns to two decimal places.
| Column | Description |
|---|---|
| Job Cost Category | The cost category for this row (pinned, sorted ascending) |
| Hrs Est | Estimated labor hours for the category (sum of the estimate lines’ Labor Hours) |
| Hrs JTD | Actual labor hours posted to date — regular + overtime + doubletime hours across all Labor-type expenses in the category |
| Qty Est | Estimated quantity (always displayed as 0) |
| Qty JTD | Actual quantity posted to date — the sum of the quantity field across all expenses in the category, regardless of cost type |
| Labor Est | Estimated labor dollars (sum of the estimate lines’ Labor Cost) |
| Labor JTD | Actual labor expense dollars posted to date (Labor-type expense amounts, excluding burden) |
| Burden JTD | Actual labor overhead/burden posted to date (the overhead amount on Labor-type expenses) |
| Mat’l Est | Estimated material dollars (sum of the estimate lines’ Material Cost) |
| Mat’l JTD | Actual material posted to date — material expense amount plus its overhead |
| Subs Est | Estimated subcontractor dollars (sum of the estimate lines’ Subs Cost) |
| Subs JTD | Actual subcontractor posted to date — subs expense amount plus its overhead |
| Other Est | Estimated other-cost dollars (sum of the estimate lines’ Other Cost) |
| Other JTD | Actual other cost posted to date — other expense amount plus its overhead |
| Total Est | Total estimated cost for the category (Labor Est + Mat’l Est + Subs Est + Other Est) |
| Total | Total actual cost posted to date (Labor JTD + Burden JTD + Mat’l JTD + Subs JTD + Other JTD) |
| % Diff | Total actual as a percentage of total estimate (Total ÷ Total Est × 100). Displays 0 when the category has no estimate. |
Job Expense Logs
Section titled “Job Expense Logs”The Job Expense Logs tab on the View Job screen shows a transaction history of the job’s posted material and expense activity. Each top-level row is one posting transaction; rows for tracked-inventory material postings can be expanded to reveal the inventory pick detail behind them.
Navigation: View Job screen → Job Expense Logs lower tab
Transaction Rows
Section titled “Transaction Rows”| Column | Description |
|---|---|
| Date | The transaction date of the posting |
| Expense Type | The job cost entry type used for the posting |
| Expense Amount | The expense dollar amount of the related job cost entry |
| OH Amount | The overhead dollar amount of the related job cost entry |
| User | The user who created the transaction |
| Reversed | Whether the transaction has been reversed |
| Reversal Date | The date the transaction was reversed (blank if not reversed) |
| Reversal User | The user who reversed the transaction (blank if not reversed) |
Expanding a Row to See the Pick Detail
Section titled “Expanding a Row to See the Pick Detail”A row can be expanded only when its posting is a Material cost type and the product is inventory-tracked. For those rows, an expand control appears at the left of the row.
- Find a material transaction row whose product is inventory-tracked.
- Click the expand control at the start of the row.
- The detail grid loads the inventory pick records that made up that posting.
The expanded detail grid shows one row per inventory pick with these columns:
| Column | Description |
|---|---|
| Product | The product that was picked |
| Location | The inventory location the quantity was drawn from |
| Serialized Product | The specific serialized unit, when the product is serialized |
| Pallet | The pallet the quantity was picked from, when applicable |
| Container Size | The container size of the picked quantity |
| Quantity | The quantity picked from that location |
Delete Job
Section titled “Delete Job”Delete permanently removes a job from the system. A confirmation dialog appears: “Are you sure you want to delete this job?”
Prerequisites:
- Job must be open — closed jobs cannot be deleted. Reopen the job first if needed.
- User must have the job delete permission.
- No close-date validation is required since deletion does not create GL entries.
Deleting a job removes the job record and its associated data (contracts, estimates, expense entries). This action cannot be undone.
6. Job Metrics Dashboard (Per-Job)
Section titled “6. Job Metrics Dashboard (Per-Job)”Accessed from the Dashboard tab on the View Job screen, this section provides deep financial KPIs for the selected job.
Progress
Section titled “Progress”- Percent Complete — horizontal progress bar showing the ratio of actual cost to estimated cost
- Earned Revenue — revenue recognized based on completion
- Backlog Remaining — remaining unearned contract value
Revenue
Section titled “Revenue”| KPI | Description |
|---|---|
| Original Contract | Base contract amount |
| Approved COs | Approved change order total (highlighted if non-zero) |
| Pending COs | Total of change orders not yet approved by the customer. Highlighted when non-zero and not included in Total Revenue. |
| Total Revenue | Contract + change orders (shown in green as “good”) |
| KPI | Description |
|---|---|
| Estimated Cost | Total from the job estimate, including burden. If a job has a Burden % configured, the estimate includes a Burden Estimated amount calculated from the labor estimate (unless the job type’s “Estimates Include Burden” flag is set, in which case burden is already included in the estimate figures). |
| Actual Cost | Actual posted expenses to date, including burden (shown in red if exceeds estimate) |
| Committed (POs) | Value of open purchase orders linked to this job |
| Remaining Committed | Undelivered PO value |
| Cost to Complete | Projected cost still required to finish |
Cost Breakdown Donut Chart shows the split between Actual, Committed (Open POs), and Estimated Remaining cost.
Actual vs. Estimates Stacked Horizontal Bar Chart compares Estimated and Actual cost by job cost category, sorted by total estimated descending. Tooltips show Est, Act, and Difference for each category.
Profitability
Section titled “Profitability”| KPI | Description |
|---|---|
| Estimated Margin | Expected gross margin (dollar + percent) |
| Actual Margin-to-Date | Realized gross margin on costs incurred so far |
| CPI | Cost Performance Index = BCWP ÷ Actual Cost, where BCWP = Percent Complete × Estimated Cost. ≥ 1.0 means on or under budget. Shown green (≥ 1.0), yellow (0.9–1.0), or red (< 0.9). |
| Forecast Final Cost | Projected total cost at completion based on current burn rate |
| Margin Growth/Erosion | Change in margin vs. original estimate |
| Forecast Margin | Projected final gross margin (dollar + percent) |
Margin Comparison Chart shows bars for Estimated, Actual-to-Date, and Forecast margins. Green bars = positive margin; red = negative.
Billing & Collections
Section titled “Billing & Collections”| KPI | Description |
|---|---|
| Invoiced to Date | Total invoiced, with billing % as sub-label |
| Paid to Date | Total collected |
| Accounts Receivable | Outstanding balance (highlighted yellow if > 0) |
| Retainage Held | Retention amount withheld |
| Collection Rate | Paid ÷ invoiced (green/yellow/red) |
| Over / Under Billing | Amount invoiced to date minus revenue earned. Positive = overbilled; negative = underbilled. |
Billing Summary Chart shows a bar comparison of Invoiced, Paid, A/R, and Retainage.
| KPI | Description |
|---|---|
| Estimated Hours | Hours from the labor estimate |
| Actual Hours | Labor hours posted to date |
| Labor Burn Rate | Actual hours ÷ estimated hours (% used). Highlighted yellow or red when over threshold. |
| Avg Daily Labor Spend | Total labor cost divided by the number of distinct days with any labor activity (the sub-label shows how many days were worked). |
| Avg Weekly Labor Spend | Total labor cost divided by the number of distinct weeks with any labor activity (the sub-label shows how many weeks were worked). |
Hours Chart compares total Estimated vs. Actual labor hours.
| KPI | Description |
|---|---|
| Cash Position | Net cash flow (collected − cost incurred). Green if positive, red if negative. |
7. Manage Estimates
Section titled “7. Manage Estimates”Navigation: Job Costing → Manage Estimates, or via Actions → Manage Estimates from a job
This screen sets the cost budget for a specific job contract.
Header
Section titled “Header”| Field | Required | Description |
|---|---|---|
| Job | Yes | Search for the job to estimate (searches open jobs by Job ID, customer name, or customer ID) |
| Customer | — | Read-only display of the selected job’s customer |
| Site | — | Read-only display of the selected job’s site address |
| Job Contract | Yes | Select which contract or change order to estimate. Switching contracts loads the existing estimates for that contract. |
| Contract Amount | — | Read-only display of the selected contract’s dollar value |
Estimate Grid
Section titled “Estimate Grid”Each row in the grid represents one cost category’s budget:
| Column | Description |
|---|---|
| Job Cost Category | Select the cost category for this estimate line |
| Material Cost | Estimated material dollars |
| Labor Hours | Estimated labor hours |
| Labor Cost | Estimated labor dollars |
| Subs Cost | Estimated subcontractor dollars |
| Other Cost | Estimated other cost dollars |
| Delete | Remove this estimate row |
- A new blank row is automatically added when you focus on the last row.
- The Estimate Total footer row shows the sum of all cost columns.
Buttons
Section titled “Buttons”| Button | Description |
|---|---|
| Save and Clear Job | Save the current estimates and clear the job field so you can estimate a different job |
| Save Current Estimate | Save the estimates for the current contract |
8. Post Job Expense
Section titled “8. Post Job Expense”Navigation: Job Costing → Post Job Expense, or via Actions → Post Expense from a job
This screen posts a single expense entry (labor, material, subcontractor, or other cost) to a job.
Transfer Mode
Section titled “Transfer Mode”The Transfer Expense toggle at the top switches between:
- Standard posting — records a new expense on the selected job
- Transfer — moves an existing expense from one job to another (the Transfer To Job field appears)
Header Fields
Section titled “Header Fields”| Field | Required | Description |
|---|---|---|
| Job | Yes | The job to post to (search filters to open jobs only) |
| Transfer To Job | Conditional | Target job when in Transfer mode (required if transferring) |
| Date | Yes | Transaction date |
| Job Expense Type | Yes | The expense type, filtered to match the selected job’s job type |
| Job Cost Category | Yes | The cost category for this expense |
| Vendor | Conditional | Required when the expense type has cost type Subs |
| Employee | Conditional | Enabled (editable) when the expense type has cost type Labor; optional — not required |
| Product | Conditional | Required when the expense type has cost type Material |
| Description | No | Free-text description of the expense |
| Invoice Number | No | Reference invoice number |
Labor Fields (visible when cost type = Labor)
Section titled “Labor Fields (visible when cost type = Labor)”| Field | Description |
|---|---|
| Regular Hours | Regular-time hours (2 decimal places). Negative values are allowed for corrections or adjustments. |
| Overtime Hours | Overtime hours (2 decimal places). Negative values are allowed for corrections or adjustments. |
| Doubletime Hours | Double-time hours (2 decimal places). Negative values are allowed for corrections or adjustments. |
Material Fields (visible when cost type = Material)
Section titled “Material Fields (visible when cost type = Material)”| Field | Description |
|---|---|
| Quantity | Quantity of material used (3 decimal places) |
Amount Fields
Section titled “Amount Fields”| Field | Required | Description |
|---|---|---|
| Expense Amount | No | Dollar amount of the expense (auto-computed from hours/quantity like Overhead Amount, but can be edited) |
| Overhead Amount | No | Calculated overhead amount (auto-computed based on cost category overhead factors; can be overridden) |
GL Accounts (read-only display)
Section titled “GL Accounts (read-only display)”| Field | Description |
|---|---|
| Debit GL | The GL account that will be debited for this expense |
| Credit GL | The GL account that will be credited for this expense |
| OH Debit GL | Overhead debit GL account |
| OH Credit GL | Overhead credit GL account |
These are automatically determined based on the expense type and job type configuration and cannot be manually changed.
For a Material expense, when you select a specific product the Credit GL defaults to that product’s stock (inventory) ledger account, so the credit reduces the same inventory account the stock was carried in. If no product is selected, it falls back to the expense type’s configured credit account.
Material Allocation
Section titled “Material Allocation”For Material-type expenses, an Allocation section appears below the GL accounts. This shows inventory reservations and allows you to select specific inventory locations to pick from for this material expense.
Action Buttons
Section titled “Action Buttons”| Button | Description |
|---|---|
| Recompute Amounts | Recalculates expense and overhead amounts based on current field values |
| Auto-Allocate Materials | Automatically selects inventory allocations for material expenses |
| Post | Submit the expense and reset the form for a new entry |
| Post & Reuse Job | Submit the expense and keep the current job selected (useful for posting multiple expenses to the same job) |
Insufficient Allocations Dialog
Section titled “Insufficient Allocations Dialog”If material allocations cannot fully cover the required quantity, a dialog titled “Allocations Not Made” appears showing:
- Product — the product with insufficient inventory
- Needed — quantity required
- Requested / Available — what was available
The expense was not posted. Click Acknowledge to dismiss the dialog, then add or adjust inventory allocations (or reduce the quantity) and post again.
Reverse Job Expense
Section titled “Reverse Job Expense”Reversing a job expense creates offsetting GL entries that negate the original expense posting, effectively undoing the expense without deleting the audit trail.
Navigation: On the View Job screen, open the Job Expenses tab, then click the Reverse button (history icon) on the expense row.
Reverse Dialog
Section titled “Reverse Dialog”| Field | Required | Description |
|---|---|---|
| Posting Date | Yes | The date for the reversal GL entries. Must pass close-date validation. |
Prerequisites
Section titled “Prerequisites”- Job must be open — expenses on closed jobs cannot be reversed.
- The expense must not already be reversed (the button is disabled for already-reversed entries).
- The expense must have a transaction log record.
- User must have the Reverse Job Cost Expense permission.
GL Impact
Section titled “GL Impact”The reversal creates four offsetting GL entries per expense:
- Debit GL — negative of the original expense amount
- Credit GL — the original expense amount (reversed direction)
- OH Debit GL — negative of the original overhead amount
- OH Credit GL — the original overhead amount (reversed direction)
For material expenses with inventory allocations, the reversal also reverses the inventory transaction, returning quantities to their original locations.
The original expense entry is marked as reversed with the reversal date and user. A new negative job cost entry is created as a mirror of the original.
Transfer Job Expense
Section titled “Transfer Job Expense”In addition to reversing an expense, you can move an individual already-posted expense entry from one job to another directly from the Job Expenses tab. Transferring an expense reverses the original posting on the source job and creates a matching new posting on the destination job, so the expense is removed from the original job and added to the target job without losing the audit trail.
Navigation: On the View Job screen, open the Job Expenses tab, then click the Transfer Expense button (compare-arrows icon) on the expense row.
Transfer Dialog
Section titled “Transfer Dialog”| Field | Required | Description |
|---|---|---|
| Transfer To Job | Yes | The open job to move the expense to. Type to search jobs by ID; only open (not closed) jobs appear in the list. |
Click Transfer to perform the move, or Cancel to close without changes.
Prerequisites
Section titled “Prerequisites”- The source job must be open — the Transfer Expense button does not appear on a closed job.
- The expense must have a transaction log record and must not already be reversed (the button is disabled for already-reversed entries).
- User must have the Post Job Cost Expense permission.
- The destination job must be open. Selecting a closed job is rejected with “Cannot transfer to a closed job. Please select another Job.”
- The destination job’s job type must have the same expense type as the entry being transferred. Otherwise the transfer is rejected with “Cannot transfer to a job who’s type does not have the same expense type.”
What Happens
Section titled “What Happens”When you confirm a transfer:
- The original expense entry on the source job is marked as reversed (with the reversal date and the acting user recorded), and a mirroring negative job cost entry is created on the source job to offset it.
- A new job cost entry — copying the original expense’s amount, overhead, quantity, hours, category, vendor/employee/product, invoice number, date, and description — is created on the destination job, along with its own posting transaction and log records.
- For material expenses, the associated inventory transaction logs are carried over to the destination job’s posting.
The transfer is subject to close-date validation before it is posted.
Why the Reverse / Transfer buttons are disabled
Section titled “Why the Reverse / Transfer buttons are disabled”On the Job Expenses grid, the Reverse (history icon) and Transfer (compare-arrows icon) buttons are disabled in some cases. Hover the button to see why:
| Situation | Tooltip |
|---|---|
| You lack the permission | ”You don’t have permission to reverse job cost expenses.” / “You don’t have permission to transfer job cost expenses.” |
| The expense is already reversed | ”This expense has already been reversed.” |
| The expense came from a vendor invoice | ”This expense was posted from a vendor invoice. Reverse or adjust it in Accounts Payable.” |
| The expense came from payroll | ”This expense was posted through Payroll. Reverse or adjust it in Payroll.” |
| The expense has no posting log | ”This expense has no posting log, so it can’t be reversed or transferred here.” |
View the Source Vendor Invoice
Section titled “View the Source Vendor Invoice”When a job expense was posted from a vendor invoice that has a filed document you can view, a View Invoice action (eye icon) appears on that row of the Job Expenses grid. Click it to open the invoice’s filed document in place — the scanned invoice, migrated invoice image, or uploaded file. If the invoice has more than one file attached, the dialog lets you switch between them. Because it only displays the document, this action stays available even on closed jobs.
Expenses posted from Accounts Payable or Payroll do not carry a job-cost posting log and must be reversed or adjusted in their source module. On a closed job the action buttons do not appear at all.
9. Post Job Materials
Section titled “9. Post Job Materials”Navigation: Job Costing → Post Job Materials
This screen allows bulk-posting of multiple material expenses against a job in a single transaction. It is more efficient than Post Job Expense when posting many material lines at once.
Header Fields
Section titled “Header Fields”| Field | Required | Description |
|---|---|---|
| Date | Yes | Transaction date for all materials in this posting |
| Job | Yes | The job to post to (open jobs only) |
| Invoice Number | No | Reference invoice number applied to all lines |
| Default Job Expense Type | No | Pre-fills the expense type on new rows |
| Default Job Cost Category | No | Pre-fills the cost category on new rows |
Materials Tab
Section titled “Materials Tab”An inline-editable grid where each row is a material expense:
| Column | Required | Description |
|---|---|---|
| Product | No | The material product |
| Description | No | Free-text description for this line |
| Job Expense Type | No | Expense type for this line. Required when a product is selected on the row (inherits the header default if one is set). |
| Job Cost Category | No | Cost category for this line. Required when a product is selected on the row (inherits the header default if one is set). |
| Quantity | No | Quantity used (3 decimal places). Required when a product is selected on the row. |
| Expense Amount | No | Dollar amount (currency; aggregated in footer) |
| Overhead Amount | No | Overhead amount (currency; aggregated in footer) |
| Row Actions (⋮) | — | Per-row menu: Recompute Expense, Recompute Overhead, Delete |
- A new blank row is added automatically as you work through the grid.
- The footer shows the sum of Expense Amount and Overhead Amount across all rows.
Allocations Tab
Section titled “Allocations Tab”Shows inventory allocation details — which specific inventory locations will be drawn from when this posting is committed.
Action Buttons
Section titled “Action Buttons”| Button | Description |
|---|---|
| Auto-Allocate | Automatically selects inventory allocations for all material lines |
| Post | Commit all material entries. Disabled until a job is selected. |
Insufficient Allocations Dialog
Section titled “Insufficient Allocations Dialog”Same as Post Job Expense — lists products with insufficient inventory. Click Acknowledge to proceed.
10. Billing a Job
Section titled “10. Billing a Job”Every job bills through its contracts, and every contract is billed one of three ways. You choose the way when you create the contract, and from then on billing the job is one button: Actions → Bill Job on the View Job screen (or Bill on the contract screen). ServiSuite opens the right screen for that contract’s type.
| Contract type | Use it when… | How it bills | Bills on |
|---|---|---|---|
| Progress | The job is a fixed-price contract billed in stages — construction and installation work, AIA pay applications, retainage | A schedule of values: each period you record how far along each line is, and a pay application bills the change | Post Job Invoice |
| Time & Material | You bill the customer for the labor, materials and other costs actually recorded on the job | The job’s unbilled costs come in as invoice lines — labor at the labor rate you pick, materials and other costs at cost plus a markup | Post Sale, with Add Unbilled Costs |
| Simple Invoice | You just need to send an invoice — a deposit, a lump sum, whatever you type | Free-form invoice lines | Post Sale |
Choosing a contract type
Section titled “Choosing a contract type”Pick the type that matches how your customer expects to be billed, not how big the job is.
Choose Progress when any of these is true:
- The customer (usually a general contractor) requires pay applications — the AIA G702/G703 forms or their equivalent — instead of ordinary invoices.
- The contract has retainage: the customer holds back a percentage of every bill until the job is done.
- You bill a fixed contract price in stages over the life of the job — typically monthly — by how far along each part of the work is.
- The customer approved a schedule of values (a line-by-line price breakdown) with the contract, or expects one with your first bill.
Choose Time & Material when the customer pays for the labor, materials and other costs actually spent on the job, at your rates and markup — there is no fixed price to bill against.
Choose Simple Invoice when you bill with ordinary invoices you write yourself: a deposit and a final bill, a single invoice at completion, or a few lump-sum invoices with no retainage and no pay-application forms. When in doubt on a small job, Simple Invoice is the right choice.
Key building blocks
Section titled “Key building blocks”| Term | What it is |
|---|---|
| Job Contract | The thing you bill. A job can have one or more contracts, each with its own billing type, plus any number of change orders. |
| Schedule of Values (SOV) | (Progress contracts) The line-by-line breakdown of the contract amount — one row per scope item, each with a scheduled value, a retainage %, and a revenue account. The base lines must add up to the contract amount. |
| Change Order (CO) | A change to a contract’s scope or price, added from the contract it changes. It is pending until the customer approves it. On a Progress contract an approved change order is always its own line on the schedule — positive or negative. |
| Pay Application | One posted progress bill against a contract’s schedule (Application #1, #2, …). Each one creates a customer invoice in Accounts Receivable. |
| Retention (Retainage) | A percentage of each line’s billing that the customer holds back until the work is done. On job contracts it is a real receivable (see Retention holdback). |
| Unbilled costs | (Time & Material) Job cost entries — labor, materials, subs and other — that no invoice has billed yet. |
Job contracts and the schedule of values
Section titled “Job contracts and the schedule of values”Navigation: View Job screen → Contracts tab
Creating a contract
Section titled “Creating a contract”On the Contracts tab, click + (New Contract). Change orders are not created here — add them from the contract they change (see Change orders).
| Field | Required | Description |
|---|---|---|
| ID | No | Leave blank to number it automatically. Read-only after creation. |
| Date | Yes | Contract date. Defaults to today. |
| Description | No | What the contract covers. For a Progress contract this also names the first schedule line. |
| Amount | Yes | The contract amount. Use $0.00 for a Time & Material contract with no fixed price. |
| Linked Lead | No | The lead/opportunity this contract came from. |
| How will this contract be billed? | Yes | Progress, Time & Material, or Simple Invoice. A one-line explanation of the choice appears under it. |
- Fill in the fields, choose how the contract will be billed, and click Create.
- Progress: the contract opens in Edit on its Schedule of Values tab. The schedule already has one line for the whole amount, named after the contract’s description (or the job’s project name). Click Save to keep a single line, or split it into the lines you bill against — they must still add up to the contract amount. The contract can be billed right away even if you click Cancel.
- Time & Material and Simple Invoice: the contract is saved and you stay on the job.
The Contracts tab
Section titled “The Contracts tab”The tab lists every contract on the job, each followed by its change orders (marked ↳).
| Column | Description |
|---|---|
| ID | Opens the contract screen |
| Description | |
| Type | The contract’s billing type (Progress, Time & Material, Simple Invoice), or Change order to contract for a change order. An older change order that can’t be matched to a contract shows Change order (not assigned to a contract). |
| Status | Awaiting approval for a change order the customer hasn’t approved |
| Date / Amount / Billed Amount / Estimated Cost / Estimated Hours / Lead |
Row actions: Add Change Order (contracts only), Edit (opens the contract screen in edit mode), and Delete.
The contract view screen
Section titled “The contract view screen”Navigation: Contracts tab → click a contract’s ID
The top of the screen shows the contract number and a chip with its type (for example Progress · Standard, Time & Material). The three everyday actions are buttons; the rest are under Actions:
| Button | What it does |
|---|---|
| Bill | Bills this contract — the same as Bill Job for this contract (see Billing a job) |
| Add Change Order | Adds a change order to this contract (see Change orders) |
| Edit | Edits the contract (see Editing a contract) |
| Actions → Release Retention | (Progress contracts) Opens Retention Adjustment for the customer |
| Actions → Convert to Change Order | Turns the contract into a change order — only if it has no posted pay applications and no change orders of its own |
| Actions → Delete | Deletes the contract (the server lists what has to be cleared first, if anything) |
The summary under the buttons depends on the type:
| Field | Progress | Time & Material / Simple Invoice |
|---|---|---|
| Original Contract | The contract amount | The contract amount |
| Markup on Costs | — | (Time & Material) The contract’s markup, or the job type’s, shown as “X% (job type)“ |
| Change Orders | Change orders on the schedule | Approved change orders |
| Contract Sum | Original + change orders on the schedule | Original + approved change orders — shown only when the contract has a fixed sum |
| Billed to Date | Completed + stored billed on pay applications | Invoices posted against the contract |
| Balance to Finish | Contract Sum − Billed to Date | Shown only when the contract has a fixed sum |
| Retention Held / Released | Retention withheld and not yet released; released to date (when any) | — |
Tabs:
- Schedule of Values (Progress) — the schedule lines with their live positions: Scheduled Value, Billed to Date, Stored, % Complete ((Billed + Stored) ÷ Scheduled Value), Retainage %, Held, Released, Revenue Account, and a CO flag on change-order lines.
- Change Orders (n) — this contract’s change orders and where each one stands (see Change orders).
- Pay Applications (Progress) — the contract’s pay-application history (see Application history).
- Estimates — cost estimates budgeted against this contract (with the View Job Cost Estimate permission).
Opening a change order shows a simpler screen: an Awaiting approval or Approved chip, a Changes Contract link back to its contract, its Amount, and Approve (while it’s pending), Edit, and Actions (Convert to Contract, Delete).
Editing a contract
Section titled “Editing a contract”Click Edit. The header fields and (on a Progress contract) the schedule become editable together, and one Save writes both — the schedule is checked against the new contract amount, so an amount change and the matching line changes land together or not at all.
| Field | Shown for | Description |
|---|---|---|
| Date, Description, Amount | All | |
| Billing Method | Contracts | Progress, Time & Material, or Simple Invoice (see below) |
| Invoice Format | Progress | Standard or AIA — the pay-application layout |
| Subcontract | Progress | Bill a general contractor under a subcontract — the pay application prints To Contractor / From Subcontractor (the G702S flavor) |
| Markup % (blank = job type’s X%) | Time & Material | The markup on material and other costs. Leave blank to use the job type’s T&M Markup %. |
| Linked Lead | All |
There is no approval checkbox — a change order is approved with its Approve button, which also puts it on the schedule.
Changing a contract’s billing method
Section titled “Changing a contract’s billing method”Change Billing Method in Edit and click Save.
- Switching to Progress starts a schedule of values with one line for the whole amount (edit it before saving). If the job has already been invoiced outside pay applications — through Sales Invoice or Post Sale — a warning appears: pay applications start from $0 billed, so switching would bill that work again. (Invoices tied to another contract on the job don’t count.) If this contract itself has already been invoiced outside pay applications, the save is refused: “This contract has already been invoiced outside pay applications (Sales Invoice or Post Sale) — progress billing would bill that work again. Keep it on Simple Invoice.”
- Switching away from Progress is refused while the contract has posted pay applications (void them first) or change orders on its schedule (take them off first). Otherwise its schedule of values is removed.
Setting up a schedule of values
Section titled “Setting up a schedule of values”A schedule of values is how a Progress contract gets billed: the contract amount broken into lines, and each pay application bills how far along each line is. Set it up once, right after you create the contract and before the first pay application — it is what the customer will check every bill against.
When it opens: creating a Progress contract opens the contract in Edit on its Schedule of Values tab, with one line for the whole contract amount. You can also come back any time with Edit on the contract screen.
- Decide the lines. Replace the single line with one line per part of the work you will bill separately (see How to break the contract down below), or keep the one line if the customer is happy to be billed against the whole contract.
- Enter each line. Give it a Description and a Base Amount. Fill in Item # if the customer uses item numbers. The Base Amount column must add up to the contract amount exactly — a warning shows the difference until it does.
- Choose each line’s Billing Method — Percent Complete or Milestone (see below).
- Set Retainage % and Retain on Stored on each line from your contract’s retainage terms.
- Leave Revenue Account blank unless a line should credit a different revenue account than the job type’s contract revenue account.
- Click Save. The contract is ready to bill.
How to break the contract down
- Use the customer’s breakdown when they give you one. If the general contractor sent a schedule of values, a bid form, or their own continuation-sheet layout, enter their lines in their order with their item numbers in Item #. Their reviewer compares your pay application to it line by line, and a mismatch is the most common reason a pay application is sent back.
- Otherwise, one line per phase or per part of the system. Lines should be pieces of work whose progress
you can state honestly each month. Typical examples:
- Plumbing: Underground, Rough-in, Top-out, Trim-out / fixtures.
- HVAC: Mobilization, Equipment, Ductwork, Piping, Controls, Startup & test and balance.
- Electrical: Underground / site, Rough-in, Gear, Fixtures & devices, Trim & testing.
- Give expensive equipment its own line. Chillers, rooftop units, switchgear and other long-lead or made-to-order equipment should each be a line, so you can bill them as stored materials when they are delivered, before they are installed.
- Put items you only bill when finished on their own line and make them Milestone lines — closeout documents, as-builts, permits and inspections, startup.
- A small job can be one line. If the customer only cares about percent complete overall, keep the single line the contract started with.
Percent Complete or Milestone
| Billing Method | Bills | Use it for |
|---|---|---|
| Percent Complete | Any amount from 0% to 100%, cumulatively, as the work progresses | Almost every line — work that is done a bit at a time |
| Milestone | All or nothing: the line is billed at 0% until it is billed at 100% in one application. It can’t carry stored materials, and once billed it is locked until that application is voided | Deliverables that are either done or not — closeout, startup, permits, a final inspection |
Retainage settings
- Retainage % — use the rate in your contract on every line it applies to. If the contract exempts some items from retainage, give those lines 0%. Keeping one rate across the schedule keeps the printed application simple: the G702 states a single retainage rate, and an approved change order’s line starts at the schedule’s rate when every retained line uses the same one (with mixed rates it starts at 0% and you set it on the new line).
- Retain on Stored — leave it checked if your contract retains on materials stored on site (the usual AIA arrangement). Uncheck it if retainage only applies once material is installed; retention on stored value is then withheld when the material is installed instead — delayed, not skipped. See Stored materials.
After billing has started, don’t re-price base lines to account for extra or reduced scope — that would restate percentages you have already billed. Add a change order instead; it goes on the schedule as its own line. You can still fix descriptions and item numbers at any time.
Editing the schedule of values
Section titled “Editing the schedule of values”In Edit on a Progress contract (requires the Manage Schedule of Values permission) each schedule line has:
| Column | Description |
|---|---|
| Seq | Sort order |
| Item # | Optional line code (e.g. an AIA item number) |
| Description | Line description (required) |
| Billing Method | Percent Complete (bill any % as work progresses) or Milestone (bill all-or-nothing — 0% or 100%). Locked once the line has billing history. |
| Base Amount | The line’s scheduled dollar value. Base lines cannot be negative — a deduct is a change order. |
| Scheduled Value | Base Amount + change-order adjustments (read-only) |
| Retainage % | Percentage of this line’s billing withheld as retention (0–100). Locked once the line has history. |
| Retain on Stored | Whether retention also applies to stored materials on this line. When it is off, retention on stored value is delayed, not skipped — it is withheld once the material is installed. Locked once the line has history. |
| Revenue Account | The GL revenue account credited when this line is billed. Blank falls back to the job type’s contract credit account (shown as Default (…)). |
A few more rules govern editing:
- Header vs. schedule permissions — editing the header fields requires the Job Contract edit permission; editing the schedule lines requires Manage Schedule of Values. A user with only the former can change the header while the schedule stays read-only.
- Scheduled value floor — a line’s scheduled value cannot be dropped below what it has already billed and stored to date. Void the applications that hold it up first.
- Change-order lines are fixed — a change order’s line carries exactly the change order’s amount. Once it is on a schedule, its amount can’t change and it can’t be un-approved. Issue another change order instead.
Billing a job (Bill Job)
Section titled “Billing a job (Bill Job)”Navigation: View Job screen → Actions → Bill Job, or Bill on the contract screen
- Click Bill Job. If the job has one contract, it is billed straight away. If it has several, a Which contract are you billing? dialog lists them with their type and amount — pick one. (Change orders aren’t listed; they bill through their contract.) If the job has no contracts, Post Sale opens for the job.
- ServiSuite opens the screen for that contract’s type:
- Progress → Post Job Invoice for the contract. If its schedule of values has no lines yet, the contract opens in Edit instead so you can build it first.
- Time & Material → Post Sale with the customer, job and contract filled in. Use Add Unbilled Costs to bring in the job’s costs.
- Simple Invoice → Post Sale with the customer, job and contract filled in. Type the invoice lines.
Bill Job is disabled on a closed job and for users who can open neither Post Job Invoice nor Post Sale. Billing a Progress contract needs the Post Job Invoice permission; billing the other two needs Post Sale.
Posting a pay application
Section titled “Posting a pay application”Navigation: Bill on a Progress contract, or Actions → Bill Job on its job
The Post Job Invoice screen bills each schedule line cumulatively — you enter the position the line should be at as of this application, not the delta. The header captures:
| Field | Required | Description |
|---|---|---|
| Invoice Date | Yes | The application/invoice date |
| Period To | No | The “work completed through” date printed on the application |
| Due Date | No | Defaults from the customer’s payment terms if left blank |
| Customer PO # | No | Overrides the job’s PO number on this application |
| Format | — | Standard or AIA (defaults from the contract’s Invoice Format) |
| Notes | No | Free-text notes printed on the application |
For each schedule line:
| Column | Description |
|---|---|
| Description | The schedule line description (read-only) |
| Scheduled Value | The line’s scheduled value (read-only) |
| Previous | Amount billed on prior applications (read-only) |
| % Complete | Cumulative percent complete — cross-computes with Completed to Date |
| Completed to Date | Cumulative completed dollars — cross-computes with % Complete |
| Stored Materials | Cumulative value of materials stored on site but not yet installed (hidden for Milestone lines) |
| Held | Retention currently held on the line (read-only) |
| Release This Period | Retention dollars to release back on this application (inline release). Released amounts are durable — later billing never re-withholds them. |
| Work This Period | Completed to Date − Previous (derived) |
| Retention Δ | Change in retention held this period (derived) |
| Net Amount | The amount due this period after retention (derived) |
The footer totals This Application, Retention, Released (when any), and Amount Due.
- Set the Invoice Date (and optionally Period To, Due Date, Customer PO #, Format).
- For each line, enter either a % Complete or a Completed to Date figure (the two stay in sync), and a Stored Materials figure if materials are on site. On a Milestone line, once it has been billed at 100% the fields lock — void and reissue to reverse it.
- Optionally enter Release This Period to hand back held retention on the same application.
- Click Preview to open a draft PDF of the application from the unsaved values.
- Click Post. The application is assigned the next application number and an invoice number, a customer AR invoice is generated, and the schedule of values advances.
GL for a posted pay application
Section titled “GL for a posted pay application”Posting a progress application recognizes revenue on the percentage-of-completion basis: installed work credits contract revenue, while newly-stored (not yet installed) material is deferred to Billings in Excess and reclassifies to revenue as it is installed. The account labels below are the AR Settings labels (Accounts Receivable → Settings).
For one application, the journal is:
| Account (AR Settings label) | Debit | Credit |
|---|---|---|
| Accounts Receivable Account | Net amount due (billed − retention withheld this period) | |
| Retention Receivable Account (Job Invoicing) | Retention withheld this period | |
| Contract revenue account (per schedule line; job type’s contract credit account by default) | Work completed (installed) this period | |
| Billings in Excess Account (Job Invoicing) | Stored materials added this period |
The debit and credit sides always balance, because net due + retention withheld = billed this period = installed work + stored materials. The customer invoice records a gross invoice total (this application’s billing) but an open balance equal to the net amount due; the withheld retention is not yet part of the collectible balance. The customer’s AR balance increases by the net amount due.
Change orders
Section titled “Change orders”A change order changes a contract’s scope or price. It belongs to the contract it changes, and on a Progress contract it always becomes its own line on the schedule of values — never an adjustment to an existing line, so the percentages already billed on the original lines never change.
Adding a change order
Section titled “Adding a change order”Navigation: contract screen → Add Change Order, or the job’s Contracts tab → the Add Change Order icon on the contract’s row
| Field | Required | Description |
|---|---|---|
| Date | Yes | Defaults to today |
| Description | Yes | What changed. On a Progress contract this names the new schedule line. |
| Amount (negative for a deduct) | Yes | The change in price. A deduct is entered as a negative amount. |
| Customer approved | — | Checked by default. Uncheck it if the customer hasn’t approved the change yet. |
- Fill in the fields. The text under Customer approved says what will happen.
- Click Add Change Order.
- Approved, on a Progress contract — the change order goes on the schedule as its own line, ready to bill on the next pay application. The new line takes the schedule’s retainage % when every retained line uses the same rate; otherwise it starts at 0% (set it before its first billing).
- Approved, on a Time & Material or Simple Invoice contract — the change order is added to the contract’s total.
- Not approved — the change order waits on the contract as Awaiting approval. It isn’t billable and counts toward the job’s Pending Change Order Amount, not its contract total.
The Change Orders tab
Section titled “The Change Orders tab”The contract screen’s Change Orders tab lists the contract’s change orders with a total of the approved ones (Approved change orders: $X). Each row’s Status tells you where it stands and what to do next:
| Status | Action |
|---|---|
| Awaiting approval | Approve — approves it and, on a Progress contract, puts it on the schedule as its own line |
| On the schedule — Own line N | Red trash icon — take it off the schedule (only if it hasn’t been billed). It stays approved. |
| Approved — not on the schedule | Put on schedule |
| Approved | (Time & Material and Simple Invoice contracts) Nothing to do — it’s in the contract total |
| Not assigned to a contract | Assign Here (or Approve Here if pending) — see below |
Approve, Put on schedule and Assign Here need the Job Contract edit permission; taking a change order off the schedule needs Manage Schedule of Values. None of them are offered on a closed job.
Change orders added before this release may sit on the schedule as an adjustment to an existing line; they show where they were applied (for example “A1 — Sitework”) and print that way on the documents.
Fixing a change order entered by mistake
Section titled “Fixing a change order entered by mistake”- If it has been billed, void the pay applications that billed it — newest first (see Voiding an application).
- On the contract’s Change Orders tab, take it off the schedule (red trash icon).
- Delete it — Actions → Delete on the change order’s screen, or the trash icon on the job’s Contracts tab.
A change order that is still on a schedule can’t be deleted: “This change order is on a contract’s schedule of values — take it off the schedule (the contract’s Change Orders tab) before deleting it.”
Change orders from before change orders belonged to a contract
Section titled “Change orders from before change orders belonged to a contract”Change orders recorded before they were tied to a contract are matched up automatically when the job has only one contract. On a job with several contracts they show on each contract’s Change Orders tab as Not assigned to a contract (and on the job’s Contracts tab as Change order (not assigned to a contract)). They are left out of every contract’s totals until you click Assign Here (or Approve Here) on the contract they belong to. Assigning one that is already on another contract’s schedule is refused — it belongs to that contract.
Converting
Section titled “Converting”Actions → Convert to Contract on a change order makes it a standalone contract (only if it isn’t on a schedule). Actions → Convert to Change Order on a contract archives its schedule and makes it a change order (only with no posted pay applications and no change orders of its own). Both need Manage Schedule of Values.
Time & Material billing
Section titled “Time & Material billing”A Time & Material contract bills the costs actually recorded on the job.
Markup: material, subs and other costs bill at cost plus a markup. Set the default per job type (T&M Markup % in Job Types); override it on a contract with Markup % in Edit (leave it blank to use the job type’s). The contract screen shows the one in effect as Markup on Costs.
-
Click Bill Job on the job (or Bill on the contract). Post Sale opens with the customer, job and contract filled in.
-
Click Add Unbilled Costs under the invoice grid. The dialog lists every cost on the job that no invoice has billed yet, each checked:
Column Description Date / Type / Description The cost entry — labor shows the employee, materials show the product Hours / Qty Labor hours, or the quantity (1 when the cost has none) Cost What the cost was recorded at Labor Rate (Labor) Pick the labor rate to bill, or leave Price it on the invoice Bills What the line will bill -
Pick a Labor Rate for each labor row you want priced, and uncheck anything to leave for a later invoice.
-
Click Add N Lines. The costs become ordinary invoice lines you can still edit:
- Labor — “Labor — employee (date)”, quantity = hours, unit price = the picked rate (blank if you left Price it on the invoice).
- Material, subs and other — the product’s description (and number), or the cost’s description, at cost × (1 + markup).
- Each line’s Account defaults to the job type’s sales account.
-
Fill in any missing prices, review the total, and click Post.
Posting marks each cost billed, so it won’t be offered again. If the sale is held for approval (a closed period), the costs are marked when the posting is approved.
- $0 lines — a line that bills a job cost at $0 shows a warning in the yellow box above the grid: “Labor — Pat Smith (03/12/2026)” bills at $0.00 — posting marks that cost billed, so it won’t come up to bill again. Post still works — that’s right for a deliberate no-charge line; if you just forgot the price, type it in and the warning clears.
- Labor with no hours — a labor cost recorded as an amount with no hours comes in at quantity 0, so it bills $0 whatever rate you pick. Set a quantity, or clear Qty and type the amount.
- Billing a cost again — to re-bill costs after a correction, tick Also show costs already billed in the dialog. Already-billed rows are marked “(billed)” and unchecked; check the ones you need. Posting moves their billed mark to the new invoice.
- A line that bills a job cost needs the sale’s Job — Post Sale refuses it otherwise (“This line bills a job cost — choose the job it belongs to”).
Simple Invoice billing
Section titled “Simple Invoice billing”Click Bill Job on the job (or Bill on the contract). Post Sale opens with the customer, job and contract filled in; type the invoice lines and post. See Post Sale.
Retention holdback on job invoices
Section titled “Retention holdback on job invoices”On a job contract, retention withheld on a pay application is a real receivable, not just a memo: the net (after-retention) amount posts to the customer’s AR balance, and the held portion posts to the separate Retention Receivable Account (Job Invoicing). Retention accumulates on each schedule line as you bill.
Retention is released — not edited in place — from the Retention Adjustment screen, reached via Actions → Release Retention on a Progress contract’s screen. In the Job Retention (Holdback) section you release an amount per line (by % of the held amount or as a dollar figure) and click Release Retention; the system generates a retention release invoice per contract and posts:
| Account (AR Settings label) | Debit | Credit |
|---|---|---|
| Accounts Receivable Account | Released amount | |
| Retention Receivable Account (Job Invoicing) | Released amount |
A release recognizes no new revenue — it moves money from the retention account into regular receivables. The release invoice carries a gross total of $0.00 and a balance equal to the released amount, and is labeled as a retention release. There is no in-place edit of a posted release: to correct one, void the release invoice. Retention can also be handed back inline on a regular application via the Release This Period column. Full details of the Retention Adjustment screen (including legacy memo retention) are in Accounts Receivable → Retention Adjustment.
Stored materials
Section titled “Stored materials”What it is. Stored materials are materials that have been delivered for the job — to the site, or to a secured location the contract allows — but not yet installed. On a Progress contract you can bill for them before they are installed: a chiller that arrives in March but is set in May can be billed on the March pay application. It prints in the Materials Presently Stored column (column F) of the AIA continuation sheet.
When to use it. Bill stored materials when your contract allows it (most AIA contracts do) and the material has actually been delivered — typically expensive, long-lead or made-to-order equipment that otherwise ties up your cash for weeks before it can be installed. Give that equipment its own schedule line (see Setting up a schedule of values). Don’t bill stored materials for anything not yet delivered, and leave the column at zero if your contract doesn’t allow it. Milestone lines can’t carry stored materials.
How to bill it. The Stored Materials column on Post Job Invoice is cumulative — enter the value currently stored, not the change.
- Delivered — raise the line’s Stored Materials by the value delivered. The application bills the increase.
- Installed — on a later application, raise Completed to Date and lower Stored Materials by the value installed. The two moves cancel out: nothing new is billed, because the customer was already billed for that material.
- Removed without being installed (returned, rejected, moved to another job) — lower Stored Materials without raising Completed. The application credits that amount back to the customer.
Completed to Date plus Stored Materials can never exceed the line’s scheduled value.
What it does to the books
- It isn’t revenue yet. Stored value you bill is credited to the Billings in Excess Account (Job Invoicing) — a liability: you have billed for work you haven’t performed. When the material is installed (step 2), that amount moves out of Billings in Excess into the line’s contract revenue account. AR Settings must have a Billings in Excess account, or any application that changes stored materials won’t post.
- The customer owes it like any other billing. The billed amount, less retention, goes on the customer’s AR balance.
- Retention. With Retain on Stored checked, retention is withheld on stored value when it is billed. Unchecked, retention on that value is withheld when it is installed instead — delayed, not skipped.
- Over / Under Billing. The job dashboard’s Over / Under Billing compares what you have invoiced with earned revenue, which is based on cost: earned revenue = (actual cost ÷ estimated cost) × contract revenue. Billing stored materials raises invoiced-to-date right away, so the job reads as overbilled until the material’s cost is posted to the job. Positive means billed ahead of earned revenue (overbilled), negative means earned more than billed (underbilled).
- A check against cost. When posting a pay application, ServiSuite warns (without blocking) if the stored materials billed across the job exceed the material cost received in job cost — a prompt to make sure what you bill as stored was actually delivered.
Subcontract billing (G702S)
Section titled “Subcontract billing (G702S)”When a Progress contract is flagged Subcontract (in Edit), its AIA pay application renders the G702S flavor: the certificate cover reads APPLICATION AND CERTIFICATE FOR PAYMENT with TO CONTRACTOR / FROM SUBCONTRACTOR blocks (instead of TO OWNER / FROM CONTRACTOR), and it certifies work “in connection with the Subcontract.” Use it when you are billing a general contractor as their subcontractor.
Printed documents
Section titled “Printed documents”Each posted application prints in the contract’s configured format — overridable per application at posting time via the Format field. A Preview prints a DRAFT watermark; a voided application reprints with a VOID watermark.
- Standard — a progress invoice: a line grid (scheduled value, % complete, work this period, stored, retention, amount this period), a separate CHANGE ORDERS section for change-order lines, a Change Order Register, and a totals box (contract sum to date, retention held to date, amount due). A retention-release invoice prints under a RETENTION RELEASE title.
- AIA — an AIA-style pay application: a G702-equivalent certificate cover (numbered lines 1–9, with the retainage split into a. Completed Work and b. Stored Material, contractor certification and architect certificate blocks, and the Change Order Register) plus a G703-equivalent continuation sheet whose columns run through I — Retainage, with change-order lines listed under their own CHANGE ORDERS heading.
Application history
Section titled “Application history”The contract screen’s Pay Applications tab lists the contract’s pay applications:
| Column | Description |
|---|---|
| App # | Sequential application number |
| Invoice # | The generated invoice number (opens the job invoice detail) |
| Date | Invoice date |
| Type | Progress or Retention Release (a progress application that only returns retention also reads as Retention Release) |
| This Application | Gross billing this application |
| Retention | Retention change this application |
| Amount Due | Net amount due |
| Status | Voided applications are chipped Voided |
A Show Voided toggle reveals voided applications. Each row’s action menu offers View PDF, Email (sends the application PDF to customer contacts), View Customer Invoice, and Void. Every pay application also appears on the job’s Invoices tab with the rest of the job’s invoices.
Voiding an application
Section titled “Voiding an application”Void reverses the application’s ledger entries and unwinds the schedule-of-values progress. Because the billing math is cumulative, applications must be voided newest-first — only the latest non-voided application on a contract can be voided (the menu item is disabled otherwise). Enter a Void Date and confirm. If payments had been applied to the invoice, they become a credit on the voided invoice to be reapplied to the corrected invoice. Voiding requires the Void Job Invoice permission. Because application numbers count only non-voided applications, voiding the latest one frees its number for the next posting to reuse.
The job invoice record
Section titled “The job invoice record”Clicking an invoice number in any applications table opens the View Job Invoice screen — a read-only record of one posted application. It shows:
- A type chip (Progress Billing or Retention Release), and a Voided chip and banner when the application has been voided.
- Header details: Job (a link back to the job), Contract, Application #, Invoice Date, Period To, Format, Customer PO #, and Notes.
- The per-line billing snapshot exactly as it posted (Scheduled Value, % Complete, Completed to Date, Stored Materials, Work This Period, Retention Δ, Released, Net Amount), and the This Application / Retention / Amount Due totals.
The Actions menu offers View Invoice PDF, Email Invoice PDF, and View Customer Invoice.
11. Close Job
Section titled “11. Close Job”Navigation: Job Costing → Close Job, or via Actions → Close Job from a job
This screen finalizes a job by posting the closing GL distributions and locking the job from further changes.
Header Fields
Section titled “Header Fields”| Field | Required | Description |
|---|---|---|
| Job | Yes | Search for the job to close (by Job ID, customer name, or customer ID) |
| Close Date | Yes | The date of closing. The close form validates that this date is on or after the latest invoice and payment date on the job. |
Read-Only Summary Fields
Section titled “Read-Only Summary Fields”Once a job is selected, the following information is displayed:
| Field | Description |
|---|---|
| Contract Amount Total | Total contract value including change orders |
| Contract Date | Date of the original contract |
| Site Address | Job site address |
| Invoiced Total | Total amount invoiced against this job |
| Last Invoice Date | Date of the most recent invoice |
| Paid Total | Total collected |
| Last Paid Date | Date of the most recent payment |
| Closing Contract GL | The GL account that will receive the contract closing entry |
| Expense Total | Total actual expenses posted to this job |
| Estimate Total | Total estimated cost from the job estimate |
Status Indicators
Section titled “Status Indicators”Chips appear to flag issues before closing:
| Indicator | Color | Meaning |
|---|---|---|
| Expenses More Than Estimate | Yellow (warning) | Total actual posted expenses (expense + overhead) exceed the estimated cost |
| Expenses Less Than Estimate | Green (success) | Total actual posted expenses (expense + overhead) are at or below the estimated cost |
| Job Not Fully Invoiced | Red (error) | Revenue has not been fully billed |
| Invoices Not Fully Paid | Red (error) | Outstanding AR balance remains |
If the job has not been fully invoiced or paid, a confirmation dialog appears: “This job has not been fully invoiced and/or paid. Do you still wish to close?” You can proceed or cancel.
| Tab | Description |
|---|---|
| Job Expenses | Detailed list of all expense entries that will be included in the close |
| GL Distributions | The GL debit/credit lines that will be posted when the job is closed |
Action Button
Section titled “Action Button”Click Close Job to finalize. The button is disabled if the job is already closed.
Reopen Job
Section titled “Reopen Job”Closed jobs can be reopened from Actions → Reopen Job on the View Job screen. Reopening reverses all of the closing GL distributions, allowing additional expense postings and billing changes.
What happens when a job is reopened:
- The system reverses every closing GL entry that was created when the job was closed — both expense closing entries and the contract amount closing entry.
- All reversal entries are posted to the “Reopen Job” subledger with the description “Reopening Job [Job ID]”.
- The job’s status is set back to open and its closed date is cleared.
- The job returns to Open status, and all actions (Post Expense, Manage Estimates, Edit Job) become available again.
Prerequisites:
- Job must be closed — the Reopen action is hidden when the job is already open.
- User must have the Re-Open Job permission.
- The reopen posts at the current date and runs through the standard GL close-date check. If that date falls in a closed GL period, the reopen is submitted to the head accountant for approval (or requires a password) before it can post.
12. Job Costing Settings
Section titled “12. Job Costing Settings”Navigation: Job Costing → Settings
The settings screen organizes reference data into three tabs.
Job Types Tab
Section titled “Job Types Tab”Displays and manages job type definitions. Requires the View Job Type permission to see this tab.
Grid Columns:
| Column | Description |
|---|---|
| Job Type ID | The short code for this job type |
| Name | Full name of the job type |
| Contract Credit GL | Contract credit ledger account assigned to this job type |
| Contract Closing Credit GL | Contract closing credit ledger account assigned to this job type |
| Estimates Include Burden | Whether labor burden is already pre-factored into this job type’s estimates |
| Disabled | Whether this job type is currently inactive |
Actions:
- + — Create a new job type (requires the Create Job Type permission)
- Edit (pencil) — Modify an existing job type (requires the Edit Job Type permission; unavailable on disabled job types)
- Enable (green checkmark) — Re-enable a disabled job type (requires the Edit Job Type permission; shown in place of Delete on disabled rows)
- Delete — Remove a job type (requires the Delete Job Type permission). If any jobs are associated with the type, it is set to disabled instead of deleted, and the message “There are existing/archived jobs associated with this type. Type has been set to disabled.” is shown.
- Show/Hide Disabled toggle — Shows or hides disabled job types (disabled job types are hidden by default)
Click a job type row to open the Job Type View screen.
Create / Edit Dialog:
| Field | Required | Description |
|---|---|---|
| ID | Yes | The short code for the job type. Must be unique across job types. Read-only after creation. |
| Name | Yes | Full name of the job type. |
| Contract Credit GL | Yes | Serves two purposes: it is the default revenue account for job invoice (pay application) lines of jobs of this type, and it is the offset account debited for the total contract amount when the job is closed (paired with the Contract Closing Credit GL). |
| Contract Closing Credit GL | Yes | GL account credited for the total contract amount when the job is closed, recognizing the contract as revenue. |
| Estimates Include Burden | No | Mark this checkbox if labor burden is already pre-factored when creating estimates for jobs of this type. Defaults to off. |
| T&M Markup % | No | The markup added to material, subs and other costs when a Time & Material contract on a job of this type is billed (see Time & Material billing). A contract can set its own. Defaults to 0. |
The Job Cost Entry Types tab on the Job Type View screen shows which expense types are available for jobs of this type.
Job Cost Entry Types Tab
Section titled “Job Cost Entry Types Tab”Job cost entry types define the categories of expenses that can be posted to jobs (e.g., “Direct Labor”, “Overtime”, “Materials - Electrical”).
Grid Columns:
| Column | Description |
|---|---|
| Name | Entry type name |
| Cost Type | Labor, Material, Subs, or Other |
| Disabled | Whether this entry type is currently inactive |
Actions:
- + — Create a new entry type
- Edit — Modify an existing entry type
- Enable (green checkmark) — Re-enable a disabled entry type
- Delete — Remove an entry type. If any job cost entries are associated with it, it is set to disabled instead of deleted, and the message “There are existing/archived job cost entries associated with this type. Entry type has been set to disabled.” is shown.
- Show/Hide Disabled toggle — Shows or hides disabled entry types
Create / Edit Dialog:
| Field | Required | Description |
|---|---|---|
| Name | Yes | Entry type name. Must be unique. |
| Cost Type | Yes | Labor, Material, Subs, or Other. Read-only after creation. |
Job Type Detail — Associated Job Cost Entry Types
Section titled “Job Type Detail — Associated Job Cost Entry Types”Navigation: Job Costing → Settings → Job Types tab → click a job type to open the View Job Type screen, then the Job Cost Entry Types tab.
The top card of the View Job Type screen shows the job type’s Job Type ID, Name, Contract Credit GL, and Contract Closing Credit GL. Below it, the Job Cost Entry Types tab is a full management surface that controls which cost entry types are available to jobs of this type and, for each one, which GL accounts are used when expenses are posted.
Each row associates one cost entry type (the catalog entries from the Job Cost Entry Types tab) with this job type and its own set of GL accounts. Only cost types that are not already associated with this job type are offered when adding a new association.
Grid Columns:
| Column | Description |
|---|---|
| Name | The cost entry type’s name |
| Cost Type | The cost type of the entry type (Labor, Material, Subs, or Other) |
| Debit | The GL account debited for the base expense when an expense is posted |
| Credit | The GL account credited for the base expense when an expense is posted |
| Closing Debit | The GL account debited for the accumulated base expense when the job is closed (the Debit account is reversed at the same time) |
| Overhead Debit | The GL account debited for the overhead portion when an expense is posted |
| Overhead Credit | The GL account credited for the overhead portion when an expense is posted |
| Overhead Closing Debit | The GL account debited for the accumulated overhead when the job is closed (the Overhead Debit account is reversed at the same time) |
| Use Job Specific Burden | Whether labor overhead for this entry type is calculated from the job’s Burden % instead of the cost category’s Labor Factor |
Actions:
- + (Create Associated Entry Type) — Add a new cost entry type association to this job type. Requires the Create Job Type Job Cost Entry Type permission.
- Edit (pencil) — Modify the GL accounts and burden flag of an existing association. Requires the Edit Job Type Job Cost Entry Type permission; disabled for disabled rows.
- Enable (green checkmark) — Re-enable a disabled association. Requires the Edit Job Type Job Cost Entry Type permission.
- Disable (trash) — Disable (soft-delete) an association so the cost type is no longer available for this job type. Requires the Edit Job Type Job Cost Entry Type permission.
- Show/Hide Disabled toggle — Shows or hides disabled associations. By default disabled associations are hidden.
Create / Edit Dialog (titled “Create New Associated Job Cost Entry Type” or “Edit Associated Job Cost Entry Type”):
| Field | Required | Description |
|---|---|---|
| Cost Type | Yes | The cost entry type to associate. Only entry types not already associated with this job type appear in the list. |
| Debit GL | Yes | GL account debited for the base expense amount when an expense is posted |
| Credit GL | Yes | GL account credited for the base expense amount when an expense is posted |
| Closing Debit GL | Yes | GL account debited for the accumulated base expense when the job is closed; the Debit GL is reversed at the same time |
| Overhead Debit GL | Yes | GL account debited for the overhead amount when an expense is posted |
| Overhead Credit GL | Yes | GL account credited for the overhead amount when an expense is posted |
| Overhead Closing Debit GL | Yes | GL account debited for the accumulated overhead when the job is closed; the Overhead Debit GL is reversed at the same time |
| Should Use Job Specific Burden | No | When checked, labor costs posted to this entry type from payroll compute their overhead from the job’s Burden % rather than the cost category’s Labor Factor. Defaults to off. |
Job Cost Categories Tab
Section titled “Job Cost Categories Tab”Job cost categories segment costs within a job for more granular reporting and overhead calculations.
Grid Columns:
| Column | Description |
|---|---|
| Category ID | Short code for this category |
| Description | Full category name |
| Material Factor | Overhead multiplier applied to material costs (%) |
| Labor Factor | Overhead multiplier applied to labor costs (%) |
| Subs Factor | Overhead multiplier applied to subcontractor costs (%) |
Actions: Create (+) and Edit (pencil) buttons.
Create / Edit Dialog:
| Field | Required | Description |
|---|---|---|
| ID | Yes | Unique category code. Read-only after creation. |
| Description | Yes | Category name |
| Material Factor | No | Overhead percentage applied to material expenses (2 decimal places). Defaults to 0.00. |
| Labor Factor | No | Overhead percentage applied to labor expenses (2 decimal places). Defaults to 0.00. On Post Job Expense, a labor expense uses this factor when it is above 0; at 0 it falls back to the job’s Burden %. |
| Subs Factor | No | Overhead percentage applied to subcontractor expenses (2 decimal places). Defaults to 0.00. |
13. Permissions
Section titled “13. Permissions”For the complete list of permissions in this module and what each one allows, see the Permissions Reference.
| Permission | Actions | Description |
|---|---|---|
| Job | Create, View, Edit, Delete | Manage jobs |
| Job Type | Create, View, Edit, Delete | Manage job types. View gates viewing/selecting job types and seeing the Job Types settings tab; Create, Edit, and Delete gate adding, editing, and removing job types |
| Job Cost Entry Type | Create, View, Edit, Delete | Manage job cost entry types. View gates viewing the Job Cost Entry Types settings tab; Create, Edit, and Delete gate adding, editing, and removing entry types |
| Job Cost Category | Create, View, Edit, Delete | Manage job cost categories. View gates viewing the Job Cost Categories settings tab; Create, Edit, and Delete gate adding, editing, and removing categories |
| Job Contract | Create, View, Edit, Delete | Manage job contracts and change orders. Create also allows Add Change Order; Edit allows editing a contract’s header and Approve / Put on schedule / Assign Here on change orders |
| Job Cost Estimate | Create, View, Edit, Delete | Manage cost estimates |
| Job Cost Entry | Create, View, Edit, Delete | Post and view job expenses |
| Post Job Cost Expense | — | Screen permission: access to the Post Job Expense screen |
| Post Job Materials | — | Screen permission: access to the Post Job Materials screen |
| Close Job | — | Screen permission: access to the Close Job screen |
| Post Job Invoice | — | Permission set: post pay applications (Bill on a Progress contract) and open the Post/View Job Invoice and View Job Contract screens (includes preview, PDF, and email of applications) |
| Post Sale | — | Permission set (AR module): needed to Bill Time & Material and Simple Invoice contracts, which bill on Post Sale |
| Manage Schedule of Values | — | Permission set: edit a contract’s schedule of values, take change orders off a schedule, convert a contract’s type, and delete contracts and change orders |
| Void Job Invoice | — | Permission set: void a posted pay application |
| Adjust Retention | — | Permission set (AR module): release/adjust retention from the Retention Adjustment screen; enables Actions → Release Retention on a Progress contract’s screen |
| Re-Open Job | — | Misc permission: ability to reopen a closed job |
| View Attachments | — | Misc permission: view and upload job attachments |
| Manage Tag Definitions | — | Misc permission: view and manage job tags |
| Job Cost Show Rates | — | Misc permission: shows the Regular/Overtime/Doubletime Hours columns on the Job Expenses grid and reveals the Expense Amount and Overhead Amount values for labor entries. Without it, those hours columns are hidden and labor expense/overhead amounts are blanked. |
14. Worked Examples
Section titled “14. Worked Examples”Example 1: Setting Up a New Job with Estimates
Section titled “Example 1: Setting Up a New Job with Estimates”Scenario: Precision Mechanical wins a $125,000 HVAC installation contract for Greenfield Construction, Building C. Tom (Project Manager) sets up the job with a full cost estimate.
Step 1 — Create the job:
- Navigate to Job Costing → Manage Jobs and click +.
- Customer = Greenfield Construction, Site = Building C — 450 Industrial Pkwy.
- Job ID =
J-1050, Project Name =HVAC Install — Building C. - Job Type = Mechanical Install, Start Date =
03/01/2026, End Date =06/30/2026. - Retention % = 10%, Burden % = 12%, WIP Reportable = ✓.
- Click Create.
Step 2 — Create the contract:
- On the View Job screen, open the Contracts tab and click +.
- Amount = $125,000.00, Date =
02/15/2026, Description =HVAC Install — Building C. - Under How will this contract be billed?, choose Progress and click Create.
- The contract opens on its Schedule of Values with one $125,000 line. Split it into the lines you will bill (for example Ductwork, Equipment, Controls, Piping — they must still total $125,000) and click Save.
Step 3 — Enter cost estimates:
- Navigate to Actions → Manage Estimates.
- Select Job = J-1050, Contract = Original Contract ($125,000).
- Enter estimates by category:
| Cost Category | Material | Labor Hours | Labor $ | Subs | Other | Total |
|---|---|---|---|---|---|---|
| Ductwork | $18,000 | 200 | $12,000 | $0 | $500 | $30,500 |
| Equipment | $35,000 | 80 | $4,800 | $0 | $0 | $39,800 |
| Controls | $8,000 | 120 | $7,200 | $5,000 | $0 | $20,200 |
| Piping | $6,000 | 100 | $6,000 | $0 | $300 | $12,300 |
| Estimate Total | $67,000 | 500 | $30,000 | $5,000 | $800 | $102,800 |
- Click Save Current Estimate.
Result: Job J-1050 is open with a $125,000 contract and $102,800 in estimated costs. Estimated margin = $22,200 (17.8%).
Example 2: Posting Mixed Expenses and Monitoring Health
Section titled “Example 2: Posting Mixed Expenses and Monitoring Health”Scenario: Three weeks into Job J-1050, Tom reviews the job after posting labor, subcontractor, and material expenses.
Expenses posted so far:
| Date | Type | Category | Description | Amount |
|---|---|---|---|---|
| 03/05 | Labor | Ductwork | Mike Torres — 40 reg hrs × $30/hr | $1,200.00 |
| 03/05 | Labor | Ductwork | Mike Torres — 8 OT hrs × $45/hr | $360.00 |
| 03/10 | Material | Equipment | 2 × Carrier RTU (from inventory) | $14,200.00 |
| 03/12 | Subs | Controls | ABC Controls — panel installation | $4,800.00 |
| 03/15 | Labor | Piping | Mike Torres — 32 reg hrs × $30/hr | $960.00 |
Total actual cost to date: $21,520.00
Checking job health on the Dashboard tab:
- Percent Complete: 20.9% (based on actual cost vs. estimated cost)
- Actual Cost: $21,520.00
- Estimated Cost: $102,800.00
- CPI: budgeted cost of work performed ÷ actual cost = (percent complete × estimated cost) ÷ actual cost = 1.00 (green — at or above 1.0). Because percent complete is itself actual cost ÷ estimated cost, this metric stays pinned at 1.00 whenever cost has been posted
- Actual Margin-to-Date: $26,167 - $21,520 = +$4,647 (a modest positive margin at this early stage)
- Forecast Final Cost: $102,800 (tracking to estimate)
- Labor Burn Rate: 80 hours used ÷ 500 estimated = 16% (healthy)
Key observation: The subcontractor cost ($4,800) is tracking close to the $5,000 Controls subs estimate — Tom notes this may need a change order if additional controls work is required.
Example 3: Change Order and Job Close
Section titled “Example 3: Change Order and Job Close”Scenario: Greenfield Construction requests additional ductwork that adds $15,000 to the contract. After completion, Tom closes the job.
Step 1 — Add the change order:
- On Job J-1050, open the Contracts tab and click the contract’s ID to open it.
- Click Add Change Order.
- Enter Description = “Additional return ductwork — floors 3-4” and Amount = $15,000.00, and leave Customer approved checked (an unapproved change order waits as Awaiting approval and does not count toward the total).
- Click Add Change Order. Because the contract is Progress, the change order goes on the schedule of values as its own line, ready to bill on the next pay application.
- Total Contract Amount is now $125,000 + $15,000 = $140,000.00.
Step 2 — Enter change order estimates:
- Navigate to Actions → Manage Estimates.
- Switch to Job Contract = Change Order #1 ($15,000).
- Add estimate: Category = Ductwork, Material = $4,000, Labor Hours = 60, Labor $ = $3,600, Other = $200. Total = $7,800.
Step 3 — Post remaining expenses and invoice:
- All work is completed. Final actual costs:
| Cost Type | Estimated | Actual |
|---|---|---|
| Material | $71,000 | $68,500 |
| Labor | $33,600 | $35,200 |
| Subs | $5,000 | $4,800 |
| Other | $1,000 | $950 |
| Total | $110,600 | $109,450 |
- All invoices sent and collected: $140,000 invoiced, $140,000 paid.
Step 4 — Close the job:
- Navigate to Actions → Close Job from the View Job screen.
- Close Date =
07/15/2026. - Review summary:
- Contract Total: $140,000.00
- Invoiced: $140,000.00 ✓
- Paid: $140,000.00 ✓
- Expense Total: $109,450.00
- Status: Expenses Less Than Estimate (green)
- Review the GL Distributions tab — closing entries look correct.
- Click Close Job.
Final margin: $140,000 - $109,450 = $30,550 (21.8%) — better than the original estimated margin of 17.8%.
15. Business Rules
Section titled “15. Business Rules”Rules are grouped by category.
Constraints
Section titled “Constraints”- Contract Before Estimate — The UI requires a contract with a contract amount before cost estimates can be entered.
- Close Date Floor — The close form validates that the job close date is on or after the most recent invoice and payment date.
- Closed Job Lock — Closed jobs prevent additional expense postings; reopening reverses the closing GL entries.
- Delete Job Prerequisites — A job can only be deleted when it is open. Closed jobs must be reopened before deletion.
- Schedule Ties to Contract — A contract’s base (non-change-order) schedule-of-values lines must total the contract amount exactly, or the schedule cannot be saved. Deducts are never entered as negative base lines — they route through a change order.
- Billing Within Scope — A pay application cannot bill a line beyond its scheduled value, and completed + stored to date together cannot exceed it. A Milestone line bills all-or-nothing (0% or 100%) and, once billed at 100%, is locked — void and reissue to reverse it.
- Pending COs Not Billable — A change order that is not customer-approved is pending: it is not on any schedule, cannot be billed, and is excluded from Total Revenue (but shown as Pending Change Order Amount).
- Void Newest-First — Because progress billing is cumulative, only the latest non-voided application on a contract may be voided; earlier applications must be voided newest-first.
- Change Orders Are Their Own Line — On a Progress contract an approved change order always becomes its own schedule line (a deduct is a negative line); it never adjusts an existing line, so percentages already billed never change. A change order on a schedule can’t change amount or be un-approved, and can’t be deleted until it is taken off the schedule (only if unbilled).
- Billing Method Switch Guards — A contract can’t switch to Progress once it has been invoiced outside pay applications, and can’t leave Progress while it has posted pay applications or change orders on its schedule.
- Costs Bill Once — A job cost billed on a Time & Material invoice is marked billed and is not offered again unless you ask for already-billed costs; a line that bills a job cost needs the sale’s job.
Automations
Section titled “Automations”- Overhead Calculation — When posting an expense, the application calculates overhead as Expense × (Category Factor ÷ 100), where the factor is the cost category’s per-type factor (Material Factor, Labor Factor, or Subs Factor). For labor, the job’s Burden % is used only as a fallback when the category’s Labor Factor is 0; a non-zero Labor Factor overrides the Burden %.
- CPI Dashboard — CPI (BCWP ÷ Actual Cost, where BCWP = Percent Complete × Estimated Cost) auto-calculates with color coding: green ≥ 1.0, yellow 0.9–1.0, red < 0.9.
- Forecast Projection — Forecast Final Cost auto-calculates from actual costs extrapolated against percent complete.
- Job Close GL Distribution — Closing a job auto-generates GL entries transferring costs to the contract closing account.
- Expense Reversal — Reversing a job expense creates offsetting GL entries (negative amounts) and marks the original entry as reversed. For material expenses, inventory quantities are returned to their original locations.
- Progress-Invoice GL — Posting a pay application debits Accounts Receivable for the net amount due and the Retention Receivable Account (Job Invoicing) for retention withheld, and credits contract revenue for installed work and the Billings in Excess Account (Job Invoicing) for materials stored this period. Stored materials reclassify from billings in excess to revenue as they are installed.
- Retention Holdback & Release — On a job contract, withheld retention posts to Retention Receivable (Job Invoicing) and only the net posts to AR. Releasing retention generates a $0-gross retention release invoice per contract that debits Accounts Receivable and credits Retention Receivable (no new revenue); correct a release by voiding the release invoice.
- Progress Contract Starts Billable — Creating a Progress contract creates its schedule of values with one line for the full amount.
- Approved Change Orders Go on the Schedule — Adding or approving a change order on a Progress contract places it on the schedule as its own line in the same save, at the schedule’s single prevailing retainage rate (otherwise 0%).
Workflows
Section titled “Workflows”- Job Lifecycle — Create Job → Create Contract (choose how it bills) → Enter Estimates → Post Expenses → Bill Job → Close Job.
- Change Order Flow — Add Change Order on the contract → Approve (placed on the schedule for Progress) → Enter Estimates → Bill.
- Reopen Job Flow — Reopen reverses all closing GL entries → Job returns to Open → Post additional expenses or billing → Close again when done.
- Progress Billing Flow — Create a Progress contract → split its schedule of values → (approved change orders add their own lines) → Bill each period (pay applications, cumulative) → Release retention → Void newest-first if a correction is needed.
- Time & Material Flow — Create a Time & Material contract → post costs to the job → Bill Job → Add Unbilled Costs → price labor, review → Post (costs marked billed).
Cross-Module Effects
Section titled “Cross-Module Effects”- AP Invoice to Job — Vendor invoice lines distributed to a job create job cost entries (Material, Subs) updating Actual vs. Estimate.
- Timesheet to Labor — Payroll timesheets allocated to a job create labor cost entries; employee rate × hours = labor expense.
- Inventory Material — Material picks/allocations from inventory create material cost entries on the job.
- Job Invoice to AR — Every way of billing a job creates AR invoices: pay applications for Progress contracts, Post Sale invoices for Time & Material and Simple Invoice contracts. Invoice amounts appear in Billing & Collections. (See Progress-Invoice GL, Retention Holdback & Release, Application to AR, and Section 10.)
- Application to AR — Each posted pay application generates a customer AR invoice (gross total = this application; open balance = net due), collected through the normal AR screens; voiding the application reverses the invoice and turns any applied payments into a reapplyable credit.
16. Troubleshooting / FAQ
Section titled “16. Troubleshooting / FAQ”Q: I can’t enter cost estimates — the Manage Estimates screen shows no contracts. The form requires a contract with a contract amount before estimates can be entered (see Contract Before Estimate). Navigate to the job’s Contracts tab and create a contract first, then return to Manage Estimates.
Q: Job close fails — “close date before latest invoice/payment.” The close form validates that the close date is on or after the most recent invoice and payment date (see Close Date Floor). Check the job’s Billing & Collections section for the latest dates and set the close date accordingly.
Q: I can’t post expenses to a job — it says the job is closed. Closed jobs prevent additional expense postings (see Closed Job Lock). If you need to add expenses, use Actions → Reopen Job to unlock it. Note that reopening reverses the closing GL entries, so you’ll need to close again when done.
Q: The CPI is red (below 0.9) — what should I do? A CPI below 0.9 means actual costs are exceeding the budgeted cost of work performed by more than 10% (see CPI Dashboard). Review the Actual vs. Estimate dashboard to identify which cost categories are over budget. Consider whether a change order is needed to increase the contract amount, or investigate cost overruns (labor inefficiency, material waste, unplanned subcontractor work).
Q: Overhead amounts seem too high on my job expenses. Overhead is calculated as Expense Amount x (Category Factor / 100) (see Overhead Calculation). Check the overhead factors on the Job Cost Category — each category has Material, Labor, and Subs factors. Also check the job’s Burden %, which applies to all labor costs. If the factors are set incorrectly, update the category settings.
Q: A vendor invoice posted in AP isn’t showing on the job dashboard. Verify the invoice distribution lines in AP were allocated to the correct job and cost category (see AP Invoice to Job). The job field must be filled on the AP distribution line for the cost to appear in Job Costing’s Actual vs. Estimate.
Q: The “Not Fully Invoiced” warning appears when I try to close the job. This means the total invoiced amount is less than the contract amount. You can either send the remaining invoices before closing, or acknowledge the warning and proceed if the shortfall is intentional (e.g., a negotiated reduction).
Q: How do I reopen a closed job? Navigate to the View Job screen for the closed job and select Actions → Reopen Job. The system reverses all closing GL entries and returns the job to Open status (see Reopen Job Flow). Remember to close the job again after making your changes.
Q: How do I reverse a job expense? Open the View Job screen, go to the Job Expenses tab, and click the Reverse button (history icon) on the expense row. Enter a posting date and confirm. The system creates offsetting GL entries that negate the original expense (see Expense Reversal). The original entry remains for audit purposes but is marked as reversed.
Q: I can’t delete a job — the Delete button is disabled. Jobs can only be deleted when they are open (see Delete Job Prerequisites). If the job is closed, use Actions → Reopen Job first, then delete it. Also verify you have the Delete Job permission assigned to your role.
Q: Bill opened the contract’s schedule of values instead of a pay application. The Progress contract’s schedule has no lines yet. Add lines that total the contract amount and click Save (see Schedule Ties to Contract), then click Bill again.
Q: An approved change order isn’t showing up when I bill. Open the contract’s Change Orders tab. Approved — not on the schedule means it still needs Put on schedule; Awaiting approval means the customer hasn’t approved it — click Approve once they have (see Pending COs Not Billable). Not assigned to a contract means it predates change orders belonging to a contract — click Assign Here on the right contract.
Q: I entered a change order by mistake. Void any pay applications that billed it (newest first), take it off the schedule on the contract’s Change Orders tab, then delete it (see Fixing a change order entered by mistake).
Q: Why can’t I switch this contract to Progress? It has already been invoiced outside pay applications (Sales Invoice or Post Sale). Pay applications start from $0 billed, so progress billing would bill that work again — keep billing it as a Simple Invoice (see Billing Method Switch Guards).
Q: A labor line from Add Unbilled Costs shows $0. Either no labor rate was picked (type the unit price) or the cost was recorded with no hours (set a quantity, or clear Qty and type the amount). A $0 line that bills a job cost shows a warning; posting it marks the cost billed (see Time & Material billing).
Q: I need to fix a pay application I already posted. Void it and re-post. Applications unwind newest-first, so if it isn’t the latest one, void the later applications first (see Void Newest-First). Enter a void date; any payments applied to the invoice become a credit to reapply to the corrected invoice.
Q: How do I give the customer their held retention back? Use Actions → Release Retention on the Progress contract’s screen to open Retention Adjustment, enter the amount to release per line, and post. This creates a $0-gross retention release invoice that moves the held amount into the customer’s AR balance (see Retention Holdback & Release); collect it with a normal cash receipt. To reverse a release, void the release invoice. You can also release retention inline on a regular application via the Release This Period column.
Q: Why is Over / Under Billing negative (or positive) on the dashboard? It compares what you have billed to what you have earned. Positive = overbilled (you billed ahead of earned revenue — often stored materials or front-loaded lines); negative = underbilled. Billing stored materials defers that value to Billings in Excess until the work is installed (see Progress-Invoice GL).
Q: My pay application prints “To Owner / From Contractor” but I’m the subcontractor. Flag the contract as Subcontract (contract screen → Edit, Progress contracts only). The AIA application then prints the G702S flavor with To Contractor / From Subcontractor blocks.
17. Tips & Notes
Section titled “17. Tips & Notes”Starting a New Job
Section titled “Starting a New Job”- Create the Customer in Accounts Receivable if not already on file.
- Navigate to Jobs → Create Job. Select the customer, site, and job type.
- Set Retention % and Burden % if applicable.
- Save. The job is now open.
- Navigate to Actions → Manage Estimates to enter the cost budget by category.
- Create the Contract from the Contracts tab and choose how it will be billed (see Choosing a contract type).
- For a Progress contract, set up its schedule of values before the first bill (see Setting up a schedule of values).
Estimating a Job
Section titled “Estimating a Job”- Open Manage Estimates (from the Actions menu or the main navigation).
- Select the job and then the contract to estimate.
- For each cost category, enter the expected Material Cost, Labor Hours, Labor Cost, Subs Cost, and/or Other Cost.
- The Estimate Total footer shows the running total.
- Click Save Current Estimate.
Posting Labor Expenses
Section titled “Posting Labor Expenses”- Navigate to Post Job Expense.
- Select the job and a Job Expense Type with Cost Type = Labor.
- Select the Employee.
- Enter Regular Hours, Overtime Hours, and/or Doubletime Hours.
- The Expense Amount will be auto-computed; click Recompute Amounts if needed.
- Click Post or Post & Reuse Job to post and stay on the same job.
Posting Multiple Material Lines
Section titled “Posting Multiple Material Lines”Use Post Job Materials when you have many products to post at once:
- Select the job and date.
- Set default Job Expense Type and Job Cost Category if most lines will share the same values.
- Add product rows in the Materials grid; the system auto-adds new rows as you work.
- Click Auto-Allocate to pull from available inventory.
- Click Post to commit all lines at once.
Monitoring Job Health
Section titled “Monitoring Job Health”Use the Dashboard tab on the View Job screen to monitor:
- CPI — anything below 1.0 means you are over budget
- Over / Under Billing — a large negative number means you are billing behind your earned revenue
- Forecast Margin — the projected final margin; compare to Estimated Margin to see margin erosion or growth
- Cash Position — if negative, you have paid more in costs than you have collected
Closing a Job
Section titled “Closing a Job”- Ensure all expenses are posted and all invoices are sent and collected.
- Navigate to Actions → Close Job from the View Job screen, or go to Close Job from the main menu.
- Review the GL Distributions tab to confirm the entries are correct.
- If the “Not Fully Invoiced” or “Invoices Not Fully Paid” warnings appear, resolve them first — or acknowledge the warning and proceed if appropriate.
- Click Close Job. The job is locked for further edits.
- If changes are needed after closing, use Actions → Reopen Job to unlock it.
Change Orders
Section titled “Change Orders”Add a change order from the contract it changes — Add Change Order on the contract screen, or the icon on the contract’s row in the job’s Contracts tab. Leave Customer approved checked once the customer has signed off; on a Progress contract it goes straight onto the schedule as its own line. Each change order increases or decreases the total contract amount. To budget it, open Manage Estimates and select the change order.
Reopening a Closed Job
Section titled “Reopening a Closed Job”- Navigate to the View Job screen for the closed job.
- Click Actions → Reopen Job. The system reverses all closing GL entries and returns the job to Open status.
- Post any additional expenses or billing adjustments as needed.
- When finished, use Actions → Close Job to re-close and re-post the final GL distributions.
Reversing a Job Expense
Section titled “Reversing a Job Expense”- Navigate to the View Job screen and open the Job Expenses tab.
- Find the expense entry you want to reverse and click the Reverse button (history icon).
- Enter the Posting Date for the reversal entries.
- Click Reverse. The system creates offsetting GL entries and marks the original as reversed.
- For material expenses, inventory quantities are automatically returned to their original locations.
Understanding Overhead Factors
Section titled “Understanding Overhead Factors”Each Job Cost Category has three overhead factors (Material, Labor, Subs). When you post an expense to that category, the application calculates an overhead charge:
Overhead Amount = Expense Amount × (Factor ÷ 100)
The overhead is posted to the overhead GL accounts defined on the expense type. This is useful for applying indirect costs (project management time, facility costs) to jobs proportionally without manual calculation.