Carvalho, 19, will join Liverpool for a reported fee of £5 million when his contract with Fulham ends in June. The winger is not available on a free due to his age, so the two clubs have reached a compromise to the prevent the deal from going to a transfer tribunal.
He scored 10 goals and recorded eight assists in the Championship for Fulham this season as they won the second-tier title and promotion to the Premier League.
Liverpool almost signed him in the January transfer window but were unable to complete the deal before the deadline. Carvalho had already agreed personal terms and passed a medical.
A former England youth international, Carvalho now represents Portugal at Under-21 level. He made his Fulham debut in September 2020 before becoming a first-team regular.
His contract with Liverpool will run until 2027 and he is set to join them ahead of their preseason tour of Asia.
Liverpool finished second in the Premier League, behind champions Manchester City. They have already won the League Cup and FA Cup this season, and will face Real Madrid in the Champions League final on Saturday.