Il réalise sa première patrouille de guerre, quittant le port de Memel, le , sous les ordres du KapitänleutnantJohannes Habekost pour rejoindre son port d'attache le après sept jours en mer.
Au cours des sept patrouilles qu'il effectue, l'U-31 coule onze navires marchands ennemis pour un total de 27 751 tonneaux, deux navires auxiliaires militaires pour un total de 160 tonneaux et endommage un navire de guerre de 33 950 tonneaux pour un total de 124 jours en mer.
Il est coulé le dans la Jadebusen par des bombes lancées d'un avion britannique Bristol Blenheim (RAF Bomber Command). Les 58 membres d'équipage meurent dans cette attaque.
Il est renfloué en , réparé et est remis en service.
Le , au cours de sa deuxième patrouille, un sous-marin ennemi inconnu lui lance deux torpilles, mais l'U-31 s'échappe de justesse.
Au cours de sa septième et ultime patrouille, ayant quitté la base sous-marine de Lorient le , il est attaqué le par un sous-marin britannique qui le torpille sans succès. Le , après quinze jours en mer, l'U-31 est coulé au nord-ouest de l'Irlande à la position géographique de 56° 26′ N, 10° 18′ O par les charges de profondeur lancées par le destroyer britannique HMS Antelope.
Sur les 46 membres d'équipage, deux d'entre eux meurent au cours de cette attaque.
Nota: Les noms de commandants sans indication de grade signifie que leur grade n'est pas connu avec certitude à la date de la prise de commandement.
Navires coulés
L'Unterseeboot 31 a coulé 11 navires marchands ennemis pour un total de 27 751 tonneaux, 2 navires auxiliaires militaires pour un total de 160 tonneaux et a endommagé 1 navire de guerre de 33 950 tonneaux au cours des 7 patrouilles (124 jours en mer) qu'il effectua.