The St. Louis Post-Dispatch speculated that the deal might be worth as much as around $80 million over five years.
The Cardinals called a press conference for Friday morning but did not announce the reason.
The 30-year-old Fowler posted a career-high .393 on-base percentage while batting leadoff for the Cubs last season. He hit .276/.393/.447 in 2016 with 13 home runs, 48 RBIs and 13 stolen bases while making his first All-Star team.
Fowler declined the Cubs' qualifying offer, meaning the Cardinals must forfeit the No. 19 pick in the upcoming draft. The Cubs will receive a compensatory pick.
After breaking into the majors with the Rockies in 2007, Fowler remained in Colorado through 2013. He was traded to the Houston Astros in December 2013 for outfielder Brandon Barnes and right-handed pitcher Jordan Lyles.
Following one season in Houston, Fowler went to the Cubs in exchange for third baseman Luis Valbuena and right-hander Dan Straily.
In nine seasons encompassing 1,064 games, Fowler has a career .268/.366/.422 batting line with 78 homers, 339 RBIs and 127 stolen bases.
Fowler helped the Cubs end their 108-year title drought, hitting one homer in the National League Championship Series against the Los Angeles Dodgers and two in the World Series against the Indians, including one to lead off Game 7 against Cleveland ace Corey Kluber.
The Cardinals figure to install Fowler as their leadoff hitter. Last season, Matt Carpenter topped the St. Louis lineup the majority of the time.