According to The Athletic's Ken Rosenthal, the deal will pay Wainwright $5 million with another $5 million available in incentives.
Wainwright was a free agent and could have signed with any team, but the 38-year-old decided to remain with the only MLB team he has ever played for.
The three-time All-Star is coming off a solid 2019 season that saw him go 14-10 with a 4.19 ERA, 1.43 WHIP and 153 strikeouts over 171.2 innings in 31 starts.
Wainwright also made three playoff appearances (two starts) for the National League Central champions, going 0-1 with a 1.62 ERA and 19 strikeouts over 16.2 innings.
During his 14-year MLB career (missed all of 2011 due to injury), Wainwright has gone 162-95 with a 3.39 ERA, 1.23 WHIP and 7.6 strikeouts per nine innings.
While Wainwright's best days are behind him, last season marked his best performance in a full campaign since going 20-9 with a 2.38 ERA in 2014. Wainwright also managed to bounce back from a 2018 season that saw him get limited to eight starts due to hamstring and elbow injuries.
In addition to his three All-Star appearances, Wainwright is a two-time Gold Glove winner, one-time Silver Slugger winner and two-time World Series champion.
Wainwright has 27 career playoff appearances, and he has pitched in the World Series twice, including 2006 when the Cards beat the Detroit Tigers.
By re-signing Wainwright, the Cardinals are largely keeping together a starting rotation that had the fifth-best ERA in Major League Baseball last season at 3.78.
Wainwright, Jack Flaherty, Miles Mikolas, and Dakota Hudson are all in line to be back for St. Louis in 2020 after they each started at least 30 games last season.
With a strong rotation and a lineup led by Paul Goldschmidt, the Cardinals may be the team to beat in the NL Central once again in 2020.