"He's done," Harvin's agent, Greg Barnett, told ESPN on Tuesday.
Harvin, 28, originally announced his retirement last spring following an injury-plagued 2015 season. He came back in November to make two catches for 6 yards in two appearances (one start) before migraine headaches led to the Bills placing him on the non-football illness list.
In 2015, Harvin started five games for Buffalo and made 19 catches for 218 yards and a touchdown. However, his season was hampered by hip and knee injuries.
Early in his career, Harvin was a reliable receiver and a dangerous return man for the Vikings. Selected by Minnesota in the first round out of the University of Florida in 2009, Harvin was the AP Offensive Rookie of the Year and a Sporting News first-team All-NFL performer that year.
He amassed five kick-return touchdowns for the Vikings and averaged 825.5 receiving yards over his first four NFL seasons.
In March 2013, Harvin was traded to the Seahawks. He appeared in just one regular-season game that year, but he helped Seattle win the Super Bowl by returning a kickoff 87 yards for a touchdown against the Denver Broncos.
Harvin was dealt by Seattle to the New York Jets in October 2014 before he joined the Bills in 2015.