Francis will earn a base salary of $1.5 million if he makes the Reds' big league roster, the source said. The deal includes performance bonuses based on starts that could increase his total payout to $3.25 million.
Francis also has the ability to opt out of the contract on March 28, before the end of spring training.
Francis, a 31-year-old left-hander, was Colorado's first-round pick and the ninth overall selection in the 2002 amateur draft. He posted a 44-32 record with the Rockies from 2005 through 2007 before shoulder problems derailed his career.
He signed a one-year deal with Kansas City and went 6-16 with a 4.82 ERA in 31 starts last season.
Cincinnati's projected starting rotation includes five right-handers in Mat Latos, Johnny Cueto, Bronson Arroyo, Mike Leake and Homer Bailey, so Francis will have an opportunity to win a job in spring training in Arizona.
Although the Reds have discussed the possibility of using Aroldis Chapman as a starter, the addition of Francis could give manager Dusty Baker the leeway to keep Chapman in the bullpen.
Jerry Crasnick is a senior baseball writer for ESPN.com.