The bus, carrying about 60 people from a church in northern Jakarta, was returning from a trip to the hilly resort town of Puncak when its brakes apparently malfunctioned, said local traffic police chief Capt Muhammad Chaniago.
He said the bus hit a small car and crashed through the wall of a roadside building before both vehicles fell about 8 meters into the river in Cisarua.
"Thank God they did not become victims. They are safe and now with their parents," Aksono said.
Local television footage showed images of both vehicles upside down in the water. It was not immediately clear whether the driver of the car survived.
Most of the dead were killed instantly, and those with injuries were rushed to two nearby hospitals, Chaniago said. Road accidents are common in Indonesia due to poor safety standards and infrastructure.