The contract includes an opt-out after the second year, which would allow Upton to go back on the market as a free agent at age 30, a source confirmed to Crasnick.
A three-time All-Star, the 28-year-old spent the past season with the San Diego Padres and batted .251 with 26 homers and 81 RBIs.
Upton, who is expected to play left field, will join a Tigers team looking to win now. After a disappointing 74-88 campaign, owner Mike Ilitch opened up his wallet this offseason, having also signed pitcher Jordan Zimmermann to a five-year, $110 million contract.
Last season was a bit of a struggle for Upton as well. The right-handed slugger batted just .191 in 2015 and hit only three of his 26 home runs against left-handed pitching.
He might, however, enjoy his new home ballpark. Upton, who has spent his entire career in the National League, has hit .324 in nine games at Comerica Park. That is his third-best batting average in any stadium where he has played a minimum of five games.