The Portuguese teenager, who is understood to have signed a five-year contract, will officially join the Anfield club on July 1.
Carvalho, out of contract at the end of June, was set for a move four months ago on deadline day when a £5 million ($6.3 million) deal was agreed with the Championship winners but the transfer window closed without a medical and formal paperwork being concluded.
Liverpool have reportedly agreed to pay extra in add-ons and attach a 20 percent sell-on clause.
Carvalho played a key role in Fulham’s promotion back to the Premier League, scoring 10 goals and providing eight assists in 36 games as Marco Silva’s side won the Championship title.
He made his debut for Portugal U21s in March, having previously represented England at youth level.
Carvalho’s arrival will add another fresh face to Liverpool’s dynamic forward line, already boosted by the arrival of Luis Diaz in January.
Long-serving Belgium forward Divock Origi has not played enough matches to trigger a contract extension and was given a send-off at Anfield after Sunday’s 3-1 victory over Wolves.
Origi missed the match with a muscle injury and Liverpool manager Jurgen Klopp confirmed he had played his last game for the club as he would not be fit for Saturday’s Champions League final against Real Madrid.