The 36-year-old man, named only as Metin Y., became the subject of an international arrest warrant after he made off with the money at the end of October.
The security van was found empty in a car park in Ulm, but Metin Y. was nowhere to be found.
Detectives followed up on some 160 clues, and the case was featured on television with appeals for information, to no avail. But on Friday police received a hot tip from Barcelona where Metin Y. had checked into a hotel under a false name.
The same day a lawyer called the Ulm police and said Metin Y. wanted to give himself up.
Officers got a phone call on Saturday with instructions on how to find the field where the money was buried.
There they not only found nearly all the money, but also Metin Y., waiting for his arrest.
Detectives are now trying to establish what happened to the small portion of the money which is missing, as well as to determine whether Metin Y. had help in fleeing Germany.
They say he has refused to tell them anything.