Carvalho played 21 times for Liverpool in all competitions last season but his game time dried up in the second half of the season.
"He will now continue his development and gain more experience in Germany with Leipzig," Liverpool said in a statement.
The promise of regular game time is thought to been a key factor in attracting the midfielder to the German club and Carvalho now joins a Leipzig team which is looking to build on its strong form at the end of last season.
Leipzig recovered from a poor start to finish third in the Bundesliga and qualify for the Champions League.
The 20-year-old Carvalho was born in Portugal and grew up in London. He represented England up to under-18 level and has since played four times for Portugal's under-21 team.