Haller began his career in France with Auxerre, and moved on loan to Eredivisie side Utrecht in 2015, before signing on a permanent basis.
He became the first player to score across seven consecutive UEFA Champions League matches during the 2021–22 season, and then transferred to Borussia Dortmund for an initial €31 million.
[14] On 17 July 2019, Haller signed with West Ham United on a five-year deal for a club record fee, that could rise to £45 million.
[15][16] He made his debut on 10 August, playing the full 90 minutes of a 5–0 Premier League loss against reigning champions Manchester City.
[18] Haller struggled at West Ham, attributing it to David Moyes replacing Manuel Pellegrini as manager and then preferring Michail Antonio up front, as well as the ill health of his wife and newborn son.
[20] On 16 December, Haller scored an overhead kick in a 1–1 draw against Crystal Palace that was voted as the Premier League Goal of the Month.
[22][23] He made his debut two days later as a second-half substitute against De Topper rivals PSV, assisting Antony for the equaliser in a 2–2 draw.
[31] On 23 February 2022, he made amends for an earlier own goal, and helped Ajax to a 2–2 away draw against Benfica in the last, becoming the first player to score in seven consecutive matches in the competition;[32] his side lost 3–2 aggregate.
[38][39] After successfully completing his treatments, in January 2023 Haller was officially allowed to return to full-time training, as he joined the rest of Dortmund's team at their winter camp in Marbella.
[42] On 22 January, Haller came on as a second-half substitute in a 4–3 home win against Augsburg, finally making his competitive debut for Dortmund after a 6-month battle with cancer.
[44] Haller missed a crucial penalty, when his team was trailing 1–0, during the final game of the 2022–23 Bundesliga season which ended in a 2–2 draw with Mainz.
[45] In 2023–24, he sustained an ankle injury which sidelined him for most of the season, in which he only scored three goals including two against TSV Schott Mainz in the DFB-Pokal and one against Atlético Madrid in the Champions League quarter-final.
[52] On 14 November 2013, Haller made his under-21 debut, coming on for Anthony Martial in the 57th minute against Armenia in a European qualifier in Toulouse and scoring to conclude a 6–0 win.