// Adds dimensions UUID, Author and Topic into GA4
Saturday, April 11, 2026
28.8 C
Singapore

Bus and train fares to go up by the maximum 7 per cent: Public Transport Council confirms

The Public Transport Council confirmed today (8 Oct) that bus and train fares will rise by seven per cent – the maximum allowable increase under this year’s fare review exercise – for adult commuters from 28 December 2019 onwards.

Adult commuters – who make about 65 per cent of all public transport trips in Singapore – who use travel cards will pay nine cents more per journey from the end of the year while those who use cash or single-trip tickets will have to pay a hefty 20 cents increase more trip.

That is not all. The cost of monthly concession passes is set to rise by between S$1 and S$5.50 while the price of adult monthly travel passes will go up by a steep S$8.

Students, senior citizens and those with disabilities who hold concession cards will see a 4-cent increase per journey, compared to the seven per cent hike for adult commuters. Full-time polytechnic and diploma students who presently pay adult fares will also qualify for concession cards.

The latest fare increase is based on a fare adjustment formula that was introduced last year. The formula takes factors like energy prices and inflation into account in the formula on how fares should be adjusted. -/TISG

Netizens fume as Khaw Boon Wan claims higher public transport fares are necessary to combat rising subsidies

- Advertisement -

Hot this week

Migrant worker wins $5.7K after 2-year fight as court rejects employer’s ‘fixed’ overtime payments

A migrant worker has won a two-year legal battle after the High Court ruled employers cannot cap overtime pay through fixed allowances, reinstating his full claim of S$5,711.11.

‘Not poor, but not enough’: Malaysia’s M40 caught in a housing squeeze

Rising living costs and tighter financing are leaving many middle-income Malaysians unable to turn their homeownership aspirations into reality.

Popular Categories

document.addEventListener("DOMContentLoaded", () => { const trigger = document.getElementById("ads-trigger"); if ('IntersectionObserver' in window && trigger) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { lazyLoader(); // You should define lazyLoader() elsewhere or inline here observer.unobserve(entry.target); // Run once } }); }, { rootMargin: '800px', threshold: 0.1 }); observer.observe(trigger); } else { // Fallback setTimeout(lazyLoader, 3000); } });
// //
Enable Notifications OK No thanks