Puig will have to complete a physical before the contract is finalized, Ken Rosenthal of The Athletic notes.
The move comes not long after veteran outfielder Nick Markakis decided to opt out of the 2020 season.
Puig, 29, spent the 2019 season between the Cincinnati Reds and Cleveland Indians. He hit .267/.327/.458 with 24 home runs, 84 RBIs, and 19 stolen bases in 149 games. However, his power was sapped after being traded to Cleveland midseason, hitting only two homers in 49 games down the stretch.
Prior to landing with the Braves, Puig had recently received a contract offer from the Baltimore Orioles. The Chicago White Sox, Miami Marlins, San Francisco Giants, and Tampa Bay Rays were among the teams linked to the former All-Star, but he remained unsigned through initial training camps.