Wann genau schreibst du die currentMillis? - Das ist entscheidend.
unsigned long currentMillis = millis();
Versuch mal die currentMillis in der else-Schleife zu schreiben. So ist während die Pumpe aus ist immer currentMillis=millis() und wenn der Eingang high wird, startet die Pumpe wieder bis die 5 Sek abgelaufen sind.
else {
digitalWrite (refill_pump, LOW);
previousMillis = currentMillis;
Für dein Eingang könntest du auch eine Flankenerkennung machen, damit die Pumpe nie länger als 5 Sek. läuft bis der Eingang erneut true wird.