Gurpreet took up the game of football at the age of eight and joined the St Stephen's Academy in 2000. After good performances at the St Stephen's Academy, Gurpreet was selected for his state youth team, the Punjab U16s. He made his youth state level debut in 2006 in Haldwani. He stayed at St. Stephen's Academy until 2009 when he joined I-League side East Bengal as a youth player and spend the rest of 2009 playing for the Kolkata-based teams' youth team.
East Bengal
In 2010, Gurpreet officially signed a professional contract with East Bengal and made five appearances for East Bengal before the end of the 2009–10 season. For the 2010–11 season, Gurpreet was loaned out to Pailan Arrows, seeking regular game time but ended the season with no caps for Indian Arrows, as they were called then. He started the 2011–12 season as the second choice goalkeeper for East Bengal during the 2011 Federation Cup, but after the Federation Cup, Gurpreet took over as the first choice 'keeper for East Bengal's I-League campaign. He started in first game of the 2011–12 I-League campaign in their 0–1 loss to Churchill Brothers. He made his debut in continental competitions in Asia on 6 March 2012 in the AFC Cup against Al-Oruba as East Bengal lost the match 0–1.
Sandhu signed for Norwegian club Stabæk on 15 August 2014. On 18 January 2015, he made his senior debut for the club in a friendly match against second-tier side Follo in a 4–1 win. After featuring in a number of cup games, including Stabæk's entire 2016 cup run, he made his league debut in late May 2016 in an away match against IK Start, in the process the inaugural Indian to play in a European top division league. On 30 June 2016, Sandhu became the inaugural Indian to feature in a UEFA Europa League match, starting the first leg of Stabæk's Europa League First qualifying round tie against Connah's Quay Nomads at Belle Vue in Rhyl, Wales. Sandhu played 30 minutes before being replaced by Sayouba Mandé. Sandhu left Stabæk in August 2017 to return to India.
Bengaluru FC
In August 2017, Gurpreet joined Bengaluru from Stabæk for undisclosed transfer amount. He made his debut for Bengaluru against April 25 Sports Club in the AFC cup knockout stage and his league debut was against Mumbai City, keeping a clean sheet. On 13 March 2018, Sandhu extended his contract until May 2023.
International career
Gurpreet made his debut for the India U19s against the Iraq U19s in the 2010 AFC U-19 Championship qualification on 5 November 2009. He was then surprisingly called up to the senior Indian squad of 23 for the 2011 AFC Asian Cup. He made his debut against Turkmenistan in a 1–1 draw. He was called up to the 2018 FIFA World Cup qualifier squad against Nepal but was unused in both legs. Gurpreet made his second appearance for the senior team against Iran in a 2018 World Cup qualifier at Bangalore, starting in a 0–3 defeat. He made his next appearance against Turkmenistan in a 2–1 loss on 8 October. He also kept a clean-sheet against Guam on 12 November 2015, a game that ended 1–0. He kept his second clean sheet vs Sri Lanka in a 2–0 win in the SAFF Suzuki Cup 2015. In 2016, he captained the Indian national team against Puerto Rico and played an essential defensive role against Kyrgyzstan in a 2019 AFC Asian Cup qualification game in 2017. 2022 FIFA World Cup Qualifiers AFC In the first game of 2022 FIFA world cup qualifiers, he made his 35th appearance for the team against Oman on 5 September 2019 where he conceded 2 goals as India lost the match 1–2. But in the 2nd match of 2022 World Cup Qualifiers Gurpreet was captained as Sunil Chettri did not play against 2019 Asian Cup champions Qatar. Gurpreet saved about 20 shots on target from Qatar and became a hero for India. Due to his heroic saves, India successfully draw against Qatar 0-0.