We intend to travel from Singapore to Indonesia by ferry. If you intend to (keep open the option to) extend your stay you need to purchase a Visa on Arrival. Purchasing a Visa on Arrival is I think done in local currency in cash. Should we withdraw money in Singapore and exchange it, or is there a more efficient option?
I have been to Batam many times. I haven't seen any ATM before immigration (last visit before covid times). Its better to exchange required amount for immigration from Singapore itself. There are money exchange vendors in harborfront terminal itself.
Even if there is an ATM, you should not count on it, as it can be out of order, or your card may not work.