Skip to main content

Construction & Site Management — User Manual

This is the app your site engineers, quantity surveyors, and project accountants use to run a construction job — from pricing the work to billing the client and paying subcontractors — while every certified value flows into standard ERPNext accounting as a real Sales or Purchase Invoice.

Examples use neutral placeholder names (e.g. Harborview Construction Ltd, project Riverside Apartments – Block C, subcontractor Apex Roofing Ltd). Substitute your own.

What you'll need

  • The correct Company selected wherever the field appears (see Switching Company).
  • A Projects User, Accounts User, or site role, depending on the step.
  • A native ERPNext Project for each job — Project is the umbrella every construction document links to, and it's how the cost reports roll everything up. See Project.

Open the app from the Desk home tile Construction, or search construction in the Awesomebar.

Construction workspace

The job life cycle at a glance

Project → Construction BOQ (priced scope, cost-category split, revisions)
→ Procurement: Material Request → RFQ → Supplier Quotation (compare) → PO → GRN → Purchase Invoice
→ Subcontractor Work Order → (advance / retention / WHT terms)
→ Site Daily Log / Plant Log (day-to-day site records, labour, plant, photos)
→ Progress Bill (to the client) → Sales Invoice
└── Retention held → Retention Release (later) → Sales Invoice
→ Subcontract Payment Certificate (to the subcontractor) → Purchase Invoice
→ Cost-control reports (budget vs committed vs actual, overrun, category)

Certified values post through native Sales Invoices and Purchase Invoices, so the project record, the subledger, and the General Ledger stay one source of truth — you never keep a second shadow ledger.


1. Create the Project (and its cost structure)

Use native ERPNext New Project — Project Name, Company, Customer (the client), expected start/end dates, and optionally a Cost Center and project budget. See Project. Every construction document below links back to this Project.

  • Cost centre — create a Cost Center per project (or per site) so native financial reports can show project-level P&L.
  • Budget — set a native Budget against the project's Cost Center to drive budget-vs-actual (native Budget Variance report).
  • Key-user assignment — assign the Project Manager, Site Engineer, QS, and accountant as project users / via ToDo assignment so each has the right access.

2. Construction BOQ — price the scope

  1. New Construction BOQ — Title, Project, BOQ Date, Revision (e.g. "Rev A"), Company, Currency.
  2. Add rows to the BOQ Items table, each with:
    • Section / Heading (e.g. "Substructure", "Roofing") — this is your BOQ structure.
    • Item (link to a native Item), Description.
    • Cost Category — Material, Labour, Plant, Subcontract, or Overhead.
    • UOM, Quantity, Rate → the row computes Amount.
  3. The BOQ totals Total Amount, split by Material / Labour / Plant / Subcontract / Overhead — your at-a-glance cost-category breakdown.
  4. Revisions — if the scope changes, don't edit the approved BOQ. Amend it (native ERPNext amendment); the Amended From field preserves the revision history.

Import a BOQ — for a large BOQ, use native Data Import on the Construction BOQ (with its child BOQ Items). See Data Import.

Worked example

Project "Riverside Apartments – Block C". BOQ Rev A: Substructure (Material 4,200,000 + Labour 1,100,000), Roofing (Subcontract 2,800,000). Total 8,100,000 (in your base currency).

3. Procurement — Material Request to Purchase Invoice

Procurement runs on native ERPNext Buying, linked to the project. The full trail Daniel's list describes is standard ERPNext, and every document carries the Project for cost roll-up:

  1. Material Request (MR) — the site raises what it needs (link the Project). See Material Request.
  2. Request for Quotation (RFQ) → Supplier Quotation — send the MR to several suppliers and capture their quotes. The native Quotation Comparison shows quotes side by side so you can compare and award. See Request for Quotation.
  3. Purchase Order (PO) — award to the chosen supplier.
  4. Purchase Receipt (GRN) — record partial and final deliveries against the PO.
  5. Purchase Invoice — the supplier's bill, three-way matched to the PO and GRN, posting to the project via the linked Project/Cost Center.

Over-order prevention — native ERPNext blocks receiving/billing beyond PO quantity when "Maximum" tolerances are configured in Buying/Stock Settings; set those tolerances to enforce over-order control.

4. Warehouse & inventory (project stock)

Site materials use native ERPNext Stock, scoped to the project:

  • Project warehouses — create a Warehouse per site/project.
  • Transfers — move stock between the main store and a site warehouse with a Stock Entry (Material Transfer).
  • Section-wise issue — issue materials to work with a Stock Entry (Material Issue), tagging the Project (and, if you use them, a Project/section dimension).
  • Real-time balances & valuation — the native Stock Balance and Stock Ledger reports show on-hand and valuation live.
  • Returns — a Material Receipt or return Stock Entry brings unused material back.
  • Movement reports — native Stock Ledger, Stock Balance, Material Requests reports.

See native Stock.

5. Subcontractor Work Order

  1. New Subcontractor Work Order — Project, Subcontractor (a Supplier), Discipline/Trade, Scope of Work.
  2. Work Order Value, Service Item (a native Item representing the subcontract service), and optionally link a native Purchase Order.
  3. Commercial TermsRetention %, Advance %, Withholding Tax % (confirm the WHT rate with your tax team).
  4. As certificates are raised against this order (Step 8), Certified To Date and Balance To Certify update automatically — the running control that prevents over-certifying the subcontractor.
Worked example

Subcontractor "Apex Roofing Ltd", Discipline "Roofing", Work Order Value 2,800,000, Retention 10%, Advance 20%, WHT 5%.

6. Site Daily Log — what happened on site today

  1. New Site Daily Log — Project, Log Date, Weather (Clear/Cloudy/Rain/Storm/Hot/Cold), Temperature.
  2. Labour table — Trade/Crew, Employee (native HR Employee where applicable), Headcount, Hours, Hourly Rate → Amount. Totals roll up to Total Manpower and Total Labour Cost.
  3. Equipment table — Asset, Equipment Name, Quantity, Hours Used.
  4. Site Notes — Work Done Today (daily progress), Delays / Issues, Site Visitors.
  5. Photos — attach site photos via the Attachments sidebar.
  6. Tick Timesheet(s) Created once labour hours are pushed into native HR Timesheets (the Generated Timesheets field references them), if your payroll process needs it.

Mobile entry — the Frappe Desk is responsive, so site staff can create a Site Daily Log from a phone/tablet browser (and the native Frappe mobile app). See the coverage notes on true offline capture.

7. Plant Log — equipment utilisation and running cost

  1. New Plant Log — Asset / Equipment Name, Project, Log Date, Operator.
  2. Hours Used, Downtime HoursUtilization %.
  3. Operating Cost — Fuel Quantity × Fuel Rate = Fuel Cost, plus Other Operating Cost → Total Operating Cost.

8. Progress Bill (Interim Payment Certificate) — billing the client

  1. New Progress Bill — Project, Client (Customer), IPC No., Contract Value, Billing Item (the native Item used on the resulting invoice).
  2. Valuation — Period From/To, Valuation Basis (Percentage / Milestone / Amount).
    • If Milestone, fill the Milestones table (Milestone name, Value, Completed %, Completed Value).
    • Otherwise set Overall % Complete, which computes Gross Work Done (Cumulative).
  3. The certificate computes automatically and prevents over-billing by netting off what was already certified:
    • Work This Period = Gross Work Done (Cumulative) − Previously Certified
    • Retention Held This Period = Work This Period × Retention %, rolling into Retention (Cumulative)
    • Advance Recovery = Work This Period × Advance % (recovers advance paid up front)
    • Net Payable This Certificate = Work This Period − Retention This Period − Advance Recovery
  4. Submit — this creates the linked Sales Invoice for the net payable, flowing straight into your normal receivables (and to KRA via eTIMS if configured).
Worked example

IPC No. 4, Contract Value 8,100,000, Overall % Complete 55% → Gross Work Done 4,455,000. Previously Certified 3,240,000 → Work This Period 1,215,000. Retention 10% → 121,500 held. Advance recovery 5% → 60,750. Net Payable = 1,032,750, invoiced to the client.

9. Retention Release — releasing held retention later

  1. When the client agrees to release retention (at practical completion or after the defects-liability period), create a New Retention Release — Project, Client, Release Date.
  2. Retention Held (Available) shows what's outstanding. Enter the Amount to Release (the app blocks a zero or over-available amount) and a Reason / Reference.
  3. Submit, then generate the Sales Invoice for the released amount (the app blocks a duplicate release invoice).

10. Subcontract Payment Certificate — paying the subcontractor

Mirrors the Progress Bill, on the payable side:

  1. New Subcontract Payment CertificateWork Order (Step 5), Project, Subcontractor, Certificate No., Period From/To.
  2. Gross Work Done (Cumulative) and Work Completed % against the Work Order Value. The app rejects a negative figure and any gross work done that exceeds the Work Order Value — over-certification is prevented at source.
  3. It computes Work This Period, Retention This Period / Cumulative, Advance Recovery, and Withholding Tax (from the work order's WHT %) → Net Payable.
  4. Submit, then generate the linked Purchase Invoice (blocked if net payable is zero, or if an invoice already exists) — flowing into normal payables and posting WHT via native Tax Withholding, the same mechanism the property Landlord Disbursement uses.

Subcontractor statement — for a subcontractor's full account (certified, retained, recovered, paid), use the native Supplier Ledger / Accounts Payable filtered to that Supplier, alongside the certificates raised against their work order.

11. Cost control & project accounting

  • Budget vs committed vs actualcommitted = open Purchase Orders + subcontract work-order values; actual = posted Purchase Invoices + issued stock + labour; budget = the BOQ / native Budget. The Project Cost Summary report brings BOQ, purchases, and labour together; native Budget Variance adds the budget line.
  • Variance / overrun — the Construction Cost Overrun report flags projects or cost categories running over their BOQ.
  • By category — the Construction Cost by Category report splits spend by Material / Labour / Plant / Subcontract / Overhead.
  • Procurement status — the Procurement Status report tracks Purchase Orders and fulfilment against work orders.
  • Project P&L / balance sheet / receivables / payables — because every certificate posts a native Sales/Purchase Invoice against the project's Cost Center, native Profit and Loss, Balance Sheet, Accounts Receivable, and Accounts Payable reports give project-level financials with a Project/Cost-Center filter.

Reports & dashboards

ReportWhat it shows
Project Cost SummaryBudget vs actual cost per project, rolled up from BOQ, purchases, and labour
Construction Cost by CategorySpend split by Material / Labour / Plant / Subcontract / Overhead
Construction Cost OverrunProjects or cost categories over their BOQ budget
Procurement StatusPurchase Orders and their fulfilment status against work orders

The Construction workspace adds shortcut tiles and charts. For additional project financials, use native ERPNext reports (Project Profitability, Budget Variance, Stock Balance, Accounts Receivable/Payable).

Project Cost Summary report

12. Quality, approvals & audit trail

  • Over-order — enforced by native PO/GRN tolerances (Step 3).
  • Over-issue — controlled by native Stock (you cannot issue more than on hand).
  • Over-certification — enforced by the app on both client Progress Bills (nets off Previously Certified) and Subcontract Payment Certificates (rejects gross work done above the Work Order Value).
  • Approval workflows — layer native Workflow on Progress Bill, Subcontract Payment Certificate, PO, and Purchase Invoice to require sign-off before submission. See native Workflow.
  • Audit trail — every submitted document is immutable; corrections go through Cancel + Amend (with an "Amended From" link) or a credit note, and ERPNext keeps the full version/comment history.

13. User-role walkthroughs (Site Engineer → MD)

Assign each role the documents they own; the daily flow then reads:

  • Site Engineer — Site Daily Log, Plant Log, Material Request, photos.
  • Store/Warehouse — Stock Entries (transfer/issue/return), GRN.
  • Quantity Surveyor — Construction BOQ, measurement, Progress Bill, Subcontract Payment Certificate valuation.
  • Procurement — RFQ, Supplier Quotation comparison, Purchase Order.
  • Project Manager — approves certificates and POs (via Workflow), watches cost reports.
  • Project Accountant — Purchase/Sales Invoices, Payment Entries, retention, WHT.
  • Finance Manager / MD — Project Cost Summary, Cost Overrun, project P&L.

Use native ERPNext Role and User Permission (or the Company Hub app) to scope each person.

14. Multi-company separation

If you run several companies (e.g. a construction company, a property company, and a holding company) on one system, keep each job's documents under the right Company. The Company Hub app adds an Odoo-style company switcher and enforces company isolation through native User Permissions. Always confirm the Company on a document before submitting.

15. One complete end-to-end transaction (finale)

A minimal full cycle to demonstrate the app end to end:

  1. Create the Project + Cost Center + Budget.
  2. Enter the Construction BOQ (priced, cost-category split).
  3. Raise a Material Request → PO → GRN → Purchase Invoice for materials.
  4. Create a Subcontractor Work Order (with retention/advance/WHT).
  5. Log a Site Daily Log and a Plant Log.
  6. Raise Progress Bill IPC No. 1 → Sales Invoice to the client → Payment Entry (receipt).
  7. Raise a Subcontract Payment CertificatePurchase InvoicePayment Entry (pay the subcontractor, WHT posted).
  8. Later, a Retention ReleaseSales Invoice.
  9. Review Project Cost Summary and the native Project P&L.

Every money movement above is a native ERPNext posting — the app only added the construction-specific valuation math.

What this app does not do

Set expectations honestly — these items from a full construction wishlist are not built into this app today:

  • Earned Value Management (EVM / CPI / SPI / VAC) — cost and variance are tracked (budget vs committed vs actual, overrun), but formal earned-value metrics are not computed.
  • True offline mobile capture — site logs work in a phone/tablet browser and the native Frappe mobile app, but there is no dedicated offline-first capture that syncs when back online.
  • Automatic cash-flow forecasting — use native cash-flow reporting; a construction cash-flow projection is not built in.
  • A packaged set of ten construction dashboards — the app ships four construction reports plus the workspace; additional views come from native ERPNext reports (listed in Step 11).
  • Procurement, warehousing, budgets, approval workflows, and project financial statements are delivered through native ERPNext, deliberately, so nothing bypasses standard controls.

Troubleshooting

ProblemLikely causeFix
Progress Bill won't compute Net PayableOverall % Complete or Milestones not filledConfirm the Valuation Basis matches how you filled the form
Certificate shows wrong Previously CertifiedAn earlier certificate for the same Project/Work Order is still DraftSubmit or cancel the earlier certificate first
"Gross work done exceeds the work order value" errorCertifying a subcontractor beyond their Work Order ValueCorrect the cumulative figure, or amend the Work Order Value if the scope genuinely increased
Purchase Invoice missing after submitting a certificateCertificate wasn't submitted, only savedOpen the certificate and Submit, then generate the invoice
Cost report looks incomplete for a projectDocuments not linked to the right ProjectCheck the Project field on each BOQ, PO, Stock Entry, and Site Daily Log
Retention release blockedAmount is zero or above retention availableEnter an amount within the held retention

See also