Francis is 67-73 with a 4.86 ERA in 205 starts and one relief appearance during eight major league seasons - seven with Colorado and one with Kansas City.
He was 6-7 with a 5.58 ERA in 24 big league starts and 113 innings this year after he spent the first two months of the season with Cincinnati's Triple-A farm team at Louisville.
A first-round draft pick in 2002, when he was selected ninth overall, Francis missed the 2009 season following shoulder surgery.
He agreed to the deal two weeks ago during the winter meetings, and it was finalized Wednesday.
Francis would earn bonuses of $100,000 for 140 innings, $125,000 for 150, $150,000 for 160, $175,000 for 170, $200,000 for 180, $225,000 for 190, $250,000 for 200 and $275,000 for 210.
(Copyright 2012 The Associated Press. All Rights Reserved)