Menu Close

Crossing Borders: Malaysia (Sabah)-Brunei-Malaysia (Sarawak)-Indonesia


From the moment I left the Philippines last February, I already managed to cross 3 borders starting from Kota Kinabalu (Sabah, Malaysia) and all the way down to Pontianak (Indonesia).

There are more ways to cross the border than just flying and in this post, I will show you how I did it and the means of transportation I took.

Let’s begin.

My entry point from Manila is Kota Kinabalu. I have heard much about this city from friends back home and I was intrigued. I spent 4 days in Kota Kinabalu doing some touristy stuff, and after, I went to volunteer to a family-owned retreat house/homestay, which was located near the Kinabalu park (approx. 2 hours away from Kota Kinabalu).

After volunteering for 2 weeks, it was time to move again. So I went back to Kota Kinabalu and from there, I will be making my way down to Pontianak. Some opted to skip Brunei and Miri, and took a flight instead from Kota Kinabalu to Kuching. But I chose differently.

Here’s HOW I did it:

1st border crossing: Kota Kinabalu to Bandar Seri Bagawan, Brunei

From Kota Kinabalu, you can go to Brunei in 3 ways: 1) taking a flight; 2) taking the bus; 3) taking the ferry

In my case, I chose the ferry. Why? Because it was cheaper than taking a flight and with a shorter travel time than the bus.

The ferry bound for Labuan leaves at 8:00am and 1:30pm daily.

I went to Jesselton point at 6:45am on a Sunday. I was hoping that there were still seats available, but when I reached Jesselton point, I was told that ALL tickets to Labuan were sold out. Apparently, it was a school holiday and a lot of students were on their way back to Labuan.

Tip: buy your ticket a day in advance to make sure you’ll have a seat available. I didn’t buy a ticket in advance and I almost missed that ferry ride because of it.

At that point, I studied my options. I can turn around and take the bus, which I’m not really excited about, or leave the next day instead. I chose neither and just told the lady at the counter that I will wait in case there’ll be any last minute cancellations. Luck was on my side that day because at 7:30am, the same lady informed me that there was a seat available but only in business class. I didn’t hesitate anymore because the price difference was only $2.

The business class ticket cost MYR 44, while the economy class ticket cost MYR 39 including taxes.

After buying my ticket, I went directly to the departure area and waited until it was time to board the ferry. By 7:45am, we were already boarding and by 8:00am, we’re off to Labuan.

Labuan is the first stop when crossing the border from Kota Kinabalu to Brunei.

We arrived in Labuan at 11:11am.

I made my way to the ticketing booth for the next ferry that will take me to Brunei. There were 2 time slots to choose from: 1:30pm and 3:30pm. And the ticket cost MYR 35.

I had 2 hours to spare before my next boat trip so I decided to have lunch in a nearby restaurant and have my Ringgit exchanged to Brunei dollars.

By 1:00pm, we were allowed to enter and proceeded with immigration to get my exit stamp. The process was fast and easy. In less than 5 minutes, I was done.

The boat left at exactly 1:30pm and we arrived at Serasa terminal in Brunei at 2:45pm. Once again, the immigration process was fast and easy. I was done at 3:05pm.

The terminal is far from the city center. Considering Brunei is an expensive city, taking a taxi is out of the equation. Thankfully, there’s a shuttle that arrives at the terminal sometime between 3:30pm-3:45pm.

That shuttle took us to another terminal, just 10 minutes away, where another bus was waiting. This bus (bus #s 36-39) was the one going to city center with BSB (Bandar Seri Bagawan) terminal as the last stop.

The cost of the shuttle and the bus is only $1 (Brunei dollar). You will have to pay at the shuttle and exchange that ticket for another ticket (note: no need to pay again), once you board the bus going to the city.

The bus trip from Serasa terminal to BSB terminal took around one hour.

2nd border crossing: Brunei to Miri, Malaysia

I only spent a day in Brunei because it was too expensive for me. My next stop: Miri.

I planned on taking the bus to Miri but since the owner of villa I was staying at was also on his way to Miri, I rode with him. We took a private vehicle, which cost $25 (Brunei dollars).

The bus costs $20 and drops you off at Pujit Local Terminal, which is still 15 minutes away from the center.

Passing through immigration in Brunei and Miri was, again, fast and easy. And since we were in a private vehicle, we didn’t have to get out of the car. In a matter of minutes, we were done.

If you will be taking the bus, you will have to go down with your bags, have it scanned, get your exit and entry stamps, then board the bus again.

From Brunei to Miri, it took us 3 hours. And by bus, it would take 5 hours.

The good thing about taking a private vehicle was that I was dropped off at the hostel where I stayed at. With the bus, you either need to take a taxi or an Uber to take you to the city center. And the cost is around MYR 10.

3rd stop: Miri to Kuching (both still in Malaysia)

There’s nothing much to do in Miri, except for the National Parks, so I decided to stay for only 2 nights. My next stop: Kuching.

Kuching is part of Sarawak region in Malaysia.

From Miri to Kuching, you can either take the 1.5 hour flight or the 16-hour bus. I took the flight because it cost the same. Unbelievable but true.

4th stop: Kuching to Pontianak (Indonesia)

I initially planned on spending only 3 nights in Kuching so I’ll still have one night to spend in Pontianak. But I ended up spending 4 nights in Kuching just because.

It was a crucial move on my part because I had a flight from Pontianak to Yogyakarta on the same day I took the bus from Kuching to Pontianak.

I took the 7:15am bus to Pontianak via Bus Asia. Travel time would take 10 hours, which meant we would be arriving in Pontianak at around 4pm local time. I was cutting it too close because my flight leaves at 6:50pm.

Tip: book online for your ticket because they offer special discounts. The cost is around MYR 60 and I got mine at half the price!

I was praying hard that I would make that flight as I didn’t want to spend anymore on re-booking my flight or buying a new one.

We reached the border at 11:30am. When I got out of the bus to get my stamps and have my bags scanned, taxi drivers were all around me, being too aggressive. I was scared at one point. That’s when I know that I’m already in Indonesia because Malaysia was totally different.

Just like in any immigration check point, it was a smooth process. It didn’t take long before we were on our way again.

To my surprise, we arrived at Pontianak bus terminal at 2pm local time, which meant I had more than enough time before my flight. Luck was on my side once again.

I made my way out of the terminal hoping to grab an Uber that would take me to the airport. I didn’t want to take a taxi because the drivers overcharge their passengers. Unfortunately, Uber or Grab is not available and at that time, I was getting anxious with the taxi drivers swarming over me. They can really be so aggressive!

Thankfully, security people working at the terminal came to my rescue. They even helped me book a motorbike that would take me to the airport. I paid MYR 10 for the ride and it took us 30 minutes to get to the airport. I had to pay in MYR because I didn’t have any Rupiah with me.

One mistake I did — I didn’t change my Ringgit to Rupiah. There was no money exchange available at Pontianak airport.

I had 4 hours to spare before my flight. I looked for a restaurant that either takes VISA card or Ringgit because that was all I have at that time. I refused to withdraw money because I still have a lot of Ringgit with me.

Fortunately, there was one restaurant that takes VISA card. After eating, I waited ’til check-in counter opens. Ready to board until my flight got delayed for 3 hours!

It was, apparently, a normal occurrence for the airline (Nam Air). I was tired and bored, but there was nothing I can do but wait. I wanted to eat again but I had no Rupiah. Thankfully, the airline provided food.

I arrived at Yogyakarta at 12midnight. I grabbed my bag and booked an Uber immediately. It was annoying how Uber or Grab drivers are not allowed inside the airport because of the taxis. Such an inconvenience since I had to go outside the airport and meet my Uber driver.

From the airport to the city center, it took 40 minutes and cost around IDR 50,000. Fortunately, the hostel I booked in advance had 24-hour reception so I was able to check-in at 1:30am.

Crossing these borders were almost hassle-free and convenient. And I highly recommend using different means of transportation when crossing borders. It not only saves you money but also adds to your experience.