ADVERTISEMENT

Cebu Landmasters profits flat, revenues lower but reservation sales hit record high

Published Apr 14, 2026 11:19 am

Visayas-Mindanao (VisMin) developer Cebu Landmasters Inc. (CLI) reported that its consolidated net income was almost flat at ₱4.03 billion last year, from ₱4 billion in 2024, reflecting steady contributions from completed projects and recurring income streams.

The firm informed the Philippine Stock Exchange (PSE) on Tuesday, April 14, that its revenues declined by 7.4 percent to ₱18.5 billion from ₱19.98 billion in 2024, as results were partly shaped by the timing of project completions and revenue recognition, alongside steady construction progress across developments.

With the exclusion of lot sales, CLI real estate sales and related finance income remained the main revenue driver, reaching ₱17.3 billion, up 10 percent from ₱15.8 billion in comparable revenue in the year prior.

The firm also posted record residential reservations of ₱24.6 billion, a 45.6-percent jump from ₱16.9 billion in the previous year, driven by robust housing demand and sustained take-up across its expanding portfolio.

“Our record sales reflect a clear focus on building where demand is real and delivering on our commitments. Even through periods of volatility, we continue to deliver as planned and build developments that meet market needs and create lasting value for the communities we serve,” said CLI Senior Executive Vice President and Chief Operating Officer (COO) Jose Franco Soberano.

Strong sales were backed by an active launch pipeline, with more than 4,500 residential units rolled out during the year, carrying a combined value of around ₱31.3 billion across Cebu province, Cagayan de Oro City, Palawan province, and General Santos City.

Projects such as One Manresa Place in Cagayan de Oro and Casa Mira Homes Gensan saw strong take-up days after market launch, helping drive a 91-percent sell-out rate across completed, ongoing, and newly launched developments, underscoring strong end-user demand.

Recurring income streams continued to expand, with revenues from hospitality, leasing, and management fees rising 57 percent to ₱735 million from ₱467 million a year earlier.

Hotel revenues grew 79 percent to ₱431 million, supported by higher occupancy and an expanded room inventory of 797 rooms, from 640.

Leasing revenues rose 40 percent to ₱227 million as gross leasable area (GLA) increased to 71,000 square meters (sqm) from 41,000 sqm, driven by newly operational commercial assets. Management fees also increased 21 percent year-on-year.

CLI continued to strengthen its footprint in VisMin, including developments such as its mixed-use landbank in Liloan town in Cebu, while taking a significant step into Luzon.

The firm now has 132 projects across residential, office, hotel, co-living, co-working, mixed use, and township developments in 18 key cities across Visayas and Mindanao.

However, CLI is reducing its capital expenditures (capex) this year to around ₱12 billion to ₱14 billion from the ₱16 billion it spent in 2025.
Soberano said CLI’s priority for 2026 is project development, which will account for roughly 60 to 70 percent of capex for the year.

Related Tags

Cebu Landmasters Inc. Jose Franco Soberano
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.