Beltran, who will turn 37 early next season, will be paid $45 million over the term of the contract, which runs through 2016, the New York Daily News reported. He just concluded a two-year, $26 million contract with the St. Louis Cardinals and previously had a seven-season, $119 million deal with the New York Mets.
Beltran hit .296 with 24 home runs and 84 RBI for St. Louis last season. Over his 16-year career, Beltran has hit .283 with 358 home runs and 1,327 RBI.
He broke into the majors with Kansas City, where he won the AL Rookie of the Year Award in 1999 and was an all-star in 2004. He also played for Houston, the Mets and San Francisco Giants before signing with St. Louis in 2012.
Beltran was selected to the All-Star Game five times while with the Mets and both seasons he was with St. Louis.