The bus, carrying around 45 people, fell into the river along the Charsadda road in Budhi area, Xinhua reported.
The dead include women and children. Five other people were injured.
The toll may rise as many people were still missing because water flow was on the rise at the time of the incident.
The bus was pulled out of the river with a crane and a team of divers was called in to search for the drowned people.
A witness told local media that the accident occurred when the over-speeding bus tried to overtake another vehicle.
The passengers were returning home after a wedding in Samarbagh.
One passenger who luckily remained unhurt and swam to the riverbank said that at least 45 people were on board.