The fully-loaded bus carrying 47 people turned over while on a spring outing organized by a school in Hainan province.
The accident took place about 11am in Chengmai County, where an outing was organized for 586 students in 14 buses, the county government said.
The driver, surnamed Zhao, was blamed for driving on an under-construction road that was also slippery due to rain, state-run Xinhua news agency reported.
Zhao has been detained, the report said. The head of the Xincai School, a private institution, has also been detained as the trip was not notified to the local government, it said.
Of the 32 injured, the condition of the four was serious. They are being treated at a local hospital, state-run Xinhua news agency reported.
Sixteen of them have been discharged. The county government has already paid 100,000 yuan (USD 16,258) to the families of each of those killed.
Schools in China traditionally organize outings for students in spring and fall.