The deal, which was agreed to earlier this week, includes up to $1.05 million in incentives.
The 27-year-old Franco hit .234 with 17 homers and 56 RBI in 123 games for the Phillies last season. He has spent his past six seasons in Philadelphia, and hit at least 20 homers in three straight seasons but was non-tendered this offseason.
The signing means the Royals can use Hunter Dozier, their primary third baseman last season, at a variety of positions. Dozier also plays first base and in the outfield, and the Royals wanted to be able to keep his bat in the lineup after the young power hitter batted .279 with 26 homers and 84 RBI in a breakthrough season.