After years of losing ground to Point-of-Sale (PoS) agents, Automated Teller Machines (ATMs) are making a comeback as transaction volumes rise while PoS volumes decline.
In the first quarter of 2026, Nigerians made 438.6 million ATM transactions, up 6.6% from the previous year, according to data released on Friday by the Central Bank of Nigeria (CBN). Transaction value grew 64.6% year-on-year to ₦26.3 trillion ($19.4 billion).
PoS transaction volumes fell 19.9% year-on-year to 2.92 billion in Q1 2026, while transaction value fell 16.4% to ₦59.3 trillion ($43.7 billion).
These changes could redraw Nigeria’s cash-access network. PoS agents spent years filling the gaps left by scarce and unreliable ATMs, becoming the preferred way for millions of Nigerians to get cash. But as ATM transactions rise and PoS volumes decline, banks are beginning to reclaim a role agents had steadily taken from them.
ATMs are making a comeback
Nigeria’s first ATM was installed in 1989 by Société Générale Bank, a French commercial bank, and through the early 2000s, commercial banks and independent ATM deployers accelerated growth. By 2021, there were about 22,600 ATMs across the country. But years of underinvestment, out-of-service machines, empty cash trays, and network problems had reduced the number of active ATMs to 16,714 by mid-2024.
As ATM availability declined, PoS terminals, led by fintechs like Moniepoint and OPay, increasingly filled the gap. In March 2025, Nigeria had 8.36 million registered PoS terminals, with 5.90 million active or deployed.
With an estimated population of 237 million, Nigeria has about one PoS terminal for every 28 people, compared with 13 ATMs per 100,000 adults in 2024, according to the World Bank.
Nigeria’s cash crisis in 2023, triggered by the CBN’s currency redesign and cash withdrawal limits, turned PoS agents into a crucial part of the country’s cash network. As Nigerians struggled to withdraw money from banks and ATMs, agents became the more accessible option for getting cash, transferring money and carrying out other basic financial transactions. At the height of the crisis, there were 2.32 million PoS terminals in the country.
But a new set of CBN rules is changing the operating environment for both channels.
How much will it cost to get cash?
Enter what you need and compare the cost of an ATM with what your local PoS agent charges.
My bank’s ATM
Another bank’s ATM — on-site
Another bank’s ATM — off-site
Enter the fee your agent quoted you.
We’ve pre-filled an estimated market rate. Replace it if your agent charges differently.
Your options
ATM
PoS
One thing to know: PoS cash-outs are subject to CBN limits. An amount above the permitted cash-out limit cannot be completed as one transaction.
`;
posBreakdownEl.innerHTML = `
`;
} else {
atmBreakdownEl.innerHTML = `
₦${baseAtm.toLocaleString()}
`;
posBreakdownEl.innerHTML = `
₦${posFee.toLocaleString()}
`;
}
// 4. Calculate and Render The Verdict
const verdictTitle = document.getElementById(‘tc-verdict-title’);
const verdictReason = document.getElementById(‘tc-verdict-reason’);
if (atmType === ‘other-off’) {
if (posFee > maxAtm) {
let maxSavings = posFee – baseAtm;
verdictTitle.innerText = `ATM could save you up to ₦${maxSavings.toLocaleString()}`;
verdictTitle.style.color = ‘#151515’;
} else if (posFee < baseAtm) {
let minSavings = baseAtm – posFee;
verdictTitle.innerText = `PoS saves you at least ₦${minSavings.toLocaleString()}`;
verdictTitle.style.color = ‘#EA2D2E’;
} else {
verdictTitle.innerText = `The cheaper option depends on the ATM surcharge`;
verdictTitle.style.color = ‘#151515’;
}
verdictReason.innerHTML = `Why: Your selected ATM costs ₦${baseAtm.toLocaleString()}, with a possible surcharge of up to ₦500, while your agent charges ₦${posFee.toLocaleString()}.`;
} else {
if (posFee > baseAtm) {
let savings = posFee – baseAtm;
verdictTitle.innerText = `ATM saves you ₦${savings.toLocaleString()}`;
verdictTitle.style.color = ‘#151515’;
} else if (baseAtm > posFee) {
let savings = baseAtm – posFee;
verdictTitle.innerText = `PoS saves you ₦${savings.toLocaleString()}`;
verdictTitle.style.color = ‘#EA2D2E’;
} else {
verdictTitle.innerText = `Costs are equal`;
verdictTitle.style.color = ‘#151515’;
}
verdictReason.innerHTML = `Why: Your selected ATM charges ₦${baseAtm.toLocaleString()} for this withdrawal, while your agent charges ₦${posFee.toLocaleString()}.`;
}
// 5. Enforce Regulatory Context Rules
const regulatoryAlert = document.getElementById(‘tc-regulatory-alert’);
if (amount > 100000) {
regulatoryAlert.style.display = ‘block’;
} else {
regulatoryAlert.style.display = ‘none’;
}
// 6. Show Output
outputSection.style.display = ‘block’;
}