Kainz begann seine Karriere in der Jugend seines Heimatvereins USV Edelsbach, ehe er 2004 in die Akademie von SK Sturm Graz wechselte. Simultan dazu absolvierte er zwischen 2002 und 2006 das Landesausbildungszentrum Weiz, wo er bereits in jungen Jahren eine permanente sportliche Betreuung erhielt.[1]
2007 folgte mit dem Wechsel zu FK Austria Wien bzw. in deren Akademie FSA Hollabrunn, der nächste Karriereschritt. Nach kurzer Zeit in der FSA, wurde er daraufhin vom niederländischen Verein SC Heerenveen gescoutet und unter Vertrag genommen.[2]
In Heerenveen spielte er daraufhin im Alter von 15 Jahren in der U-19-Mannschaft, die er ab 2009 als Kapitän auf das Spielfeld führte. Zur Spielzeit 2010/11 rückte er erstmals in die B-Mannschaft auf (Jong SC Heerenveen/FC Emmen), in der er sich ebenfalls innerhalb kurzer Zeit etablieren konnte.
Am letzten Spieltag der Saison gab er beim 0:0 gegen Roda JC Kerkrade sein Profidebüt in der Eredivisie, als er in Spielminute 77 für den SchwedenPhilip Haglund eingewechselt wurde.[3][4] Ende Juni 2011 unterzeichnete er einen Zweijahresvertrag bei den Friesen.[5]
Zur Saison 2012/13 kehrte er nach Österreich zurück, wo er sich seinem Jugendklub Sturm Graz anschloss. Nach zwei Jahren bei den Grazern wechselte er zum SC Wiener Neustadt, nach deren Abstieg 2015 zum SV Grödig. Nachdem auch die Grödiger abgestiegen waren, wurde er vereinslos.
Im Frühjahr 2017 wechselte er nach Irland zum Limerick FC. Nachdem er bei den Iren lediglich zu einem Einsatz im League Cup kam[6][7], wechselte er im Sommer 2017 zurück nach Österreich zum Zweitligisten Kapfenberger SV.[8] Zur Saison 2018/19 wechselte er zum Bundesligisten TSV Hartberg, bei dem er einen bis Juni 2019 laufenden Vertrag erhielt.[9]
2010 nahm er an der U-19-Fußball-Europameisterschaft teil, die für Österreich mit Platz drei in der Gruppenphase und der Qualifikation für die U-20-Weltmeisterschaft endete. Kainz kam beim 2:3 gegen England und beim 1:0-Sieg gegen die Niederlande zum Einsatz.[10][11]