ADVERTISEMENT

Provinces drive sari-sari boom, outpace Metro Manila—study

Published Mar 31, 2026 02:54 pm
E-wallet use jumps 75 percent in sari-sari stores, fueling digital transformation - Packworks report.
E-wallet use jumps 75 percent in sari-sari stores, fueling digital transformation - Packworks report.

Growth in the Philippine micro-retail sector shifted toward the provinces in 2025, with regional hubs outpacing Metro Manila in store expansion and transaction activity, according to a study by tech startup Packworks.

The study analyzed over one million monthly transactions over a one-year period from Packworks’ mobile application across its network of more than 300,000 stores nationwide. The company reported that 213,051 stores actively transacted through its app in 2025, a 21-percent increase from 176,000 in 2024 and a significant jump from 133,000 in 2023.

Bangsamoro Autonomous Region in Muslim Mindanao (BARMM) and Negros Island Region (NIR) emerged as the primary drivers of growth. BARMM recorded a 116-percent increase in active stores, alongside a 77-percent rise in app usage, a 119-percent increase in gross merchandise value (GMV), and a 97-percent rise in transactions. Growth accelerated in the second half of 2025 following the rollout of regional internet connectivity projects.

NIR posted a 58-percent increase in active stores, while app usage rose by 106 percent. GMV and transactions surged by 134 percent and 114 percent, respectively.

“We are seeing a trend where regional economies are becoming the new centers of growth for the sari-sari store sector. While Metro Manila remains a stable core, seeing a 37-percent increase in transactions, the rapid growth in regions such as BARMM and NIR suggests that regional store owners are quickly adopting tools to serve a much larger customer base,” said Andoy Montiel, Packworks chief data officer.

In National Capital Region (NCR), the study pointed to a “quality over quantity” trend. While the total number of transacting stores slightly declined, app usage increased by 15 percent, GMV rose by 31 percent, and transactions climbed by 37 percent.

The data also showed how regional growth translated into resilience at the community level. In Central Visayas, GMV rose by seven percent—from nearly ₱131 million in September to almost ₱140 million in October—following a 6.9-magnitude earthquake on Sept. 30, before reaching ₱158 million in December.

In Central Luzon, despite the impact of typhoon “Paolo” in October 2025, stores posted a 15-percent increase in GMV, rising from ₱150 million in September to ₱172 million in October, and peaking at ₱199 million by December during the holiday season.

Caraga, however, saw an 11-percent increase in store count but a 15-percent decline in app usage, which the study attributed to current internet penetration levels.

“As store owners in the provinces gain access to more resources, they are proving to be the economic backbone of their communities. The surge in the regions shows that sari-sari stores are not just local fixtures, but are evolving businesses capable of driving regional economic momentum,” said Packworks co-founder Hubert Yap.

Related Tags

Packworks sari-sari stores
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.