Sources told ESPN on Saturday that the transfer -- which does not include an option to buy for the Bundesliga club -- was on the verge of completion.
Reinier, 18, will now join up with his new Dortmund teammates after they returned from a preseason training camp in Switzerland this week.
"We've been watching [Reinier] for more than two years," Dortmund sporting director Michael Zorc said. "After a long break from competition, we will give him the time he needs to get used to German football, and then he will be an extra option in attack."
Reinier added: "The club is known for taking a chance on young players and making them better. I want to learn, play a lot and help the team to be successful."
Reinier started three times for Madrid's reserve team Castilla in February and March, scoring three goals, before Spain's Segunda B season was abandoned due to the coronavirus pandemic.
The 2020-21 Bundesliga campaign is due to start on Sept. 18.
"He's a 'nine-and-a-half' who can play as a false nine, or on the wing," BVB coach Lucien Favre said on Monday. "I don't know if he can play as a number eight in a 4-1-4-1. He's very young.
"Our attack looks like a high school now! From what I've seen, he's really good in attack and at finishing. At 18 he can still improve a lot."