// Adds dimensions UUID, Author and Topic into GA4
Wednesday, September 23, 2026
29.8 C
Singapore

SG to JB road charges reach S$26.8 million: A significant boost to Malaysia’s transport revenue

MALAYSIA: In a significant boost to Malaysia’s transport revenue, road charges collected from vehicles entering the country from Singapore reached nearly RM88 million (S$26.8 million) between January and September 2024.

This figure is poised to exceed RM100 million (S$30.3 million) by year’s end, driven by an increase in vehicle crossings into Johor, according to Transport Minister Anthony Loke during a recent Parliament session contained in a report from The Straits Times.

The anticipated RM100 million collection would surpass the RM91 million gathered in 2023, highlighting the growing traffic between the two nations.

As of September, a staggering 4,397,229 vehicles from Singapore crossed into Malaysia, generating RM87,944,580 in road charges, Loke revealed in response to a parliamentary inquiry.

All foreign-registered private vehicles, except motorcycles, are subject to an RM20 fee when entering Malaysia from Singapore.

Daily traffic insights

Loke provided further insights into the daily traffic patterns, noting an average of about 89,818 trips through the Customs, Immigration, and Quarantine Complex at the Sultan Iskandar Building and the Sultan Abu Bakar Complex.

The breakdown of vehicle types is as follows:

Cars: 31,194

Motorcycles: 53,000

Buses: 3,531

Lorries: 2,093

These statistics encompass vehicles registered in both Malaysia and Singapore.

In Singapore

As of July this year, Malaysian vehicles entering Singapore are exempt from VEP fees for the first 10 days of each calendar year. According to MYEG, a daily fee of S$35 applies after this period.

Thus, if the same number of vehicles in Malaysia gets into Singapore, road revenue collection will reach S$153,903,015. However, VEP fees are not charged on:

Weekends (Saturdays and Sundays), Singapore public holidays, days when you enter after 5 pm, and exit before 2 am the following day, and days when one enters at noon and leaves before 2 am during the June and December school holidays.

Future investments in public transport

When questioned about allocating road charge revenues for public transport improvements in Johor Bahru and beyond, Loke explained that the funds contribute to the consolidated revenue account, with RM5 returned to the Johor state government for every RM20 collected.

He also indicated plans to discuss with the Finance Ministry the possibility of directing road charge revenues toward enhancing public transport.

Loke emphasized the need for increased public transport resources, particularly with the ongoing development of the Rapid Transit System (RTS) Link—a 4km light rail shuttle connecting Bukit Chagar in Johor Bahru to Woodlands North in Singapore.

Set to be operational by January 2027, the RTS is expected to carry 10,000 passengers per hour in each direction, significantly alleviating congestion at the Johor-Singapore Causeway, currently recognized as the world’s busiest border crossing.

Hot this week

‘We don’t want to give them the bullet’: Why only one DAP minister resigned over the Najib pardon

DAP chief Anthony Loke has resigned as Malaysia's Transport Minister in protest over Najib Razak's conditional pardon, while the party's other ministers remain in Cabinet to prevent a political crisis

After Workers’ Party has called for it since 1994, Jamus Lim cheers Education Ministry’s announcement of smaller class size pilot

"I am, of course, immensely gratified by this development, not least because the #workersparty has been hammering on about smaller class sizes for ages (since our 1994 manifesto, championed by our ...

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