diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index c96bdaf096..7cdc595f49 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -359,10 +359,6 @@ void quickstop_stepper() {
   SYNC_PLAN_POSITION_KINEMATIC();
 }
 
-#if HAS_M206_COMMAND
-  #include "gcode/geometry/M428.h"
-#endif
-
 #include "gcode/eeprom/M500.h"
 #include "gcode/eeprom/M501.h"
 #include "gcode/eeprom/M502.h"
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 69dd1d4371..5343f8f8d2 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -122,7 +122,6 @@ extern void gcode_M165();
 extern void gcode_M350();
 extern void gcode_M351();
 extern void gcode_M355();
-extern void gcode_M428();
 extern void gcode_M500();
 extern void gcode_M501();
 extern void gcode_M502();
@@ -631,9 +630,7 @@ void GcodeSuite::process_next_command() {
       #endif
 
       #if HAS_M206_COMMAND
-        case 428: // M428: Apply current_position to home_offset
-          gcode_M428();
-          break;
+        case 428: M428(); break;  // M428: Apply current_position to home_offset
       #endif
 
       case 500: // M500: Store settings in EEPROM
diff --git a/Marlin/src/gcode/geometry/M428.h b/Marlin/src/gcode/geometry/M428.cpp
similarity index 88%
rename from Marlin/src/gcode/geometry/M428.h
rename to Marlin/src/gcode/geometry/M428.cpp
index 77b58cf303..5ba3635110 100644
--- a/Marlin/src/gcode/geometry/M428.h
+++ b/Marlin/src/gcode/geometry/M428.cpp
@@ -20,6 +20,16 @@
  *
  */
 
+#include "../../inc/MarlinConfig.h"
+
+#if HAS_M206_COMMAND
+
+#include "../gcode.h"
+#include "../../module/motion.h"
+#include "../../lcd/ultralcd.h"
+#include "../../libs/buzzer.h"
+#include "../../Marlin.h" // for axis_homed
+
 /**
  * M428: Set home_offset based on the distance between the
  *       current_position and the nearest "reference point."
@@ -31,7 +41,7 @@
  *
  *       Use M206 to set these values directly.
  */
-void gcode_M428() {
+void GcodeSuite::M428() {
   bool err = false;
   LOOP_XYZ(i) {
     if (axis_homed[i]) {
@@ -59,3 +69,5 @@ void gcode_M428() {
     BUZZ(100, 698);
   }
 }
+
+#endif // HAS_M206_COMMAND