Robert Murray of FanRag Sports added that the deal is pending a physical.
The first baseman and designated hitter had been a valuable slugger for eight years with the New York Mets before finishing last season with the Tampa Bay Rays. He matched a career high with 30 home runs in 2016 while splitting time between the two squads.
Duda has 94 home runs over the past four seasons despite averaging just 115.5 games played per year.
His inability to stay healthy has been a problem, though, as he has topped 135 games just once since reaching the majors in 2010. The left-hander has missed a total of 177 regular-season games over the last three years.
Even when healthy, Duda only hit .175 in 52 games with the Rays, with his .217 overall batting average last year being the worst since his rookie season.
Still, the 32-year-old can change games with one swing of the bat and is especially useful against right-handed pitchers, posting an .842 OPS in his career.
If he can stay healthy, Duda should provide an immediate boost to the Royals lineup next season as a middle-of-the order hitter.
The Royals took a big hit in free agency after losing first baseman Eric Hosmer and outfielder Lorenzo Cain and trading away Brandon Moss.
With that trio gone, Duda figures to be in line for regular at-bats in Kansas City.