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