ADVERTISEMENT

Philippine banks' bad-loan ratio posts second-quarter best on stronger lending

Published Aug 12, 2025 02:46 pm

At A Glance

  • Stronger loan growth and improved borrower capacity drove the improvement in June's bad loan loan or non-performing loan ratio (NPL), which dropped to 3.34 percent in June, its lowest in three months.
Stronger loan growth and improved borrower capacity drove the improvement in June’s bad loans or non-performing loan (NPL) ratio, which dropped to 3.34 percent in June, its lowest in three months.
According to the latest data from the Bangko Sentral ng Pilipinas (BSP), the banking industry’s NPL ratio improved from 3.38 percent in May and 3.39 percent in April. The second quarter’s best was also lower by 17 basis points (bps) from 3.51 percent in June last year.
BSP data showed bad loans increased by 0.6 percent to ₱527.4 billion as of end-June from ₱527.4 billion in May. Year-on-year, soured loans hiked by 5.5 percent from ₱502.4 billion in June last year.
Loans become non-performing if unpaid for at least 90 days past due date, posing a credit risk as borrowers are less likely to repay.
Philippine banks’ total loan portfolio increased by 1.7 percent to ₱15.88 trillion as of end-June from ₱15.62 trillion in the previous month. Year-on-year, the end-June figure jumped by 10.9 percent from the ₱14.32 trillion recorded a year ago.
Past due loans increased by 1.8 percent to ₱670.5 billion as of June from ₱659 billion a month ago. It also increased by 9.2 percent from ₱614.2 billion in the previous year. This brought the past due ratio to 4.22 percent, unchanged from the previous month but lower than last year’s 4.29 percent.
Past due loans are those where the borrower has failed to pay principal, interest, or any installment on time, including restructured loans and other financial assets.
Banks’ bad loan ratio improved for the second-straight month, which is also among the best in nearly five years or since August 2020. This could be attributed to the faster growth in bank loans, up at least 12 percent year-on-year recently, which increased the base of the ratio.
Jonathan Ravelas, senior adviser at Reyes Tacandong & Co., said the dip in June’s soured loan ratio “reflects stronger loan growth and improving borrower capacity,” a view also shared by John Paolo Rivera, senior research fellow at state-run policy think tank Philippine Institute for Development Studies (PIDS).
“Lower interest rates—stemming from last year’s policy cut is being feltand upbeat economic momentum helped by lower inflation are helping borrowers stay current on payments. Banks are also tightening credit screening, which helps keep defaults in check,” Ravelas said.
Rivera said the drop likely reflected stable repayment capacity among borrowers, aided by low inflation, steady jobs, and resilient domestic demand. He added that some universal and commercial banks (UK/Bs) have tightened lending standards, helping limit new bad loans.
“Sustaining this trend will depend on keeping macro fundamentals stable, especially as a policy rate cut later this month could lower borrowing costs, encourage loan growth, and help more borrowers service their debt,” Rivera said.
“Looking ahead, I expect NPLs to stay within a manageable range, possibly even inching lower, as the economy continues to expand and banks remain cautious but optimistic in lending—especially to SMEs [small- and medium-sized enterprises] and retail borrowers,” Ravelas added.
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.