The 17-year-old was considered one of the stars of the City academy, but came into conflict with the club over a new contract.
Goal revealed earlier in August that the youngster had said his goodbyes to his City youth team colleagues in the middle of July.
The final breakdown in relations came when City left Sancho out of their pre-season squad that toured the United States this summer.
That stand-off proved to Dortmund's benefit, as they swooped to sign the former Watford trainee on deadline day.
Sancho posed with his new shirt after the transfer was confirmed, taking up Ousmane Dembele's old No. 7 for BVB.
While the transfer fee has not been disclosed for the teenager, it is believed that Dortmund and City settled on a figure higher than the £190,000 the Premier League club would have been entitled to in compensation had BVB negotiated directly with Sancho.
It is understood that the Manchester club's desire not to sell their wonderkid to a Premier League rival led to them demanding an elevated fee which none of his suitors were willing to match.
Sancho is yet to make his professional debut, but he has become a fixture in England's Under-17 team, winning the Player of the Tournament gong in May as the Three Lions reached the UEFA European Championship final.