Martinez agreed Saturday to a $3.25 million, two-year deal that calls for a $250,000 signing bonus within 30 days of the contract's approval by the commissioner's office and salaries of $1 million this year and $2 million in 2020.
The 30-year-old first baseman and outfielder would get $100,000 each in 2020 for 250, 300, 350 and 400 plate appearances, and $200,000 apiece for 450, 500 and 550.
He would have been eligible for salary arbitration for the first time after next season.
Martinez led the Cardinals with a .305 average last year and had 17 homers and 83 RBI. He played 887 games in the minors before reaching the big leagues, and has since hit .309 over parts of three seasons.