Sources told ESPN's Buster Olney that he will receive $11 million over the course of the contract. The agreement was first reported by Fox Sports.
Joyce played in 140 games for the Pirates last season, batting .242 with 13 homers and 42 RBIs in 293 plate appearances.
The 32-year-old played for the Los Angeles Angels in 2015 after he was traded there by the Tampa Bay Rays. His best seasons came with Tampa where he played for six years. He earned his only All-Star honor in 2011 when he had career highs in batting average (.277), homers (19), RBIs (75) and steals (13).
At 69-83, the A's responded from losing 10 of 11 to win their final two games at Seattle and finish with one more victory than a year ago. But they finished in fifth place and at the bottom of the AL West for the second straight season -- another year of injuries and big-name departures.
The A's also announced that they designated minor league utility manRangel Ravelo for assignment.
Information from The Associated Press was used in this report.