Butler's deal also includes a $12.5 million, fifth-year club option for 2015 as well as an immediate $2 million signing bonus, The Kansas City Star reported Sunday.
"Billy is a good player, a homegrown player, and it's important to sign those types of guys," Royals General Manager Dayton Moore said. "He loves Kansas City and wants to see this thing through."
Butler, who batted .318 with 15 homers and 78 RBI last season, will receive $3 million this season and $8 million per year from 2012-14.
"I love the city, I love the people here and you're not going to find a better stadium," Butler told the Star. "There's just so many things that are great here in Kansas City, and we've got the players to make it happen."
In his four-year career with the Royals, Butler has compiled a .299 average with 55 home runs and 278 RBI.
Exploding whale video goes viral on Internet
Couple mistakenly served bag of cash at McDonald's drive-thru