ADVERTISEMENT

Jollibee cuts spending plan to ₱13 billion despite record quarterly profit

Published Aug 11, 2026 04:01 pm
Richard CW Shin, Tony Tan Caktiong and Ernesto Tanmantiong
Richard CW Shin, Tony Tan Caktiong and Ernesto Tanmantiong
Jollibee Foods Corp. scaled back its capital expenditure budget and lowered full-year sales growth projections for this year, reining in store expansion amid persistent cost pressures and dynamic operating environment.
In a disclosure to the Philippine Stock Exchange, the firm said that the fast-food operator now expects capital spending to range between ₱13 billion and ₱15 billion this year, trimming the top end of its previous target of ₱16 billion.
Jollibee also revised its full-year same-store sales growth guidance downward to three percent to four percent, compared with its initial forecast of four percent to six percent.
The reduced spending plan comes amid a more conservative expansion strategy. Jollibee updated its target for gross new store openings to between 1,000 and 1,100 outlets for the year from the 1,200 to 1,300 openings originally planned.
Operating income growth guidance was similarly adjusted to 10 percent to 15 percent, compared to the previous range of 15 percent to 18 percent. Jollibee cited lower same-store sales growth, revised store rollout schedules, ongoing transition costs for its China operations and Smashburger, and elevated supply chain expenses for the lower operational outlook.
Despite the softer full-year targets, Jollibee kept its guidance for system-wide sales growth at eight percent to 12 percent and overall store network growth at five pecent to 10 percent.
Jollibee attributed this stability to resilient consumer demand across key markets, ongoing portfolio optimization, and an expanding base of committed franchisees in North America.
The announcement comes alongside record earnings for the second quarter. Net income rose 5.7 percent year-on-year and 130.5 percent quarter-on-quarter to ₱3.4 billion, the company’s highest quarterly profit on record.
Consolidated revenues climbed 12.2 percent from the first quarter, driving the 25.3 percent gain in gross profit and a 56.1 percent jump in operating income.
Gross profit margin improved to 18.5 percent in the second quarter from 16.5 percent in the first quarter, as price increases implemented since April and productivity measures began taking hold.
However, reported results included ₱239 million in transition costs linked to store closures and lease terminations under the company’s push to shift Yonghe King and Smashburger toward franchised business models.
Ernesto Tanmantiong, Jollibee chief executive officer, noted that healthy underlying demand across domestic and international markets continues to support sales momentum.
Richard Shin, Jollibee chief financial and risk officer added that recent portfolio adjustments involve near-term costs but position the group for stronger long-term profitability and capital discipline. (James A. Loyola)

Related Tags

Jollibee Foods Corporation Ernesto Tanmantiong Richard Shin
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; } }

{{ static_articles_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.