Vertical SaaS · Saas

Job Costing Vertical SaaS on Acumatica

Job Costing Vertical SaaS on Acumatica: a practical Acumatica fit review focused on contracts, commitments, cost codes, change orders, and field evidence. It separates documented product capability from configuration, integration, and customisation work.

John Kihiu12 min read

Job costing questions from construction clients almost always start the same way: "should we cost by project, by task, or by cost code?" The honest answer is that Acumatica gives you all three layers, they are not mutually exclusive, and picking the wrong one to be your primary reporting axis — usually because a template was cloned from an unrelated implementation — is the single most common reason a contractor's job cost reports do not match how the business actually thinks about its jobs.

Project, task, and cost code are a hierarchy, not alternatives

A project is the job as a whole — one contract, one client, one address. Tasks are the phases or major divisions of work within it (site work, foundation, framing, MEP rough-in). Cost codes are the granular categories of cost within a task (labor, material, equipment, subcontract) that let you compare, say, framing labor cost per square foot across every job that used the same cost code, regardless of which project or task it lived under. The mistake I see most is treating cost codes as an afterthought and doing all the real reporting at the task level — which works until someone asks "what's our average labor cost code for foundation work across the last 20 jobs," a question the task level cannot answer because task names and scopes drift between projects while a well-maintained cost code list stays stable.

HIERARCHY · HOW THE THREE LEVELS NEST
Project: 26-018 Maple St. Renovation
  Task 200: Foundation
    Cost Code 03-300-LAB  Foundation Labor     Budget: $8,200   Actual: $8,900
    Cost Code 03-300-MAT  Foundation Material  Budget: $11,500  Actual: $10,800
    Cost Code 03-300-SUB  Foundation Subcontract Budget: $6,000  Actual: $6,000
  Task 300: Framing
    Cost Code 06-100-LAB  Framing Labor        Budget: $14,000  Actual: $13,200
    ...

Standardize the cost code list before the second project, not the twentieth

A contractor's cost code list should be defined once, ideally against an industry-standard framework (many use a CSI-based structure or a close variant) and applied consistently across every project template. Letting each project manager invent cost codes as they go feels flexible in month one and makes cross-project reporting impossible by month six — I have inherited more than one instance where "Framing Labor" existed under four slightly different cost code names because four different PMs set up their own projects independently.

Cost classes group cost codes for roll-up reporting

Beyond individual cost codes, Acumatica supports cost classes — a grouping layer that rolls multiple related cost codes up into a category (all labor cost codes into "Labor", regardless of phase) for executive-level reporting that does not need phase-by-phase detail. Use cost classes for the dashboard-level view and cost codes for the PM's working detail; conflating the two levels in one report usually produces something too granular for an executive and too coarse for a PM.

Wrapping up

Job costing in Acumatica works in layers — project, task, cost code, and cost class — and the reporting question determines which layer you query, not which layer you picked as "the" costing method. Standardize the cost code list against a consistent framework before the second project goes live; retrofitting consistency onto twenty projects' worth of ad hoc cost codes is a project of its own.

John Kihiu
Acumatica ERP Developer · Laravel Engineer

Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.