Taking the Train from Surabaya to Yogyakarta, Indonesia

by Jackie
Published: Last Updated on
An Executive passenger car at the Surabaya Gubeng train station

What is it like taking the train in Indonesia? It was our first time taking a train in Indonesia, and we were pleased that it was very convenient and affordable! 

There are various pricing and seat arrangements based on your budget, so it’s a comfortable way to travel between Indonesian cities on Java Island. 

After completing our East Java travels from Banyuwangi to Malang, we headed to Surabaya to take the train to Yogyakarta in Central Java. While Malang has a few train stations, the train schedule didn’t work out for us. Therefore, we had our driver take us to Surabaya Gubeng train station. (There are other train stations in Surabaya too). 

From Surabaya to Yogyakarta, the distance is 329 kilometers (204 miles) and takes about 4.5-5 hours one-way. 

Continue reading this Surabaya-Yogyakarta Indonesia train travel guide and how to buy the tickets. You can use these tips when booking any train tickets in Java, Indonesia.

How to Buy Your Surabaya to Yogyakarta Indonesia Train Tickets (Or Any Indonesia Destination)

For any train ticket purchase, go through tiket.com. This site was recommended by our East Java tour agency, Blue Flames Tours, so it’s a reputable site. (You can also purchase airfare on Indonesian carriers, such as Lion Air, on this site.)

The language can be changed to English. Plus, it’s easy to use and filter through the train schedules and pricing. 

Completing a profile and login isn’t required unless you want to accumulate points and save your purchases. 

Here are the instructions for reserving and buying the tickets. 

1. Figure out your starting and ending location. 

Check which train station you’re departing from as many cities have multiple stations. 

In Surabaya, there are 4 train stations – Pasarturi, Gubeng, Wonkoromo, and Kota. Most trains depart from Gubeng

Entrance of the Surabaya Gubeng Train Station with curly window bars on the wooden doors

Here is the entrance of the Surabaya Gubeng station.

2. Determine your seating arrangements and pricing.

There are three classes of seating available. The pricing varies depending on the location of the train station to Yogyakarta. 

Tickets are cheaper if booked in advance. 

TIP: You’ll notice various pricing for the same class of seats. Buy the lowest price tickets in your seating class as you can still pick your specific seat. 

The trains have air-conditioning, a plug for charging electronics, and an overhead rack to place luggage and belongings. 

Here are the three classes: 

  • Economy (Ekonomi) – These are padded bench seats that do not recline. The benches face each other and have seating arrangements of 5 spots per row (2 on one side and 3 on the other side). Tickets start at 135,000-200,000 IDR ($9.10-$13.50 USD)
  • Business (Bisnis)These are padded bench seats that do not recline. Yet, the seating arrangements are 4 seats per row. Tickets start at 180,000-295,000 IDR ($12.10-$19.85)
  • Executive (Eksekutif) These are padded seats that recline about 45 degrees (not lay-flat). It’s similar to Premium Economy seating on an airplane with a footrest and plenty of legroom. There is also a TV that shows random movies and game shows. The seating arrangements are 2 seats per side (4 total per row). Tickets start at 230,000-500.000 IDR ($15.50-$33.60)

Our Recommendation: Executive Seats

If you have the budget, we recommend that you go for the Executive seating arrangements. 

Our train departed Surabaya around 7:45pm with arrival in Yogyakarta after midnight. 

Since the ride was over 4 hours, we wanted to be as comfy as possible. The extra legroom and space made the ride more relaxing. 

Jackie Szeto, Life Of Doing, sits on an Executive class reclining seat on the train from Surabaya to Yogyakarta, Indonesia A person using the footrest and having ample leg space on the Surabaya to Yogyakarta train

We received a fleece blanket to use during the ride and a complimentary mask and a moist wipe. Wearing a mask is a requirement for the ride. 

Unfortunately, there wasn’t any free wifi onboard. We also couldn’t see much for the views since it was already evening. 

We opted to recline our seats and sleep. After a few days of nonstop exploring volcanoes and waterfalls, we needed to catch up with sleep. Once in a while, we woke up to see what was on the TV. 

The ride went smoothly and we wouldn’t hesitate to sit in the Executive seats again. 

We paid a total of 537,500 IDR ($36.20) for 2 tickets [265,000 IDR x 2 + 7,500 IDR convenience fee]. 

3. Once you’ve chosen your seating arrangements and then proceed with the check-out for payment. 

Tiket.com accepts credit card payments, yet there are issues accepting payments from international credit cards. (We used our Chase Sapphire Preferred card and it was rejected from Tiket.com side.)

If this happens to you, contact Customer Service via email stating that the credit card isn’t accepted and needs to be “whitelisted” in their system. In the email, also include your order number and a photo of your identification (ie: passport), and the last 4 digits of your credit card. The ID credit card and credit card need to be together in 1 photo. 

You can also contact Customer Service on WhatsApp but they’ll tell you to send an email with the information above. 

Once whitelisted, you need to go through the booking process again and the payment will work. 

4. Save a copy of your e-ticket in your email.

You’ll need to have the order number or confirmation number to get a printed ticket at the train station.

Some things to note: 

  • The train schedule is only available 30 days in advance, so you can reserve your ticket anytime during your 30-day window. 
  • Besides email, Tiket.com will send a confirmation of the order to your WhatsApp phone number (if provided). 
  • Each passenger can bring up to 20 kg (44 pounds) of luggage onboard. 

On the Day of the Train Departure

1. Bring a copy of your e-ticket and your passport.

You don’t need a physical copy of your e-ticket. An e-copy from your email is just fine!

2. Arrive at the train station at least 60 minutes ahead of departure. 

There are seats in the waiting room with fans and air conditioning. But note that there are tons of mosquitoes flying around inside. 

Rows of empty chairs in the waiting room of Surabaya Gubeng train station

3. Go to the kiosk to print your physical ticket.

You’ll need to input the confirmation number and name from the e-ticket.

Two kiosks with computers to redeem the e-ticket train to physical tickets at Surabaya Gubeng train station

4. Buy snacks or food ahead of time.

Food is allowed on the train. 

There is a passenger car dedicated to serving food. Attendees pass through each passenger car at least twice during the ride and sell food, snacks, coffee, and tea. 

The train station also has a convenience store. 

You can also consider buying a meal somewhere else before heading to the train station. 

If you’re at the Surabaya Gubeng Station, grab a meal or do takeaway from Depot Sederhana. 

It’s a warung selling delicious Indonesian food for cheap! Everything costs at least 15,000 IDR ($1) and the portions are large. Plus, it’s located only 150 meters away from the train station. 

We ordered nasi rawon, an East Java beef soup specialty with rice, and nasi pecel lele, a snakefish dish with rice. As a heads up, the food is spicy so you may want to request less spice. 

The food and drink menu at Depot Sederhana in Surabaya, Indonesia Two Indonesian dishes at Depot Sederhana in Surabaya - two fish with rice and a beef soup with rice

5. Once you’re close to your boarding time, show your ticket and identification to the ticket agent to enter the boarding area.

You may need to ask which platform the train is located on.

6. Use the bathroom at the train station.

We always say to use the toilet before heading on the train. In our Executive train, we noticed that the bathrooms were clean. But we can’t say what the conditions look like for the other trains. 

7. When the train arrives, find the passenger car. 

They are not in numerical order! On your ticket, you’ll notice the train car number and seat number (Example: EXC 1-8C means the Executive Passenger Car #1 and Seat 8C). If you need help, find a worker and he/she can direct you to the direction of the car. 

An Executive passenger car at the Surabaya Gubeng train station

Things to Bring for the Train Ride

  • Personal belongings
  • Identification – This is necessary to match the name on the physical ticket. 
  • Earplugs and eye cover (optional) – If you plan to get some sleep, then you’ll need to have these. The lights are always on in the train. 
  • Noise-canceling headphones (optional) – It’s always helpful to have noise-canceling headphones to block outside noise.
  • Charging cables – You can charge your devices on the train. 
  • Light snacks and water – You may get hungry during your car ride. Or, you can purchase food at the dining passenger car or when attendees pass by with the food cart. 
  • Mask – Due to the current travel situation, it’s required to wear a mask. One of the workers will walk around to remind passengers who do not have a mask.

Arrival at Yogyakarta Train Station

You’ve made it to Yogyakarta! Check your surroundings before departing the train. 

Once you exit the train, follow the signs for the exit. There is a parking lot area for car pick-up. 

You’re allowed to call a Grab or GoJek vehicle. The cost is 5,000 IDR ($.34) per vehicle entering the parking lot, and this gets paid when exiting. 

Now, you can head to your accommodations and enjoy your time in Yogyakarta.

An empty train platform and railway at Yogyarkarta train station

Final Thoughts

It was our first time taking the train through Indonesia and we had a positive experience. The process was easy to do. Plus, it was an affordable way to travel. We would use the train again on a return trip. 

Next time, we’ll travel in the daytime so we can see the landscapes pass by. 

If you have any questions about the process for buying tickets or our experience, feel free to as a question in the comments below. 

You may also like


John Liston November 10, 2023 - 5:21 pm

Tiket & other online booking sites almost double the actual price, we paid AU $30 per person (10/11/23) for a first class ticket from Surabaya to Yogyakarta by actually going to the train station and purchasing the tickets there. Why dont “travel experts” ever offer this advice.

Jackie November 11, 2023 - 2:41 pm

Hi John. Thanks for sharing your experience with buying the train ticket at the station. It’s definitely an option. Glad it worked out for you. Unfortunately, our schedule didn’t allow us the flexibility to get to the train station early to buy tickets. So, we bought them ahead of time on tiket.com in case the train runs out of seats. Hope you enjoyed your time in Indonesia!


Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. Please accept or opt-out if you wish. Accept Read More

Privacy & Cookies Policy