The contract covers four years of arbitration eligibility and three years of free agency, and includes a $16 million option for 2020. Castro, 22, was projected to qualify for salary arbitration as a "Super Two" player at the end of the year.
When contacted by ESPNdeportesLosAngeles.com, Castro's agent, Paul Kinzer, said he would not comment on new contract because the sides are still in the process of negotiating.
Castro said that the deal has not been finalized.
"I'm just focused on playing baseball," said Castro after the first game of Saturday's doubleheader in Cincinnati. "When it's done, I'm ready."
Cubs president Theo Epstein also said the deal had not been finalized when he spoke to reporters on Saturday afternoon.
Castro entered Saturday batting .278 with 12 home runs, 19 steals, 58 RBIs and 58 runs scored this season -- his third in the majors. He has a career average of .297 in 400 games.
ESPNChicago.com's Doug Padilla contributed to this report.