C&I solar is construction billing, not e-commerce
A commercial or industrial solar project is signed at one price and delivered over months. Nothing ships; the plant reaches states — mobilised, structure up, modules mounted, energised, commissioned — and cash follows certified progress against the contract value, not deliveries against a shopping cart. The real money flow looks like this: an advance payment to mobilise, a sequence of interim draws certified against a schedule of values, a slice of every draw withheld as retention, and a final account that settles what the months of paperwork accumulated.
Software built around “quantity × unit price, invoice on shipment” fights this contract from the first draw. The unit of account in construction billing is not the invoice; it is the line in the schedule of values, and everything else — draws, certificates, retention, the final account — is bookkeeping against those lines.
The schedule of values
The schedule of values (SOV) decomposes the contract price into lines that can each be measured on site. For every line, every draw answers four questions: what is the line worth (scheduled value), how much has been billed in earlier draws (billed to date), how much is being claimed now (this draw), and how much remains (balance to finish). The arithmetic discipline is absolute: for every line, billed to date + this draw + balance to finish = scheduled value. If that identity ever fails, someone is over-billed and nobody knows by how much.
Here is draw 3 on an illustrative 1 MWp rooftop, contract value 1,000,000 (units of your contract currency):
| Line | Scheduled value | Billed to date | This draw | Balance to finish |
|---|---|---|---|---|
| Mobilisation & site works | 60,000 | 60,000 | — | 0 |
| Mounting structure | 190,000 | 152,000 | 38,000 | 0 |
| PV modules | 340,000 | 170,000 | 170,000 | 0 |
| Inverters & electrical BOS | 290,000 | 87,000 | 116,000 | 87,000 |
| Testing, commissioning & handover | 120,000 | 0 | 0 | 120,000 |
| Total | 1,000,000 | 469,000 | 324,000 | 207,000 |
Read it like the client’s quantity surveyor will. The structure line completes this period (38,000 takes it to its full 190,000). The modules line claims the second half of its value. The draw bills 324,000 gross; at 10% retention the certificate pays out 291,600 and 32,400 joins the retention ledger — which now stands at 79,300, ten percent of the 793,000 certified to date. Three lines are now closed and cannot legitimately bill another unit.
G703 heritage — and what MENA contracts call it
The grid above descends from the American Institute of Architects’ G702/G703 pay-application forms — G702 the summary certificate, G703 the “continuation sheet” that is, line for line, the SOV table you just read. MENA contracting runs on the same instrument under different names: the interim payment certificate, the progress claim — in Arabic, المستخلصات (al-mustakhlaṣāt, the “progress claims”), a word every Egyptian, Saudi and Gulf contractor knows in their sleep. Different paper, identical logic: measure, certify, pay, retain.
Retainage and the two-moiety release
Retention (retainage, in the American forms) is the slice — typically 5–10% — withheld from every certified draw as the client’s security against defects. It is not a discount and not a dispute; it is your money on a timer, and the timer has two alarms. Under the common two-moiety release, the first half of accumulated retention is released at taking-over (practical completion — on solar, typically after commissioning and the performance test), and the second half at the end of the defects-liability period, commonly 12 to 24 months later.
On the worked example, a completed project carries 100,000 of retention: 50,000 due at taking-over, 50,000 due a year or more after your crew has left site. On thin EPC margins, that second moiety can be a large share of the project’s entire profit — sitting in someone else’s account, owed to you on a date that lives in a contract clause nobody re-reads. Companies do not lose that money in negotiations. They lose it by forgetting to ask.
Change orders
Scope moves on every real project — the client adds a carport, the utility moves the connection point, a roof zone fails the structural survey. A change order prices the change, collects the client’s signature, and then amends the contract sum and the SOV — in that order. The sequence is the whole protection: a change billed before it is signed is not revenue, it is a dispute with an invoice number. Once signed, the change order becomes a new line (or a revised line) with its own scheduled value, and the draw identity — billed + this draw + balance = scheduled — keeps holding across the amended total.
Where spreadsheets break
Every failure mode in this note is a spreadsheet feature. Over-billing past balance to finish: no cell stops a draw from exceeding its line, so either the client’s quantity surveyor catches it (and your certificates are now read with suspicion) or nobody does (and the final account becomes a fight). Retention drift: the percentage applied to some draws and not others, or to some lines and not others, until the ledger and the contract disagree. The lost second moiety: the defects-liability period ends eighteen months after handover, the team has moved on, and the release is never invoiced. Change-order drift: the claim sheet got the variation but the ledger did not, and two documents now state two contract sums. And version chaos: the draw the client certified is not the file finance posted.
None of these are arithmetic errors. They are state errors — a spreadsheet has no concept of a certified draw, a closed line, a held moiety or a signed variation. It will calculate anything and enforce nothing.
What this looks like when the software holds the state
This is why we built billing as a state machine rather than a template. In the finance module, the SOV is data: lines are authored against the contract, each draw computes this-period against balance to finish, retention is held and released on the same invoice trail, and change orders are gated on the client’s signature before they touch the contract sum — with milestone, progress-SOV, cost-plus and time-and-materials methods on the same ledger and a per-project P&L underneath. The arithmetic identity that the spreadsheet politely allows you to break is, here, simply not breakable.