The organization says the money was raised in nearly 2,000 kettles in stores and on street corners across Canada and through an online campaign.
It marked the 120th anniversary of the Salvation Army's Christmas Kettle Campaign.
The charity says the funds will be used to support programs that help more than 1.7 million people each year throughout the country.
The Salvation Army began its work in Canada in 1882 and says it has grown to become the largest non-governmental direct provider of social services in the country.
More than $18 million was raised in kettles nationwide in the 2010 campaign and the organization had set a goal of $19 million for 2011.
"Meeting and surpassing our ambitious $19-million goal will help us meet the increased demand for our services and provide a sense of dignity for all throughout 2012," said spokesman Graham Moore.
"We're incredibly grateful for the overwhelming generosity that helped us fill the kettles this year," Moore added.