Anthony Rota told legislators he had made a mistake by inviting ex-soldier Yaroslav Hunka, 98, to attend a session in the House honoring Ukrainian President Volodymyr Zelenskiy last Friday.
Rota publicly recognised Hunka, calling him a hero.
The speaker's position rapidly become untenable after it emerged that Hunka, who received two standing ovations from lawmakers, had served in one of Adolf Hitler's Waffen SS units during World War Two.
Russia called the incident outrageous.
"That public recognition has caused pain to individuals and communities, including the Jewish community in Canada and around the world ... I accept full responsibility for my actions," said Rota, a member of the ruling Liberal party, adding his resignation would take effect on Wednesday. Until then a deputy speaker will be in charge.
The episode played into the narrative promoted by Russian President Vladimir Putin that he sent his army into Ukraine last year to "demilitarise and denazify" the country, a charge Kyiv and Western allies say is baseless.
The furor helped tarnish the visit by Zelenskiy, who thanked Canada for the billions of dollars in aid and weapons it has provided since Russia invaded in February 2022.
Foreign Minister Melanie Joly earlier said Rota should resign while Prime Minister Justin Trudeau called on him to ponder his future.
Although opposition parties blamed what they called failings by Trudeau's Liberal government for the affair, Rota said he took sole responsibility for what had happened.
Hunka lives in Rota's parliamentary constituency.