The 19-year-old made his Premier League debut against Manchester United on 22 January.
“It has taken a couple of months to sort out but now I’m happy to have a new contract at Birmingham,” he said.
“Now I’ll just aim to keep on training hard, maybe look to go back out on loan again and get a few more games until the end of season.
“Then hopefully I’ll come back for pre-season and try and be in and around the first team.”