The deal is worth up to $3.25 million and includes a $350,000 signing bonus, a source told ESPN's Adam Schefter.
Clay, 30, was scheduled to count $9 million against the Bills' salary cap in the final season of a five-year, $38 million contract. He finished last season with a career-low 184 receiving yards while averaging a career-low 8.8 yards per catch.
Despite playing in 13 games and making 12 starts, his 21 catches were his fewest since 2012.
The signing continues to bolster the Cardinals' depth -- the team already has added former Atlanta Falcons cornerback Robert Alford and defensive end Brooks Reed -- as general manager Steve Keim and new coach Kliff Kingsbury head into free agency and the NFL draft.
Kingsbury is familiar with with Clay's play from college, and he sees an important role for him in Arizona's potentially dynamic offense, a source told Schefter.
Bills general manager Doug Whaley made signing the transition-tagged Clay away from the division-rival Miami Dolphins one of his signature moves of the 2015 offseason. The Bills guaranteed $24.5 million of Clay's deal, but his production in Buffalo never matched what remain his two best seasons -- for Miami in 2013 and 2014.
Clay's most recent touchdown came in Week 3 of the 2017 season. He surpassed 30 receiving yards in only two games during the 2018 season and was made a healthy scratch for a Week 16 contest at New England.
In eight NFL seasons, Clay has caught 339 passes for 3,631 yards and 23 touchdowns. He also rushed for a score in 2013.
ESPN's Mike Rodak contributed to this report.