“Three formats are just unsustainable for me now,” said Stokes, who will continue to play Twenty20 Internationals.
“Not only do I feel that my body is letting me down because of the schedule and what is expected of us, but I also feel that I am taking the place of another player who can give (captain) Jos (Buttler) and the rest of the team their all.”
Stokes, who took over as the Test captain in April, was player-of-the-match when England beat New Zealand in the final to win their maiden 50-overs World Cup at Lord’s in 2019.
One of the most exciting players of his era, Stokes has battled a spate of injuries in recent times and took a break from the game last year to focus on his mental well-being.
“I will give everything I have to Test cricket, and now, with this decision, I feel I can also give my total commitment to the T20 format,” he said.
Stokes made his ODI debut against Ireland in Dublin in 2011.
He has played 104 one-day internationals scoring 2919 runs, including three hundreds, at an average of 39.44 with a 95-plus strike rate.
With the ball, he has claimed 74 wickets and is one of the sharpest fielders in the side.
Stokes is the second player from England’s triumphant 2019 World Cup winning team, after former captain Eoin Morgan, to quit one-dayers.
Rob Key, managing director of England men’s cricket, hailed Stokes’ “incredible international career” in the 50-overs format.
“I know this must have been a tough decision, but I completely understand why he has reached this conclusion,” Key said.
“It is a typically selfless decision that will benefit England long-term.”
ECB interim chief executive Clare Connor called Stokes a “superstar in every format”.
“Ben is not only one of the world’s best players, but an inspirational figure too so our ODI team will miss him,” she said.
“But having taken on the test captaincy and with today’s busy calendar of cricket, we completely understand and respect his decision.”