The 32-year-old three-time all-star, who was eligible for arbitration, becomes the highest paid player on the Jays.
Donaldson rebounded from an injury-slowed 2016 to hit .270 last season with 33 homers and 78 runs batted in over 113 games. The sure-handed infielder missed time from April 14 through May 25 with a calf injury, which also hampered him during spring training.
READ MORE: Taking a glimpse at the 2018 Blue Jays
Donaldson was coming off a $28.65 million, two-year deal. He is eligible for free agency after this season.
Donaldson has a .285 batting average with 111 home runs and 300 RBIs over three seasons in Toronto.
Earlier, the Jays announced they have avoided arbitration with outfielder Ezequiel Carrera and left-hander Aaron Loup, signing the pair to one-year contracts for 2018.
Carrera, who hit .282 with eight home runs and 20 RBIs last season, signed for $1.9 million. Loup, who went 2-3 with a 3.75 ERA in 70 games, signed for $1.8.
© 2018 The Canadian Press