Stoyanov started his career in his home town Sliven in local team OFC Sliven 2000. In 2005, he signed a contract with German side VfB Stuttgart, but only played one league game for the club before returning to Sliven in May 2006. In 2007–08 season with his goals Stoyanov helped the team gain promotion to the first division in Bulgaria. He scored 16 goals in 15 matches. In September 2007, Stoyanov was banned for one year from football after an incident with a linesman in a match against Kaliakra Kavarna following his dismissal from the field by the main official. He subsequently reestablished himself as a key player for Sliven.
After an impressive 2008–09 season with the newly promoted Sliven, on 24 June 2009 Stoyanov signed a 3-year contract with CSKA Sofia. On 30 July 2009, Stoyanov marked his official debut for the armymen by scoring the goal for the 1:0 home win against Northern Irish side Derry City F.C. in the third qualifying round of the UEFA Europa League. On 9 August 2009, he scored a brace in the 5:0 away win against Lokomotiv Plovdiv in a league game. On 30 August 2009, he scored another double, this time against Lokomotiv Mezdra, in a league game. On 20 September 2009, Stoyanov scored the opening goal in the 2:0 home win against Levski Sofia in The Eternal Derby.
Alania
On 25 February 2010 Russian side Alania Vladikavkaz signed the Bulgarian international from CSKA Sofia, the midfielder agreed to a three-year deal for $1.2 million. Stoyanov scored his first goal for Alania in their 1–0 home win against Rostov in the Russian Premier League on 25 April 2010.
On 29 August 2011, Stoyanov signed a contract with newly promoted A PFG club Ludogorets Razgrad. His debut for the team came on 11 September 2011, in the 6:0 home win against Slavia Sofia. On 30 September 2011, he scored a last-minute goal against Botev Vratsa to temporarily propel the team to the top of the A PFG table. On 28 November 2011, Stoyanov scored another last-minute goal, this time against former club CSKA Sofia, to help Ludogorets secure a 2:2 away draw and enable the team from Razgrad to finish the first half of the A PFG season in first place in the standings. On 2 April2012, he netted the only goal for his team in the 1:0 away win over Levski Sofia, helping Ludogorets put an end to a three-game losing streak. Stoyanov eventually finished the 2011-12 A PFG season as joint top scorer with Junior Moraes, while Ludogorets won its first A PFG title. On 24 July 2013, he opened the scoring in the 3:0 home win over Slovak side Slovan Bratislava in a 2nd qualifying round UEFA Champions League match. On 21 August 2013, Stoyanov scored a goal early in the second half to give Ludogorets a 2:1 lead over Swiss club FC Basel in a first leg match of the playoff round, but the team from Razgrad eventually lost by a score of 2:4. Stoyanov saw less first team action during the 2013/2014 A PFG season due to the strong performance of the other forwards and rejoined CSKA Sofia in February 2014.
On 15 June Ivan Stoyanov joined Botev Plovdiv. During the preseason friendly games Stoyanov scored twice against FC Eurocollege and once against FC Oborishte. Stoyanov scored twice in the final preseason friendly against FC Vereya. On 30 July 2016 Ivan Stoyanov made an official debut for Botev Plovdiv and scored for the 1-1 draw with the local rivals Lokomotiv Plovdiv. He also picked up the man of the match award. Ivan Stoyanov made assists in the games against Slavia Sofia on 15 August and against PFC Neftochimic Burgas on 27 August. He was released in January 2017.
Etar
On 16 January 2017, Stoyanov joined Etar Veliko Tarnovo.