McCaffery, 53, will be guaranteed a minimum average of $1.66 million a year, starting with a base salary of $1.3 million for 2012-13.
The Hawkeyes went 18-17 and made the NIT this past season, marking Iowa's first post-season appearance since 2006.
Overall McCaffery has a 29-37 record in two seasons at Iowa.
"Two years into his tenure, I'm thrilled with where Fran is taking our program," Iowa Athletics Director Gary Barta said. "He has done an outstanding job, in all phases. We are pleased that the victory total has increased in the last two seasons. But, as important, Fran has demonstrated a total commitment in all phases of the program, including recruiting, community involvement and commitment to academic performance."
Before landing in Iowa, McCaffery spent five seasons at Siena, going 112-51.
Chipotle plans first price increase in 3 years
Justin Bieber crashes Drake Bell's album release party