Solar Operations

Solar Job Costing: How to Know Which Installs Actually Make Money

October 4, 2026•11 min read

Most solar companies know their revenue by the week. Far fewer know their margin by the job.

The gap is usually not effort. It is timing. Equipment invoices land in one place, crew hours in another, permit fees on a company card, and commissions in a workbook that closes weeks later. By the time someone adds it all up, the install is long finished and the money is already spent. This article covers how to get job-level margin while there is still time to act on it.

What is solar job costing?

Solar job costing is the practice of assigning every cost to the specific install that caused it, then comparing the total against the estimate and the contract price. The output is a margin for each job, not just a margin for the company.

It sits between two things people often confuse it with. Bookkeeping records what the company spent. Job costing explains what each job spent. A company can have clean books and still have no idea which installs lose money.

Three terms are worth fixing early:

  • Estimated cost: what you expected the job to cost when you priced it.
  • Actual cost: what the job really cost once every invoice, hour, and fee is attached to it.
  • Variance: the gap between the two, by cost category, while the job is still open.

Variance is the useful number. A total margin tells you that you lost money. Variance by category tells you where.

Why solar margins leak

Solar jobs have more cost surfaces than most trades because one install touches equipment suppliers, a financing partner, a permitting authority, a utility, a crew, and a sales rep. Each one adds cost on its own schedule.

Equipment and materials. The bill of materials changes between design and install. A panel substitution, a second order for missing racking, or a shipping charge that was never in the estimate all change the real cost. If purchasing is not tied to the job, nobody sees the change until the invoice is paid.

Labor and crew time. Hours overrun when an install is not ready for the crew: a missing permit document, an unconfirmed roof condition, a part that did not arrive. The cost is real even though the cause sits in another department.

Permitting, inspection, and rework. An authority having jurisdiction (AHJ) rejection often means resubmission fees, a second site visit, and days of idle schedule. These costs rarely get coded to the job that caused them.

Subcontractors and external work orders. Electrical, roofing, and trenching work that you hire out has its own invoices and its own timing. If those invoices are paid by someone who never sees the job record, they land on overhead.

Financing and dealer fees. When a lender takes a fee on a loan product, that fee is a cost of the sale. Leaving it out makes financed jobs look better than cash jobs.

Commissions. Commissions are often the second largest variable cost on a job and the one most often missing from job-level numbers, because they are calculated on a different calendar. Week 11 of this series covers that problem in detail.

Post-install service. A callback within the first months belongs to the original job. Most companies charge it to general service and never see that a particular job family keeps coming back.

The six cost buckets every solar job should carry

Use a short, fixed list of cost codes. A long list gets ignored. This one covers the surfaces above.

Cost bucketWhat goes in itWhere it usually hides
Equipment and materialsModules, inverters, racking, wire, storage, shippingSupplier invoices paid without a job reference
LaborCrew hours, travel, overtimePayroll, not the job record
Subcontract and external workElectrical, roofing, trenching, third-party work ordersPaid through general accounts payable
Permitting and reworkFees, resubmissions, second site visitsCompany card or overhead
Financing and sales costDealer fees, commissions, incentives paidA separate commission workbook
Post-install serviceCallbacks, warranty visits, correctionsGeneral service budget

The point of the table is not the labels. It is that every row has a different source system in most companies, and each source reports on a different schedule.

Where spreadsheets and disconnected tools fail at job costing

A workbook can calculate a margin. It cannot make costs arrive on time or make them arrive at all.

Job costing breaks in four predictable places:

  • Costs are entered after the fact. Someone has to remember to key an invoice against the right job. Under pressure, they key it against whichever job is open.
  • The job record is not shared. Finance sees an invoice. Operations sees a job. Nobody sees both, so the invoice has no way to find its job.
  • Estimates live somewhere else. If the original estimate is in a proposal tool and actual costs are in a workbook, variance has to be rebuilt by hand every time.
  • Late costs never come back. A rework fee in month three does not reopen a job that was marked complete in month one.

These are structural problems, not discipline problems. Asking people to be more careful does not fix a system where the invoice and the job live in different places. Week 10 of this series covers the wider pattern.

How to set up solar job costing in seven steps

You do not need a new platform to start. You do need a decision on each step below. The order matters.

Step 1: Define one job record. Pick the identifier that every cost will reference, usually the project or contract ID. Decide that nothing is paid, ordered, or assigned without it.

Step 2: Lock the cost buckets. Adopt the six buckets above, or a version of them. Change them rarely. A cost code that changes every quarter makes year-over-year comparison meaningless.

Step 3: Capture the estimate at contract. Store the estimated cost by bucket at the moment the contract is signed. If the estimate is rebuilt later from memory, variance is fiction.

Step 4: Tie purchasing to the job. Orders and supplier invoices reference the job record when they are created, not when they are paid. This one change fixes more than any report.

Step 5: Route subcontractor and vendor invoices through the same record. Approvals should show the job, the estimate for that bucket, and the amount already spent.

Step 6: Allocate commissions and financing fees to the job. Do this when the triggering event happens, not at pay run. If a commission depends on a milestone, the job should show that it is pending and for how much.

Step 7: Review variance weekly, and keep jobs open for late costs. Weekly review catches a bad install while the crew is still on site. Keeping the job open for a defined window, such as the first service period after PTO, catches the callback cost that would otherwise vanish.

What to measure once costs are attached

Calculate these from your own data. Do not borrow benchmarks from other companies, because system size, equipment mix, and market vary too widely for an outside figure to mean much.

  • Gross margin per job. Contract price minus total actual cost, as a percentage of contract price.
  • Variance by bucket. Actual minus estimate, per bucket. Look for the bucket that is wrong most often, not the single worst job.
  • Cost per watt installed. Total job cost divided by system size in watts. Useful for comparing jobs of different sizes.
  • Rework cost per job. Sum of the permitting and rework bucket. Track it by AHJ and by crew to find the pattern.
  • Margin by channel and financing product. Group jobs by sales source and lender to see which combinations earn their keep.
  • Late-cost share. The portion of total job cost that arrived after the job was marked complete. If it is large, your closing process is hiding margin.

Pick three to start. A dashboard of fifteen numbers gets read for a month and then ignored.

How the approaches compare

CapabilitySpreadsheetStandalone job costing or add-on toolGeneral accounting softwareOperations platform with built-in job costing
Costs tied to a shared job recordManualPartial, depends on integrationsLimited, usually by class or project codeBuilt into the job record
Estimate stored with the jobSeparate fileUsually yesVariesVaries by product, confirm in a demo
Purchasing and vendor invoices coded at sourceNoPartialCoded at entry, often by financeDepends on product
Commissions and financing fees on the jobManualRarelyRarelyDepends on product
Weekly variance reviewRebuilt by handYesMonth-end focusDepends on product
Full accounting and general ledgerNoNoYesUsually no, confirm with the vendor

[Assumption] The table describes common patterns, not any specific product. Products vary, so confirm each row in a demo against your own data.

Accounting software and job costing solve different problems. An operations platform with job costing does not replace your accountant's system. It gives your operations team the margin view the accounting system was never built to deliver in the middle of a job.

Job costing across verticals

The method is the same everywhere. Which bucket matters most changes.

Solar and renewable energy. Permitting and rework, financing fees, and commissions carry the most surprises, because a solar job has more outside parties than any other vertical in this series.

Home automation and security. Equipment cost and repeat truck rolls drive margin. A job that needs a second visit for a missing part can lose its profit on that visit alone.

Pest control. Pest jobs are lower value and higher frequency, so the unit of costing is usually the route or the recurring account rather than a single install. Core365's pest control vertical is newer, so confirm in a demo how it handles this pattern.

Roofing. Material, crew, and insurance-related timing all affect margin. Core365's roofing page describes job costing and job-level profitability analysis, and roofing is the newest vertical on the platform, so ask for roofing references.

Where Core365 fits

Core365 is an operations platform for field service businesses. It is not a general ledger and not a full accounting suite. It is built to give the operations team the job-level picture that the accounting system does not.

Solar job costing is described as built in. The renewable energy page lists built-in solar job costing under "Lower Costs Through Job Level Visibility," alongside lead-to-PTO analytics and sales team performance ranking.

Purchasing and cost variance. Procurement365 describes project-level job costing, cost variance visibility, BOM-driven vendor orders, and inventory-linked cost tracking with invoice-level accuracy.

Receipts and external work. Service365 describes OCR receipt processing for financial tracking and an external work order system for third-party work.

Vendor payments. Finance365 describes subsidiary accounts receivable reporting and, through Vendor365, an accounts payable payment request queue with a review, approval, or denial process. The Finance365 page also reports on loan distributions, including dealer fees.

Commissions. Commissions365 describes custom and tiered plan structures with role-based access.

Cross-department visibility. Analytics365 describes a centralized visual dashboard and unified operational reporting across departments.

Two boundaries worth stating plainly. First, Finance365's own page says it is not a general ledger system. Keep your accountant's system for the books and tax filings. Second, every figure Core365 publishes, including 15+ hours saved weekly, 3x operational scalability, and 100% compliance tracking, is a vendor claim to validate in a demo against your own jobs. The site does not describe how crew labor hours are captured against a job. [Assumption] Ask about this directly if labor is a large share of your cost.

Key takeaways

  • Solar job costing assigns every cost to the install that caused it and compares the total to the estimate.
  • Variance by cost bucket is more useful than a single margin number.
  • Six fixed cost buckets cover most solar jobs: equipment, labor, subcontract, permitting and rework, financing and sales cost, and post-install service.
  • Commissions, financing fees, and rework are the costs most often missing from job-level margin.
  • Job costing fails when the invoice and the job live in different systems, not when people are careless.
  • Tie purchasing to the job when the order is created, not when the invoice is paid.
  • Review variance weekly and keep jobs open for late costs.
  • Calculate your own benchmarks. Outside figures vary too widely to trust.
  • Core365 describes job costing as built in, is not a general ledger, and its published figures are vendor claims to validate.

Frequently Asked Questions

What is solar job costing?+

Solar job costing is the practice of assigning every cost to the specific install that caused it, then comparing the total to the estimate and the contract price. It produces a margin for each job instead of one margin for the whole company.

What costs should be included in a solar job cost?+

Include equipment and materials, labor, subcontracted and external work, permitting fees and rework, financing and dealer fees, commissions, and post-install service within a defined window. The costs most often left out are commissions, financing fees, and rework.

Is job costing the same as accounting?+

No. Accounting records what the company spent and produces the books and tax filings. Job costing explains what each job spent so operations can act on margin while the job is open. You still need an accounting system. Core365 states that Finance365 is not a general ledger system.

How often should we review solar job costs?+

Weekly for open jobs, and again after the job closes and the post-install window ends. Monthly review finds problems after the crew has moved on. A weekly review catches overruns while a fix is still possible.

Can a spreadsheet handle solar job costing?+

A spreadsheet can calculate a margin if someone enters every cost against the right job. It cannot make costs arrive on time or tie an invoice to its job automatically. It works for a small volume of jobs and tends to break as volume and the number of people touching costs increase.

Does Core365 do solar job costing?+

Core365's renewable energy page describes built-in solar job costing, and its Procurement365 page describes project-level job costing and cost variance visibility. Core365 is not a general ledger. Evaluate it against your own recent jobs in a demo, and ask specifically how labor hours are captured, because the site does not describe that.

See Margin on Every Install, Not Just Every Quarter

Core365 connects purchasing, vendor invoices, commissions, and project records so job-level cost is visible while the job is still open. Built for renewable energy, home automation and security, pest control, and roofing operations.

Have We Convinced You Yet?

Let's Simplify Your Operations & Scale Smarter