ADVERTISEMENT

BPI's earnings rise in H1 on robust lending, fee-based businesses

Published Jul 17, 2025 09:16 am
BPI President and CEO Jose Teodoro "TG" K. Limcaoco
BPI President and CEO Jose Teodoro "TG" K. Limcaoco
Zobel-led Bank of the Philippine Islands (BPI) posted a 7.8 percent improvement in net income to ₱33 billion for the first half of 2025 from the ₱30.6 billion earned in the same period last year on strong growth in net interest income.
In a disclosure to the Philippine Stock Exchange, the bank stated that its higher earnings were driven by strong revenue growth, but were partially tempered by increases in operating expenses and provisions.
Total revenues at end-June stood at ₱92.6 billion, up 14.0 percent from last year.
This was fuelled by the 16.2 percent increase in net interest income to ₱71.2 billion, on the back of the 8.3 percent increase in the average earning asset base, and a 32-basis point expansion in net interest margin to 4.58 percent.
Non-interest income reached ₱21.4 billion, up 7.4 percent from last year, driven by the underlying strength of the bank’s fee businesses led by credit cards, insurance, and wealth management.
Operating expenses reached ₱42.7 billion in the first semester, up 11.7 percent year-on-year, due to spending on technology, business volume-related expenses, and manpower structural increases.
Despite the increase in operational expenses, the cost-to-income ratio improved by 96 basis points to 46.2 percent, owing to robust revenue growth.
The bank booked provisions of ₱7.3 billion, a 141.7 percent hike from last year. The non-performing loan ratio was 2.25 percent, with the NPL coverage ratio at 97.1 percent. Based on BSP Circular 941, the Bank’s NPL coverage ratio translates to 123.8 percent.
Total assets reached ₱3.4 trillion, representing a 9.3 percent year-over-year increase. Gross loans reached ₱2.4 trillion, up 14.1 percent from last year, due to robust growth across all portfolios, led by strong growth from non-institutional loans.
Total deposits increased by ₱2.6 trillion, representing a 6.5 percent year-over-year growth. The Bank’s current accounts and savings accounts (CASA) stood at ₱1.6 trillion, up 2.8 percent, with a CASA Ratio of 62.4 percent, while the Loan-to-Deposit Ratio reached 90.9 percent.
Total equity stood at ₱453.5 billion, up 11.5 percent year-on-year, with an indicative Common Equity Tier 1 Ratio of 14.5 percent and a Capital Adequacy Ratio of 15.3 percent, both well above regulatory requirements.
In June 2025, the Bank issued its 1.5-year peso-denominated fixed-rate BPI Supporting Inclusion, Nature, and Growth Bonds, or BPI SINAG Bonds, with an aggregate principal amount of ₱40.0 billion.
As the first tranche under the Bank’s ₱200 billion Bond and Commercial Paper Program, the BPI SINAG Bonds bear an interest rate of 5.85 percent per annum, paid quarterly. The SINAG Bonds were listed in the Philippine Dealing & Exchange Corp.

Related Tags

Bank of the Philippine Islands (BPI)
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.