Project Accounting and Project Systems

A project is a temporary cost and revenue object with a structure, a budget, a schedule, and a settlement rule. Used for capital projects, construction, engineer-to-order manufacturing, R&D, IT programmes, and professional services delivery.

The project structure

Project: PRJ-2026-014  New Dhaka Warehouse
│
├── WBS 1  Design & permits                    budget 4,000,000
│   ├── WBS 1.1  Architectural design
│   └── WBS 1.2  Permits and approvals
├── WBS 2  Civil works                        budget 42,000,000
│   ├── WBS 2.1  Foundation
│   ├── WBS 2.2  Structure
│   └── WBS 2.3  Roofing
├── WBS 3  MEP                                budget 18,000,000
├── WBS 4  Racking & equipment                budget 25,000,000
└── WBS 5  Commissioning                       budget  3,000,000

WBS = Work Breakdown Structure. Each element can:

  • Carry a budget
  • Collect actual costs
  • Be billed
  • Be planned in time
  • Settle to a receiver (asset, cost centre, P&L)

WBS element properties

wbs_element(
  id, project_id, parent_id, wbs_code, description, level,
  responsible_person, company_id, profit_center_id,
  planning_element  BOOLEAN,   -- can hold a plan/budget
  account_assignment BOOLEAN,  -- can receive actual postings
  billing_element   BOOLEAN,   -- can be invoiced
  start_date, finish_date,
  status,                      -- CREATED | RELEASED | TECHNICALLY_COMPLETE | CLOSED
  settlement_rule_id
)

Design rule: only leaf elements should be account-assignment elements. If costs can post at both a parent and its children, your rollup double-counts and nobody can reconcile the project.

Networks and activities (scheduling)

Beneath the WBS, a network models the schedule:

Activity 0010  Excavation        10 days  ──┐
Activity 0020  Foundation pour    5 days  ──┤ FS
Activity 0030  Curing            14 days  ──┤ FS
Activity 0040  Steel erection    20 days  ──┘

Relationships: FS (finish-start), SS (start-start), FF (finish-finish), SF, each with optional lead/lag.

Activity types:

  • Internal — uses your own work centres and labour
  • External — subcontracted, generates a purchase requisition
  • Cost activity — a lump-sum cost with no resource
  • Material component — parts required, generating reservations or requisitions

Critical path = the longest chain of dependent activities; its length is the project duration. Activities on it have zero float. This is what a delay on the critical path means, and why “we’re only two days late on foundations” can move the go-live by two days while a two-week delay elsewhere changes nothing.

Budgeting and availability control

Original budget      42,000,000
+ Supplements         3,500,000
− Returns              (500,000)
= Current budget     45,000,000

− Actual costs       28,400,000
− Commitments         9,200,000    (open POs, contracts)
─────────────────────────────────
= Available           7,400,000

Availability control blocks a purchase order that would exceed the budget. Top-down budgeting means a child WBS cannot exceed its parent’s budget. See Budgeting and Commitments.

Cost collection

Everything that can post, posts to a WBS element:

Source Posting
Purchase order / invoice Materials and services
Goods issue Materials from stock
Timesheet Internal labour × cost rate
Production/service order settlement Manufactured items
Travel expenses Direct project cost
Overhead surcharge Applied per the costing sheet
Internal allocations Shared services
Depreciation Project-dedicated equipment

Revenue recognition on projects

See Revenue Recognition for the accounting standard. The project system provides the measurement.

Percentage of completion (cost-to-cost)

Contract value              80,000,000
Total estimated cost        62,000,000
Actual cost to date         28,400,000
─────────────────────────────────────────
POC                            45.8%
Revenue to recognise        36,645,000
Cost recognised             28,400,000
Gross profit                 8,245,000
Invoiced to date            32,000,000
Contract asset (unbilled)    4,645,000

The estimate at completion (EAC) is the critical number. If total estimated cost rises, POC falls, and revenue already recognised may need a cumulative catch-up adjustment in the current period. Regular, disciplined EAC review is a control, and a project manager who never revises the estimate upward is a red flag.

Onerous contracts

If EAC exceeds contract value, the entire expected loss is recognised immediately, not spread. IAS 37. This surprises project managers every time.

Milestone billing

Milestone                        %     Amount      Status
Contract signature              10%   8,000,000    Invoiced
Design approval                 15%  12,000,000    Invoiced
Foundation complete             20%  16,000,000    Invoiced
Structure complete              25%  20,000,000    Pending
Commissioning                   20%  16,000,000    Pending
Final acceptance (retention)    10%   8,000,000    Pending

Billing milestones and revenue recognition are independent. You can invoice 40% and recognise 45.8%, or invoice 60% and recognise 45.8%. The difference is the contract asset or liability.

Retention (a percentage held back until final acceptance, often 5–10%) is a receivable with a much later due date. It must be tracked separately from ordinary AR or your DSO and ageing reports are misleading.

Earned value management (EVM)

The standard technique for answering “are we on time and on budget?” with one consistent framework.

PV  Planned Value       budgeted cost of work scheduled     30,000,000
EV  Earned Value        budgeted cost of work performed     27,000,000
AC  Actual Cost         actual cost of work performed       28,400,000

SV  Schedule Variance = EV − PV = −3,000,000    (behind schedule)
CV  Cost Variance     = EV − AC = −1,400,000    (over budget)
SPI Schedule Perf Idx = EV / PV = 0.90          (10% behind)
CPI Cost Perf Index   = EV / AC = 0.95          (5% over)

EAC Estimate at Completion = BAC / CPI = 62,000,000 / 0.95 = 65,263,000
ETC Estimate to Complete   = EAC − AC  = 36,863,000
VAC Variance at Completion = BAC − EAC = −3,263,000

This is the standard reporting pack for capital projects, defence contracts, and government work — and CPI-based EAC is empirically a better predictor of final cost than the project manager’s own estimate. Building an EVM report is high-value; the hard part is measuring EV honestly (percent complete by physical progress, not by cost spent).

Settlement

At completion, project costs move to their final destination:

settlement_rule(
  wbs_element_id,
  receiver_type,      -- ASSET | COST_CENTER | GL_ACCOUNT | ORDER | PROFITABILITY_SEGMENT
  receiver_id,
  percentage or equivalence_number,
  settlement_type,    -- PERIODIC | FULL
  valid_from
)

Common patterns:

Project type Settles to
Capital project Asset under construction → fixed asset at go-live
Customer project COGS / profitability segment as revenue is recognised
R&D Expense, or a capitalised intangible if IAS 38 criteria are met
Internal IT project Software asset if capitalisable, otherwise expense
Cost-only project Cost centre

A capital project usually settles to several assets with different useful lives — building structure 40 years, HVAC 15, racking 10. Line-item settlement splits the AuC accordingly. See Fixed Assets.

Project status and lifecycle

CREATED → RELEASED → (execution) → TECHNICALLY COMPLETE → CLOSED
                                          │
                            no new commitments,
                            late costs still allowed

Same distinction as production orders: TECO stops new work but allows trailing invoices; CLSD stops everything. Projects closed too early strand costs; projects never closed distort WIP and keep budget locked.

Reporting

  • Project cost report — plan / budget / commitment / actual / available, by WBS
  • Cost element breakdown — where the money went
  • EVM dashboard — SPI, CPI, EAC, VAC with trend
  • Milestone and billing status
  • Cash flow forecast — cost outflow vs billing inflow over time
  • Resource loading — who is committed to what, and where the conflicts are
  • Portfolio view — all projects, RAG status, total capital commitment
  • Contract asset/liability roll-forward — for the auditors

Developer notes

  1. Only leaf WBS elements receive postings. Enforce it.
  2. Commitments matter more here than anywhere — projects commit far ahead of spending.
  3. The EAC is master data that must be revised, with an audit trail of who changed it and when. A frozen EAC hides losses.
  4. Revenue recognition and billing are independent schedules.
  5. Retention is a distinct receivable class with its own ageing.
  6. Settlement rules are configuration, and a project with no settlement rule will silently hold its cost forever. Add a validation.
  7. Project hierarchy queries are recursive — use a closure table if the tree is deep and read-heavy.
  8. Never delete a WBS element with postings. Block and mark.

Next