German signed his first professional contract with QPR in June 2009 and was given shirt number 33.[5] German made his debut against Plymouth Argyle in the club's final home game of the 2008–09 season, coming on as a second-half substitute.[6] He scored his first goal in his full debut in a 2–1 victory over against Doncaster Rovers on 21 February 2010, where he bagged the first goal of the game.[7] In the same game he had a header disallowed for offside and also a header looping just over the top of the bar.[8] Five days after scoring his first goal, German signed a new deal with QPR until June 2012.[9] On 20 March 2010, German scored his second goal in a 1–1 draw against Swansea City.[7]
Loan spells with Aldershot Town, Southend United and Yeovil Town
On 5 October 2009, German joined Aldershot Town on a month's loan and made four appearances.[10][7] In November 2010, German went on a month's loan to Southend United (along with teammate Jack Midson)[11] and scored a penalty on his debut against Macclesfield Town in the FA Cup.[12] German's loan spell was extended until 3 January, before he was recalled by Neil Warnock.[13][14] On 10 February 2011, German joined Yeovil Town on loan until the end of the season,[15] but returned to QPR after only a month.[16]
Stockport County
Following QPR's promotion to the Premier League, German was expected to depart and was not given a squad number.[17] On 2 September 2011, he joined Conference Premier side Stockport County after his QPR contract was cancelled.[18] German scored his first goal against Telford United in a 1–1 draw and scored twice against Fleetwood Town in a 2–4 loss.[19] He left the club in January 2012 when his contract ended.[20]
After making two appearances for Bromley, German signed an 18-month contract at League One side Brentford after a trial.[22] He made his debut as a half time substitute in a 2–0 away defeat to Leyton Orient.[19] German made his first appearance of the 2012–13 season on 9 October, coming on as a substitute in a 1–0 Football League Trophy win over Crawley Town.[23] He made his next appearance over a month later in the league against Preston North End, coming on as a substitute and scoring an 89th-minute equaliser, his only goal for the club.[23] He made three more substitute appearances in the 2012–13 season.[23]
Gillingham (loan)
On 26 February, German signed for League Two side Gillingham on a month's loan.[24] He went straight into the squad for Gillingham's league match against Oxford United that night, coming on as a 79th-minute substitute in a 1–0 defeat.[23] Two games later at home to Plymouth Argyle, he received his first start and scored his first Gillingham goal.[23] He made four more non-goalscoring appearances before returning to Brentford after the completion of his loan.[23]
Gillingham
On 27 June 2013, German signed for newly promoted Gillingham on a permanent basis after rejecting the offer of a new contract at Brentford.[25] He was made available for transfer by Martin Allen on 13 September.[26]
Northampton Town (loan)
On 1 January 2014, German signed for Northampton Town on a month-long loan. This was later extended until the end of the season.[27]
Aldershot Town (loan)
On 27 February 2015, German signed for Aldershot Town on a one-month loan.[28] After finding the net once in six appearances for The Shots,[29] the club decided against extending his loan spell and the striker returned to Gillingham.[30]
Kerala Blasters
German signed for Kerala Blasters in August 2015. During his spell at the club, he was widely praised for his performances, scoring six goals in nine games.[31]
Partick Thistle
German signed for Scottish Premiership club Partick Thistle on 1 February 2016 until the end of the 2015–16 season.[32] German made his debut for the club as a substitute in a 3–1 away defeat to Motherwell.[33] On 11 April 2016 German's contract was terminated by mutual consent for personal reasons.[34]
Gokulam Kerala
On 5 May 2018, German joined Indian club Gokulam Kerala.[35] He left the club citing personal reasons on 6 December.[36]
Selangor
On 1 January 2019, German joined the Malaysian club Selangor on a one-year deal for a free transfer.[37] However, he was let go by the club in February.[38] German later said he left the club due to racism.[39]