Project Insights

Cost Codes and WBS Codes: How to Build a Solar Project Budget That Works

February 25, 2026·8 min read
Joel Garcia

Joel Garcia

Founder, PhaseOne

Most solar contractors have a project budget. Fewer have a budget they can actually manage in real time. The difference between the two usually comes down to structure — specifically, whether the budget is organized around WBS codes and cost codes that make it possible to track spending at a useful level of detail.

If your budget is a single lump sum with a few line items, you won't know you're over budget until it's too late. If it's structured with WBS codes and cost codes, you can see exactly where money is being spent and where problems are developing — while there's still time to act.

WBS Codes vs. Cost Codes: What's the Difference?

These two coding systems work together, but they answer different questions:

WBS CodeCost Code
Question answeredWhat work is being done?What type of expense is it?
StructureHierarchical (project-specific)Flat list (company-wide)
Example1.4.2 — Racking Installation300 — Materials
Changes per projectYes — customized per project scopeNo — consistent across all projects
Primary useScope tracking and progressFinancial reporting and cost control

The combination is what matters. When you assign both a WBS code and a cost code to every expense, you can answer questions like:

  • "How much have we spent on materials for racking installation?" (WBS 1.4.2 + Cost Code 300)
  • "What's our total labor cost for the electrical phase?" (WBS 1.4.4 + Cost Code 100)
  • "Are we over budget on subcontractors for commissioning?" (WBS 1.5 + Cost Code 200)

Setting Up Cost Codes for Solar Projects

Cost codes represent categories of spending that are consistent across your company — regardless of the project. Here's a typical cost code structure for a solar contractor:

100 — Labor
  101 — Field Labor (hourly crews)
  102 — Supervision
  103 — Overtime / Premium Time
  104 — Travel & Per Diem

200 — Subcontractors
  201 — Electrical Sub
  202 — Roofing Sub
  203 — Structural Sub
  204 — Civil / Trenching

300 — Materials
  301 — Modules
  302 — Inverters
  303 — Racking & Mounting
  304 — BOS Electrical (wire, conduit, disconnects)
  305 — Grounding Materials

400 — Equipment & Tools
  401 — Equipment Rental (crane, forklift)
  402 — Consumables & Small Tools

500 — Engineering & Professional
  501 — Engineering / Design
  502 — PE Stamping
  503 — Permitting Fees
  504 — Interconnection Fees

600 — General Conditions
  601 — Insurance & Bonds
  602 — Site Security
  603 — Temporary Facilities
  604 — Waste Removal

Keep it consistent

Your cost code list should be the same across every project. This is what lets you compare costs between projects and build reliable estimating data over time. Add new codes when needed, but never change the meaning of an existing code.

Building the Budget: Where WBS Meets Cost Codes

The project budget is a matrix of WBS codes and cost codes. Each cell in the matrix represents a specific type of spending on a specific piece of work.

Here's a simplified example for a C&I solar project:

                          Labor   Materials  Subs    Equipment  Total
                          (100)   (300)      (200)   (400)
──────────────────────────────────────────────────────────────────────
1.1 Engineering                              $15,000            $15,000
1.2 Permitting                                        $2,500    $2,500
1.3 Procurement                   $285,000                      $285,000
1.4 Construction
  1.4.1 Mobilization      $3,200                      $4,800    $8,000
  1.4.2 Racking            $18,000  $42,000                     $60,000
  1.4.3 Modules            $12,000  $210,000                    $222,000
  1.4.4 Electrical         $22,000  $18,000                     $40,000
  1.4.5 Inverter/Switchgear $8,000                              $8,000
1.5 Commissioning          $4,000                               $4,000
──────────────────────────────────────────────────────────────────────
TOTAL                      $67,200  $555,000  $15,000  $7,300   $644,500
i

This is your cost baseline

Once this budget is approved, it becomes the cost baseline — the benchmark you measure actual spending against throughout the project. Every invoice, timesheet, and purchase order should be coded against this structure.

How to Track Actual Costs Against Budget

Once the budget is set, every dollar spent on the project needs both a WBS code and a cost code. This means:

Code every invoice

When a material invoice comes in, assign it the correct WBS code (what scope area) and cost code (what type of expense). A $42,000 racking order gets coded to WBS 1.4.2 + Cost Code 303.

Code every timesheet

Field crews log hours against WBS codes daily. If a crew spends 8 hours installing racking, those hours are coded to WBS 1.4.2 + Cost Code 101.

Compare actual vs. budget weekly

Run a cost report that shows budget vs. actual for each WBS/cost code combination. This tells you exactly where you're on track, under budget, or over budget.

Forecast the remaining spend

For each work package, estimate the cost to complete based on current progress and spending rate. Budget minus actual doesn't tell the full story — you need the forecast to know if you'll finish on budget.

The Cost Report: Your Weekly Decision-Making Tool

A good cost report looks like this:

WBS 1.4.2 — Racking Installation
─────────────────────────────────────────────────
            Budget    Actual    Remaining   Forecast
Labor       $18,000   $12,400   $5,600      $19,200
Materials   $42,000   $42,000   $0          $42,000
Equipment   $0        $800      -$800       $800
─────────────────────────────────────────────────
TOTAL       $60,000   $55,200   $4,800      $62,000
                                Variance:   -$2,000
$2,000

over budget on racking installation — caught early enough to adjust

This report tells you that racking installation is trending $2,000 over budget, primarily in labor. At $12,400 spent with work still remaining, the forecast shows $19,200 total labor vs. $18,000 budgeted. That's actionable information — you can investigate why labor is running hot and decide whether to adjust the crew, the approach, or the budget.

Without WBS and cost codes? You'd just know you've spent $55,200 so far — with no idea if that's good or bad.

Common Budgeting Mistakes

Using cost codes without WBS codes (or vice versa)

Cost codes alone tell you what you spent money on, but not where. WBS codes alone tell you what scope area, but not what type of expense. You need both to have a complete picture.

Making the cost code list too detailed

If your cost code list has 200+ codes, nobody will use it correctly. Keep it to 20–40 codes that cover your standard expense types. You can always drill into detail at the invoice level.

Not coding expenses consistently

The whole system breaks down if some invoices get coded and others don't, or if different project managers interpret codes differently. Create a coding guide and train your team on it.

Key Takeaways

  • WBS codes define what work is being done; cost codes define what type of expense it is
  • Together, they create a budget matrix that lets you track spending at a useful level of detail
  • Keep cost codes consistent across all projects (company-wide standard) while customizing WBS per project
  • Every invoice and timesheet should be coded with both a WBS code and a cost code
  • Run weekly cost reports comparing budget vs. actual to catch problems early

Frequently Asked Questions

What is a cost code in construction?

A cost code is a standardized label that categorizes an expense by type — such as labor, materials, subcontractors, or equipment. Unlike WBS codes (which are project-specific), cost codes are consistent across all projects in a company, enabling cross-project cost comparison and benchmarking.

What is the difference between a WBS code and a cost code?

A WBS code identifies what scope of work an expense relates to (e.g., "Racking Installation"). A cost code identifies what type of expense it is (e.g., "Materials"). Together, they let you track that $42,000 in materials was spent specifically on racking installation.

How many cost codes should a solar contractor use?

Most solar contractors use 20–40 cost codes organized in 5–6 categories (Labor, Subcontractors, Materials, Equipment, Engineering, General Conditions). Too few codes and you lose visibility. Too many and the system becomes unusable.

Can I use the same budget structure for every solar project?

You should use the same cost codes across all projects. The WBS structure should start from a standard template but be customized per project to reflect the specific scope. This gives you consistency for cross-project analysis while accurately representing each project's work.

cost-codesWBSbudgetingproject-managementsolarconstruction