Compulsory Acquisition NSW: Case Law & Compensation Changes

“It’s not a house, it’s a home” – Public awareness of compulsory land acquisition law grew partly due to the 1997 film, The Castle. The Kerrigan family contested the forced acquisition of their home. They ultimately took their case to the High Court of Australia. Unlike Dennis Denuto’s “vibe”-based arguments, legislation governs compulsory acquisitions in NSW. The Land Acquisition (Just Terms Compensation) Act 1991 (NSW) ensures acquisitions occur on “just terms.” It also guarantees property owners receive fair compensation. This area of law continues to evolve. Recent court decisions and statutory reforms shape its application.

Recent Case Law: Clarifying “Public Purpose” in Land Acquisitions

In December 2024, the NSW Court of Appeal overturned a broad interpretation of “public purpose” in a compulsory acquisition case. Transport for NSW had acquired land from Goldmate Property. The Land and Environment Court found the acquisition served the M12 motorway project and broader state planning goals. These included rezoning for commercial, industrial, and employment uses near Western Sydney Airport. This broad interpretation led to a ruling that disregarded land value increases from rezoning when calculating compensation. On appeal, the Court of Appeal rejected this approach. The court ruled that the acquiring authority must define its public purpose more narrowly. It limited the purpose to building and maintaining the M12 motorway. As a result, the case will return to the Land and Environment Court to reassess compensation under this narrower definition. The key issue now is causation—whether the M12 project caused the upzoning, which could still justify disregarding the increased land value.

Recent Statutory Reforms: Housing Amendment Bill 2025 (NSW)

The Housing Amendment Bill 2025 (NSW) passed in February 2025 with bipartisan support. It introduces changes to housing-related land acquisitions and planning powers. In her second reading speech, Minister for Housing Rose Jackson outlined the reforms. She stated they support the Minns government’s housing commitments. The government aims to deliver 8,400 social homes and 21,000 affordable homes. These projects fall under the Building Homes for NSW Program. The reforms are part of broader efforts to address the housing crisis.

This bill introduces several significant changes to housing-related land acquisitions and planning powers. It amends the Housing Act 2001 (NSW) to grant the Minister for Housing the same planning and land acquisition powers as the Land and Housing Corporation, including the authority to compulsorily acquire land under the Land Acquisition (Just Terms Compensation) Act 1991 (NSW). The Land and Housing Corporation manages a portfolio of over 125,000 properties, primarily focused on social housing. While the corporation has compulsory acquisition powers, these powers are rarely exercised. However, with these new legislative changes, the Minister for Housing now has expanded authority to facilitate land acquisition and development for housing supply. Additionally, the bill introduces provisions to streamline land transfers between government agencies, aiming to reduce delays in housing and infrastructure projects.

Conclusion

These recent judicial and legislative developments mark a significant shift in compulsory acquisitions and housing policy in New South Wales. The Court of Appeal’s ruling reinforces a strict interpretation of public purpose, limiting how authorities can define their acquisition objectives. At the same time, the Housing Amendment Bill 2025 (NSW) expands the Minister for Housing’s role in land acquisitions, potentially increasing the use of compulsory acquisition for housing development. Together, these changes will shape how landowners, developers, and government agencies navigate compulsory acquisitions and compensation disputes in the future. As these legal and policy frameworks evolve, lawyers will play a crucial role in ensuring that government authorities exercise their acquisition powers within statutory limits, safeguarding property owners against potential overreach.

Jake McKinley notes that this article is written for the purpose of providing generalised information and not to provide specialised legal advice. If you require qualified legal advice on anything mentioned in this article, our experienced team of solicitors at Jake McKinley are here to help. Please get in touch with us on 02 9232 8033 today to make an enquiry. 

Related Articles

- End", entire site, priority AFTER 8417. * * What it does: * 1. On load, reads gclid + utm_* from the URL and stores them in a * first-party cookie for 90 days (only overwrites gclid when a new one * is present, so a later organic visit does not wipe the paid click). * 2. Appends those params to every calendly.com link and to any inline * Calendly embed, so a completed booking carries them into Calendly and * onward to the RedRain integration. */ (function () { 'use strict'; var COOKIE = 'jm_attr'; var MAXAGE = 60 * 60 * 24 * 90; // 90 days var UTM_KEYS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term']; function readCookie(name) { var m = document.cookie.match('(?:^|; )' + name + '=([^;]*)'); return m ? decodeURIComponent(m[1]) : ''; } function writeCookie(name, val) { document.cookie = name + '=' + encodeURIComponent(val) + '; path=/; max-age=' + MAXAGE + '; SameSite=Lax; Secure'; } // ---- 1. capture from URL, merge with stored ---- function capture() { var url = new URLSearchParams(window.location.search); var stored = {}; try { stored = JSON.parse(readCookie(COOKIE) || '{}'); } catch (e) { stored = {}; } var incomingGclid = url.get('gclid'); if (incomingGclid) { stored.gclid = incomingGclid; } // only overwrite on a fresh click UTM_KEYS.forEach(function (k) { var v = url.get(k); if (v) { stored[k] = v; } }); // if a gclid arrived but no utm_source, tag the source so RedRain is not blank if (incomingGclid && !stored.utm_source) { stored.utm_source = 'google'; stored.utm_medium = 'cpc'; } if (Object.keys(stored).length) { writeCookie(COOKIE, JSON.stringify(stored)); } return stored; } var attr = capture(); if (!attr || (!attr.gclid && !attr.utm_source)) { return; } // nothing to forward // ---- 2. build a query string for Calendly ---- function calendlyParams() { var p = new URLSearchParams(); UTM_KEYS.forEach(function (k) { if (attr[k]) { p.set(k, attr[k]); } }); // carry the raw gclid too. utm_content is the safe carrier RedRain can map // if its Calendly field mapping does not expose a native gclid slot. if (attr.gclid) { p.set('gclid', attr.gclid); if (!p.get('utm_content')) { p.set('utm_content', 'gclid:' + attr.gclid); } } return p.toString(); } function withParams(href) { if (!href || href.indexOf('calendly.com') === -1) { return href; } var qs = calendlyParams(); if (!qs) { return href; } // don't double-append if (href.indexOf('utm_source=') !== -1 || href.indexOf('gclid=') !== -1) { return href; } return href + (href.indexOf('?') === -1 ? '?' : '&') + qs; } // ---- 3a. rewrite anchor links (covers the popup/booking click path) ---- function rewriteLinks() { var links = document.querySelectorAll('a[href*="calendly.com"]'); for (var i = 0; i < links.length; i++) { var a = links[i]; if (a.getAttribute('data-jm-attr') === '1') { continue; } a.setAttribute('href', withParams(a.getAttribute('href'))); a.setAttribute('data-jm-attr', '1'); } } // ---- 3b. rewrite inline embeds. Must run before Calendly widget.js reads // data-url; if the widget already initialised, re-point and let it // re-read on next interaction. Most bookings go via the link path. ---- function rewriteEmbeds() { var w = document.querySelectorAll('.calendly-inline-widget[data-url]'); for (var i = 0; i < w.length; i++) { var el = w[i]; if (el.getAttribute('data-jm-attr') === '1') { continue; } el.setAttribute('data-url', withParams(el.getAttribute('data-url'))); el.setAttribute('data-jm-attr', '1'); } } function run() { rewriteLinks(); rewriteEmbeds(); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', run); } else { run(); } // catch links injected later (Elementor popups, lazy content) if (window.MutationObserver) { var mo = new MutationObserver(function () { rewriteLinks(); }); mo.observe(document.documentElement, { childList: true, subtree: true }); } })();