McHattie progressed through the youth ranks at
Dunfermline Athletic. He joined
Hearts in 2010 aged 17 at under 19 level.
Hearts He made his first team debut on 13 August 2011 as a substitute against
Aberdeen in Hearts 3–0 win at
Tynecastle. After one appearance for the first team McHattie was sent on loan to
Alloa Athletic to gain first team experience. On 1 September 2015, McHattie left the club, being released from his contract by mutual consent.
Alloa Athletic (loan) On 7 December 2011 McHattie signed for
Scottish Third Division side
Alloa Athletic on loan until January 2012. Making his league debut on 10 December against
Queen's Park. In all he made five appearances for Alloa before returning to Hearts with his last game coming on 21 January against
Stranraer. Alloa requested his deal be extended however Hearts wanted him to return.
Kilmarnock After his release by Hearts, McHattie signed a three-year contract with
Kilmarnock on 1 September 2015. McHattie scored a match-winning goal on his debut for Kilmarnock, against
Dundee United on 13 September.
Raith Rovers On 17 June 2016, it was announced that McHattie had signed a one-year deal with
Raith Rovers. At the end of his contract, McHattie was released by the club after struggling with an injury, however, shortly after the start of the 2017–18 season, he signed a new one-year deal which would keep him at
Stark's Park until May 2018. He was released by the club following the end of his contract.
Derry City On 1 August 2018, McHattie was announced as having signed for Irish side
Derry City F.C. Inverness CT McHattie joined
Inverness Caledonian Thistle in January 2019 and made his debut at the end of a 2–1 home loss to
Queen of the South. On 15 June 2021, Inverness announced that McHattie would leave the club.
Brechin City On 9 September 2021, McHattie signed for
Brechin City of the
Highland League, in what was described as a 'major coup' for the club. ==International career==