A contracting business is not a shop that sells the same product many times; it is a portfolio of unique, long-running projects, each with its own budget, its own cash-flow profile, and its own risk of quietly losing money. In Iraq the pressure is sharper still: EPC and civil-works contracts run for years, are billed against progress rather than delivery, carry mandatory retentions, and are paid in a dinar–dollar mix while much of the cost is spent on subcontractors and imported materials. Generic accounting software was built to track a company, not a project — and that single mismatch is why so many Iraqi contractors cannot tell which jobs are actually profitable until it is far too late.

Why generic accounting software fails contractors

Off-the-shelf bookkeeping tools answer the question "how did the company do this month." A contractor needs to answer "how is each project doing right now, against budget, to completion." Those are different questions, and forcing a job-costing world into a chart of accounts alone produces numbers that are technically correct and managerially useless.

  • Costs land in expense accounts by type, not against the project that incurred them, so per-job margin is invisible.
  • Progress billing, retentions and advance payments have no native home, so they are tracked in spreadsheets that drift from the ledger.
  • There is no concept of cost-to-complete, so an over-budget project looks fine until the last invoice.
  • Subcontractor commitments sit outside the books until they are billed, hiding the true committed cost of a job.

Project and job costing as the foundation

The core capability to insist on is analytic, project-level costing: every labour hour, material issue, equipment charge, subcontractor invoice and overhead allocation must attach to a specific project — and ideally to a phase or cost code within it. This is what turns the general ledger into a management tool. In both Odoo and Oracle NetSuite this is delivered through analytic accounting and project dimensions rather than by multiplying the chart of accounts, which keeps statutory reporting clean while giving management a live view.

The test is simple: at any moment you should be able to open one project and see budgeted cost, committed cost, actual cost incurred, revenue recognised, and estimated cost-to-complete — side by side, without exporting anything.

Progress billing, retentions and advances

Construction revenue is billed in slices tied to certified progress, not on delivery of a finished item. An ERP for contractors must model the interim payment certificate natively: bill a percentage of completion, deduct the contractual retention (commonly a fixed percentage held until handover and defect liability), offset any recovery of an advance payment, and carry the retention as a distinct receivable that is released on its own schedule.

  • Retentions must live in a dedicated account, aged separately, so the amount owed but not yet due is never confused with overdue debt.
  • Advance payments and their recovery against future certificates must be tracked automatically, not netted by hand.
  • Revenue recognition should follow percentage-of-completion under IFRS, distinct from the cash actually billed.

Subcontractor and procurement management

On most Iraqi projects a large share of the value is executed by subcontractors and paid to material suppliers, so controlling committed cost is as important as controlling spent cost. The ERP should turn a subcontract into a commitment the moment it is awarded, draw down that commitment as work is certified, apply retentions to subcontractors symmetrically with those applied by the client, and flag when certified subcontractor work exceeds its budget line. Purchase commitments for imported materials belong in the same picture, because a job's real exposure is what has been ordered, not only what has been invoiced.

EPC milestones and long-project cash flow

EPC and turnkey contracts are billed against engineering, procurement and construction milestones that may be months apart, which creates long stretches where cash goes out steadily while cash comes in only at milestone acceptance. A contractor's ERP has to make this timing visible before it becomes a crisis. The system should project cash on a per-project and consolidated basis, layering the expected timing of milestone certificates, retention releases and subcontractor payments against committed outflows — so financing needs are seen weeks ahead rather than discovered at the bank.

In the Iraqi context this projection must also respect the dinar–dollar split: certificates are frequently denominated in dinar while subcontractors, equipment and imports are settled in dollars, and the rate movement over a multi-year contract is itself a real source of gain or loss that belongs in the project's economics.

Iraq-specific compliance you cannot bolt on later

Whatever platform you choose, it has to sit correctly on Iraqi ground from day one. That means mapping project costing onto the Iraqi Unified Accounting System chart of accounts rather than a foreign default, handling withholding on subcontractor and supplier payments, supporting IQD/USD dual-currency accounting on every certificate and payment, and producing records that satisfy both the tax authority and IFRS-based reporting. These are structural decisions; retrofitting them after go-live is expensive and error-prone.

What good looks like

A well-chosen contracting ERP lets a project manager and the finance director look at the same live numbers and agree on them. You can open any project and read its true margin to date and its forecast at completion; retentions receivable and payable are aged and released on schedule; subcontractor commitments are visible before they are invoiced; and a consolidated cash-flow forecast shows, in both currencies, when the next financing gap will appear. When that is true, pricing the next tender becomes a decision grounded in evidence rather than optimism — which, over a portfolio of long projects, is the difference between a contractor that compounds and one that quietly bleeds.