diff --git a/src/main/java/idatt2106/systemutvikling/sparesti/dto/MilestoneDTO.java b/src/main/java/idatt2106/systemutvikling/sparesti/dto/MilestoneDTO.java
new file mode 100644
index 0000000000000000000000000000000000000000..b9883c740e03ff27f0c4a7961fe8703fc00c8f91
--- /dev/null
+++ b/src/main/java/idatt2106/systemutvikling/sparesti/dto/MilestoneDTO.java
@@ -0,0 +1,26 @@
+package idatt2106.systemutvikling.sparesti.dto;
+
+import jakarta.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * Data transfer object for Milestone
+ * Used to transfer milestone data between layers
+ */
+@Getter
+@Setter
+public class MilestoneDTO {
+  @NotNull
+private Long milestoneId;
+private String username;
+private String milestoneTitle;
+private String milestoneDescription;
+private Long milestoneGoalSum;
+private Long milestoneCurrentSum;
+private String milestoneImage;
+private LocalDateTime deadlineDate;
+private LocalDateTime startDate;
+
+}
diff --git a/src/test/java/idatt2106/systemutvikling/sparesti/dto/MilestoneDTOTest.java b/src/test/java/idatt2106/systemutvikling/sparesti/dto/MilestoneDTOTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b687184b5f059cafcc19c892f2a3842853a94298
--- /dev/null
+++ b/src/test/java/idatt2106/systemutvikling/sparesti/dto/MilestoneDTOTest.java
@@ -0,0 +1,52 @@
+package idatt2106.systemutvikling.sparesti.dto;
+
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+import java.time.LocalDateTime;
+
+public class MilestoneDTOTest {
+
+  private MilestoneDTO milestoneDTO;
+  private final Long milestoneId = 1L;
+  private final String username = "testUser";
+  private final String milestoneTitle = "Test Milestone";
+  private final String milestoneDescription = "Test Milestone Description";
+  private final Long milestoneGoalSum = 1000L;
+  private final Long milestoneCurrentSum = 500L;
+  private final String milestoneImage = "test_image.jpg";
+  private final LocalDateTime deadlineDate = LocalDateTime.of(2024, 4, 20, 0, 0);
+  private final LocalDateTime startDate = LocalDateTime.of(2024, 4, 1, 0, 0);
+
+  @BeforeEach
+  public void setUp() {
+    milestoneDTO = new MilestoneDTO();
+    milestoneDTO.setMilestoneId(milestoneId);
+    milestoneDTO.setUsername(username);
+    milestoneDTO.setMilestoneTitle(milestoneTitle);
+    milestoneDTO.setMilestoneDescription(milestoneDescription);
+    milestoneDTO.setMilestoneGoalSum(milestoneGoalSum);
+    milestoneDTO.setMilestoneCurrentSum(milestoneCurrentSum);
+    milestoneDTO.setMilestoneImage(milestoneImage);
+    milestoneDTO.setDeadlineDate(deadlineDate);
+    milestoneDTO.setStartDate(startDate);
+  }
+
+  @Test
+  @DisplayName("MilestoneDTO is correctly instantiated")
+  public void testMilestoneDTOFields() {
+    assertNotNull(milestoneDTO);
+    assertEquals(milestoneId, milestoneDTO.getMilestoneId());
+    assertEquals(username, milestoneDTO.getUsername());
+    assertEquals(milestoneTitle, milestoneDTO.getMilestoneTitle());
+    assertEquals(milestoneDescription, milestoneDTO.getMilestoneDescription());
+    assertEquals(milestoneGoalSum, milestoneDTO.getMilestoneGoalSum());
+    assertEquals(milestoneCurrentSum, milestoneDTO.getMilestoneCurrentSum());
+    assertEquals(milestoneImage, milestoneDTO.getMilestoneImage());
+    assertEquals(deadlineDate, milestoneDTO.getDeadlineDate());
+    assertEquals(startDate, milestoneDTO.getStartDate());
+  }
+}