At Bakauheni port, it's easier to find the ticket office. You pay Rp.13.000,-- for a ticket entrance to the ferry. On the ferry you have two options: take an economy class or an AC room. To take the AC room, you are surcharged Rp.7.000 up to Rp.10.000,-- depending on the ferry. Don't buy anything on the ferry because the price is too high (probably 3 up to 5 times higher than the normal price). You'll be better off buying food or drink before you get on the ferry. There is a mini market at the port, where you can buy your stuffs at reasonable prices. The ferry takes about 2.5 to 3 hours to reach Merak Seaport.
As soon as you get off the ferry, you take a long walk to where buses await passengers. There motorciclists offering their service to take you to the bus more quickly. I were you, I'd rather walk. At the passenger-collecting points (even as soon as you reach the last gate, you are welcome by unkonwn people asking you where you are heading for), some people persuade you to choose the bus of their own choice. At this point, it's up to you but take your time and have a look at the bus you want. The bus usually have its destination written on the front wind screen. The destination to Jakarta is either "Rambutan" or "Kalideres". More buses here are AC. The bus will leave as soon as all seats are taken. Make sure you get here earlier to choose the best seat for you. Your trip to Jakarta costs you Rp.20.000 up to Rp.25.000,-- and takes around 2 to 2.5 hours to reach Jakarta depending on the traffic.
How much time it takes also depends on the ferry or the road condition. The ferry sometimes have to stop some miles away from the port awaiting other ferries finish dropping off and loading passengers. This takes more than an hour for one boat. If more than one ferries drop off and load passengers, your traveling time can be much more than you expect. The road condition also causes you to take longer time to reach your destination. Often time, there is a traffic jam due to a broken vehicle blocking the way or the road has eroded due to rain.