Getting to and from Batam from Singapore
There are many ferries from Harbourfront, Singapore to various ferry terminals in Batam. If your main purpose in Batam is to shop, it is highly recommended to take a ferry terminal to Harbour Bay Ferry Terminal at Batam. The main town of Nagoya, where all the shopping is, is only 5 mins away by taxi (IDR$30,000). If you intend to visit beaches, perhaps Nongsa would be more suitable. However, my personal recommendation is not to go to Batam for beaches as they are not pretty and can be quite dirty. It is advisable to go to Bintan for beaches instead.
There are multiple trips everyday running between Harbour Bay, Batam and Harbourfront, Singapore. Prima Ferries has one ferry departing from Harbourfront, Singapore approximately every hour. Batam Fast has 4 trips departing from Harbourfront, Singapore per day. Even if you buy a Prima Ferry ticket, sometimes, you still end up riding a ferry operated by Batam Fast. Regardless of the ferry operator, a return trip ticket costs SGD$48 nett, inclusive of all taxes. You can simply show up roughly an hour before departure and buy your ticket. Ensure that you have the necessary visa to enter Indonesia.
Harbour Bay Ferry Terminal is the nearest ferry terminal to the main Batam town of Nagoya. From Harbour Bay Terminal, it is only a 5 min taxi ride (IDR20,000) to Nagoya Hill Shopping Mall, the largest shopping mall in Batam.