Terms of the deal were not announced but it was believed to be for two years.
Ryan Fitzpatrick, last year's Buffalo starter, was released and the team signed another quarterback, Tavaris Jackson, last month.
It is expected that Kolb and Jackson will compete for the starting job.
"We wanted to add some veteran experience to the quarterback position on our roster and we think we've added a good one by signing Kevin," Bills General Manager Buddy Nix said. "He's a player we had targeted since he became a free agent and he should be a strong candidate in the competition for the starting quarterback position."
Kolb was with the Arizona Cardinals last year but his season was shortened by rib and shoulder injuries.