Skip to content

Construction loan drawdown engine

ID MOD-121
System SD05
Repo bank-credit
Build status Deployed
Deployed Yes
Last commit 19b0610

Purpose

Manages the progressive drawdown lifecycle for construction loans. A construction loan disburses in tranches tied to defined construction milestones — slab, frame, lock-up, fixing, and completion — rather than as a single lump sum at settlement. Interest accrues only on the drawn balance. On completion, the loan converts to a standard residential mortgage with a full P&I amortisation schedule generated by MOD-112.

Compliance rationale

CCCFA (NZ) and NCCP (AU) responsible lending obligations extend to construction lending. CRE-002 requires that drawdowns are conditioned on verified construction progress — not on a calendar schedule alone. Releasing funds against an unverified milestone would expose the bank to a regulatory finding that it did not adequately monitor the use of credit. LVR monitoring under RBNZ BS19 (NZ) and APRA APS 112 (AU) must be updated after each drawdown: the loan balance increases with each tranche while the security value (an in-progress build) may lag or fluctuate, making per-drawdown LVR tracking an ongoing prudential requirement rather than a one-time assessment at origination.

Commercial rationale

Construction lending is a core product category for building societies and regional banks serving owner-builders and new build purchasers. Progressive drawdown protects both parties: the bank does not release funds until a qualifying certifier confirms the milestone is complete, and the customer is not charged interest on funds not yet drawn. Without this module, the platform can only offer land purchase loans or fully advanced loans, excluding the most common form of residential construction financing. The absence of construction lending capability would also constrain the bank's ability to serve first-home buyers using new build programmes (NZ First Home Loan, FHLDS in AU) which predominantly involve construction contracts.

Construction phases and milestone model

Each construction loan has a drawdown_schedule — a sequence of tranches, each with:

  • tranche_number — 1 = deposit/slab, 2 = frame, 3 = lock-up, 4 = fixing, 5 = completion (configurable per product)
  • tranche_amount — dollar amount or percentage of total facility
  • milestone_description — plain-text description, e.g. "Frame and roof complete"
  • status — lifecycle state: pendinginspection_requestedcertifieddrawnlapsed
  • certification_date and certifier_reference — quantity surveyor or building inspector reference
  • drawdown_date and posting_id — populated when funds are released

Milestone certification is provided by an approved quantity surveyor or building inspector. The bank does not self-certify. Certifier references are stored against each tranche and are available to auditors via the credit file.

Data model

-- credit.construction_schedules
CREATE TABLE credit.construction_schedules (
  schedule_id        UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  loan_id            UUID NOT NULL REFERENCES credit.loans(loan_id),
  total_facility     NUMERIC(18,2) NOT NULL,
  total_drawn        NUMERIC(18,2) NOT NULL DEFAULT 0,
  construction_end_date DATE,  -- expected completion
  conversion_date    DATE,      -- when IO period ends and P&I begins
  status             TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active','complete','defaulted')),
  created_at         TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- credit.construction_tranches
CREATE TABLE credit.construction_tranches (
  tranche_id         UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  schedule_id        UUID NOT NULL REFERENCES credit.construction_schedules(schedule_id),
  tranche_number     INT NOT NULL,
  tranche_amount     NUMERIC(18,2) NOT NULL,
  milestone_description TEXT NOT NULL,
  status             TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending','inspection_requested','certified','drawn','lapsed')),
  certification_date DATE,
  certifier_reference TEXT,
  drawdown_date      DATE,
  posting_id         UUID,
  created_at         TIMESTAMPTZ NOT NULL DEFAULT now(),
  UNIQUE (schedule_id, tranche_number)
);

Key operations

Drawdown request. Agent or customer submits a drawdown request for a tranche. The system validates: tranche status is certified, all prior tranches have status drawn, and the loan is not in arrears. On validation, the drawdown is posted to the ledger via MOD-001, total_drawn is incremented, tranche status moves to drawn, and the event bank.credit.construction_drawdown_posted is emitted. MOD-063 dispatches a drawdown confirmation to the customer including the updated drawn balance.

Milestone certification. Agent uploads the certification document (stored via MOD-073 if document management is available) and records certification_date and certifier_reference. Tranche status moves to certified. MOD-063 notifies the customer that the milestone has been verified and a drawdown can now be requested.

Interest accrual on drawn balance only. MOD-005 receives total_drawn as the accrual base, not total_facility. This value is refreshed after each drawdown posting. The customer is not charged interest on committed but undrawn funds. CON-005 compliance is maintained by design — there is no mechanism to accrue on the full facility.

LVR recalculation. After each drawdown, MOD-115 is called with the updated total_drawn value. LVR is recalculated as total_drawn / current_valuation. If LVR exceeds the policy breach threshold, an alert is generated and routed to the credit team for review. The property security record is updated with the new drawn balance so that LVR history is visible in the collateral register.

Completion and conversion. When all tranches reach status drawn, or when construction_end_date is reached (whichever is first), the schedule status is set to complete. MOD-112 is triggered to generate the full P&I amortisation schedule beginning on conversion_date. MOD-063 dispatches a notification to the customer containing the first repayment date, monthly repayment amount, and remaining loan term.

Requirements

ID Requirement
FR-545 System shall prevent drawdown disbursement unless the corresponding tranche has status certified.
FR-546 System shall post each approved drawdown as a ledger debit via MOD-001 and update total_drawn atomically.
FR-547 System shall supply total_drawn (not total_facility) to MOD-005 as the interest accrual base after each drawdown.
FR-548 System shall trigger MOD-112 to generate a P&I amortisation schedule when all tranches reach status drawn or construction_end_date is reached.

Module dependencies

Depends on

Module Title Required? Contract Reason
MOD-001 Double-entry posting engine Required Each drawdown tranche is posted as a ledger entry via the double-entry engine, incrementing the loan balance.
MOD-005 Daily accrual calculator Required Daily interest accrual runs only on the drawn balance — the accrual calculator must receive the current drawn amount, not the full facility limit.
MOD-112 Amortisation schedule engine Required After the construction phase completes and the loan converts to P&I, the amortisation schedule engine generates the full repayment schedule.
MOD-115 Property security and LVR management Required LVR is recalculated after each drawdown and the property security record is updated to reflect the new drawn balance.
MOD-063 Notification orchestration Required Drawdown notifications and milestone reminders are dispatched via the notification orchestration module.

Required by

(No modules in this wiki currently declare a dependency on this module.)


Policies satisfied

Policy Title Mode How
CRE-002 Responsible Lending Policy GATE Each drawdown tranche requires a completed milestone certification before funds are released — the system will not release funds based on a schedule alone.
CON-004 Product Disclosure & Sales Practice Policy AUTO The customer receives an updated amortisation schedule after each drawdown, reflecting the new principal balance and any change in the interest-only period remaining.
CON-005 Fee & Pricing Transparency Policy CALC Interest accrues only on the drawn balance — not the total approved facility — ensuring the customer is not charged interest on undrawn funds.
CRE-001 Credit Risk Management Policy CALC LVR is recalculated after each drawdown using the current drawn balance against the most recent valuation, with the result fed to MOD-115.

Capabilities satisfied

(No capabilities mapped)


Part of SD05 — Credit Decisioning & Loan Platform Compiled 2026-05-22 from source/entities/modules/MOD-121.yaml