Motorsport.com understands the Dane, currently driving for Renault, will sign a two-year contract with Haas imminently.
He is to replace Mexican driver Esteban Gutierrez and will thus feature alongside Romain Grosjean in the line-up.
Magnussen, 24, returned to Formula 1 racing this year with Renault, having spent 2015 as McLaren's reserve driver following a difficult rookie season with the British team in 2014.
Renault delayed a decision on its line-up for 2017, but recently announced Nico Hulkenberg as its first driver, with his teammate yet to be confirmed.
Magnussen's move, and the expected switch of Esteban Ocon from Manor to Force India, means Briton Jolyon Palmer is now on pole position to retain his seat at Renault next year.
Both Magnussen and Palmer have endured a very difficult season in 2016, as Renault has struggled at the back of the field throughout most of the year.
Magnussen is currently 16th in the standings with seven points, while Palmer is 17th with one.
Additional reporting by Jonathan Noble