Rohit also replaced the out-of-form Ajinkya Rahane as vice-captain of India's Test team.
"The All-India Senior Selection Committee also decided to name Mr Rohit Sharma as the Captain of the ODI & T20I teams going forward," the BCCI stated in a tweet on Wednesday.
Explaining the move to replace Kohli with Rohit as ODI captain, BCCI president Sourav Ganguly said on Thursday that the selectors did not want two different captains in white-ball cricket.
"It's a call that the BCCI and the selectors took together. Actually, the BCCI had requested Virat to not step down as the T20I skipper but obviously, he did not agree. And the selectors then did not feel it right to have two different captains for two white-ball formats," Ganguly told ANI.
"So it was decided that Virat will continue as Test captain and Rohit will take over as the white-ball captain. I as President personally spoke to Virat Kohli and the chairman of selectors has also spoken to him.
"We have full faith in Rohit Sharma's leadership abilities, and Virat will continue as the Test captain. We as BCCI are confident that Indian cricket is in good hands. We thank Virat Kohli for his contributions as captain in the white-ball format," the BCCI president added.