Cost Codes and the CSI MasterFormat: A Construction Accounting Primer
A cost code is the label a construction company applies to every cost transaction so it can be categorized and summarized later. Without cost codes, a construction company has a pile of invoices, payroll entries, and equipment charges — and no way to know whether its electrical work is running over budget, whether rough carpentry is productive, or whether material costs on demo are trending well. With cost codes, all of those views become queryable reports.
The CSI MasterFormat is the near-universal standard that gives cost codes their structure. It's a numbering system organized into 50 divisions, each with sections and subsections, covering every kind of work that appears on commercial construction projects. When a contractor uses MasterFormat-aligned cost codes, their job cost reports, schedules of values, and estimate templates all speak the same language that owners, architects, engineers, and subs use on bid forms, drawings, and spec books.
The CSI MasterFormat 2020 edition uses a six-digit numbering system: two digits for the division, two for the section, and two for the detail (XX-XX-XX). Some codes include a fourth two-digit level for more granular breakdowns, but the standard six-digit format is what most construction companies and their software systems use.
How to read a CSI MasterFormat number
- 03 00 00 — Division 03: Concrete (the top level)
- 03 30 00 — Section within Concrete: Cast-in-Place Concrete
- 03 30 53 — Detail: Miscellaneous Cast-in-Place Concrete
- 09 00 00 — Division 09: Finishes
- 09 29 00 — Section: Gypsum Board
- 09 91 00 — Section: Painting
The top-level divisions cover everything from general requirements and site work through structural work, envelope, MEP systems, and specialties. The full list of 50 divisions is published by the Construction Specifications Institute (CSI) and updated periodically as industry practices change.
The 50 CSI MasterFormat divisions
- 00 — Procurement and Contracting Requirements
- 01 — General Requirements
- 02 — Existing Conditions (demolition, hazmat abatement)
- 03 — Concrete
- 04 — Masonry
- 05 — Metals
- 06 — Wood, Plastics, and Composites
- 07 — Thermal and Moisture Protection (roofing, waterproofing, insulation)
- 08 — Openings (doors, windows, curtainwall)
- 09 — Finishes
- 10 — Specialties
- 11 — Equipment
- 12 — Furnishings
- 13 — Special Construction
- 14 — Conveying Equipment (elevators, escalators)
- 21 — Fire Suppression
- 22 — Plumbing
- 23 — HVAC
- 25 — Integrated Automation
- 26 — Electrical
- 27 — Communications
- 28 — Electronic Safety and Security
- 31 — Earthwork
- 32 — Exterior Improvements (paving, landscaping)
- 33 — Utilities
- 34-48 — Transportation, Waterway, Process, Industrial, Electrical Power Gen, etc. (less commonly used on building projects)
A construction company that aligns its internal cost codes to CSI MasterFormat gets a set of benefits that pay off across every workflow.
Benefits of MasterFormat-aligned cost codes
- Estimate-to-actual comparison — bids come in organized by MasterFormat divisions; when cost codes match, actuals compare directly to estimate
- Schedule of values compatibility — SOVs on AIA G703 pay applications are typically MasterFormat-organized
- Subcontractor pay app alignment — subs bid and bill in MasterFormat; matching codes means their line items flow directly into the GC's job cost system
- Cross-project benchmarking — historical cost per unit on Division 03 concrete work is comparable across projects when codes are consistent
- Industry-standard reporting — when lenders or sureties ask for cost breakdowns, they expect MasterFormat organization
Companies that invent their own cost code structure (e.g. 'CODE-001 through CODE-999') end up locked in — the codes don't translate to subs' pay apps, estimators' takeoffs, or the industry's common language. Switching later is expensive. Starting with MasterFormat is almost always the right call even for small contractors.
Most construction companies don't use the entire MasterFormat catalog. They use a subset relevant to their work, often extended with company-specific sub-codes for detailed tracking that goes beyond the standard.
A typical pattern is to use six-digit MasterFormat as the base and add a two-digit extension for internal purposes — distinguishing labor vs. material vs. equipment within a section, or separating specific activity types that the estimator needs to cost separately. The full code might be '03 30 00 - 10' for labor on cast-in-place concrete, '03 30 00 - 20' for materials, '03 30 00 - 30' for equipment. This preserves external compatibility while adding internal granularity.
Get AP insights in your inbox
Get our weekly roundup of AP automation tips and industry news. No spam, ever.
No spam. Unsubscribe anytime.
Cost codes and the accounting chart of accounts are different things that work together. The chart of accounts organizes the general ledger by account type (revenue, cost of revenue, overhead, assets, liabilities). Cost codes organize job-level costs by scope category. A single transaction typically hits one GL account and one cost code simultaneously.
Example: a $5,000 invoice for concrete material delivered to Job 2026-042. In the GL, it debits 'Cost of Revenue — Material' (e.g. GL account 5210) and credits 'Accounts Payable.' In the job cost system, it adds $5,000 to Job 2026-042, Cost Code 03-30-00 (Cast-in-Place Concrete), Cost Type: Material. The same dollar flows through both reporting structures simultaneously.
At project start, the cost code structure for the specific project gets created from the estimate. The estimator has built up the bid at line-item detail; each line typically corresponds to a cost code. Setup involves:
Project cost code setup checklist
- Extract the estimate's cost breakdown into cost codes aligned to MasterFormat
- Import the codes into the accounting system with their associated budget amounts
- Confirm that each subcontractor's scope matches the codes where their work will be billed
- Set up the schedule of values on the G703 using the same code structure where possible
- Verify that POs being issued will be coded to the right scope items
- Configure the reporting rollups — which codes get grouped together for summary-level views
Cost code pitfalls
- Codes that don't match what's on the estimate — no way to compare actuals to budget
- Too-granular codes — every tiny distinction becomes its own code, producing reports no one can read
- Too-coarse codes — one code covers so much scope that variances hide the underlying cause
- Codes inconsistent across projects — benchmarking is impossible
- Inventing new codes mid-project rather than using the established ones — history becomes fragmented
- Coding to the wrong division — electrical work coded to mechanical, etc.
For AP, the cost code is the field that determines which job and which scope item each invoice line is charged to. The coding happens at invoice entry — either manually by an AP clerk, automatically from the PO's code structure (the PO already has the coding), or from the sub's pay application (which references the SOV line, which maps to a cost code).
Automated AP platforms that understand construction typically extract the PO reference from the invoice and apply the PO's coding automatically, requiring human review only when the coding is ambiguous. This is a meaningful acceleration of AP processing — the coding step in construction AP is historically one of the most labor-intensive parts of invoice processing, and getting it right consistently is foundational to reliable job costing.
Cost codes look like trivial accounting detail and are actually the foundation layer that makes construction accounting work. Aligning to CSI MasterFormat is the right default because it gives the company shared language with subs, estimators, architects, and the industry. Investing in consistent coding up front pays off in every downstream report — job cost, WIP, estimate-to-actual, cross-project benchmarking — that the company ever produces.
Written by
Marcus Reyes
Construction Industry Lead
Spent twelve years running AP at a $120M general contractor before joining Covinly. Lives in the world of AIA G702/G703, retainage schedules, and lien waiver deadlines. Writes about the construction-specific workflows that generic AP tools get wrong.
View all posts