Après Cedar Creek, l'armée resta à proximité du champ de bataille le jour de l'élection présidentielle. McKinley vota pour la première fois et son choix se porta sur le candidat républicain, Abraham Lincoln. Le lendemain, les hommes retournèrent dans le nord de la vallée pour installer leurs quartiers d'hiver à proximité de Kernstown. En , Crook fut capturé par un commando confédéré. Cet enlèvement aggrava la confusion de l'armée alors qu'elle était réorganisée pour l'offensive de printemps et au cours des quinze jours qui suivirent McKinley servit dans les états-majors de quatre généraux, Crook, , Samuel S. Carroll et Winfield S. Hancock. Après avoir été finalement assigné à l'état-major de Carroll, McKinley servit en tant que premier et unique adjoint du général. Le , Lee et son armée se rendirent au lieutenant général Ulysses S. Grant et la guerre se termina quelques jours plus tard. McKinley trouva le temps de rejoindre une loge maçonnique à Winchester (qui fut par la suite rebaptisée d'après lui) avant que Carroll et lui-même ne soient transférés à Washington D.C. Juste avant la fin de la guerre, il fut élevé au grade de major breveté., puis, en juillet, relevé de ses obligations militaires. Carroll et Hancock encouragèrent McKinley à rester dans l'armée mais il déclina l'offre et retourna dans l'Ohio le mois suivant.