Rojas will reportedly earn at least $10.25 million over the next two seasons, according to Jon Heyman of MLB Network.
The deal apparently includes a vesting option for a third year. If the option vests, the total contract will be worth more than $15 million, Heyman adds.
On Wednesday, reports indicated the two sides were nearing a new agreement.
The 30-year-old Rojas had one more year of arbitration remaining before he was scheduled to hit free agency.
Rojas has been a productive member of the last-place Marlins in 2019. He's hitting .285/.335/.383 with five home runs and 45 RBIs in 123 games.