По пути домой солдат столкнулся с колдуньей, которая направила его к дуплу, где в трёх комнатах стояли по одному сундуку, охраняемому злобными собаками. Она объяснила, что для того, чтобы взять медяки, серебро и золото из сундуков, нужно надеть на собак клетчатый передник старухи. Взамен колдунья потребовала принести ей огниво, находящееся там же. Солдат выполнил её условия, а затем отрубил ей голову и забрал огниво себе. Потратив все богатства и потеряв новых знакомых, он вновь оказался в бедности. Однажды, зажёг свечу, которая шла вместе с огнивом, и перед ним появилась собака из первой комнаты дупла. Оказалось, что при каждом щелчке огнива возникают собаки из тех самых комнат. Благодаря этому солдат снова стал жить в достатке.
Однажды ночью ему захотелось увидеть принцессу, и собака принесла её к нему. Утром принцесса рассказала родителям о своём сне, в котором она словно ехала верхом на собаке, а солдат поцеловал её. На следующую ночь фрейлина, по приказу королевы, проследила за принцессой до ворот дома солдата и поставила на них крест. Однако собака заметила метку и поставила кресты на всех соседних воротах. В следующий раз королева привязала к спине дочери мешочек с крупой, которая сыпалась на дорогу. По крошкам нашли похитителя и посадили его в тюрьму.
В день казни подмастерье сапожника за четыре медяка принес солдату огниво. Последним желанием заключённого было покурить, и после щелчка огнива появились все три собаки, которые начали подбрасывать присутствующих так высоко, что падавшие разбивались. Солдаты предложили солдату стать королём и жениться на принцессе. Собаки также присутствовали на свадебном пиру, поражённые происходящим.