Index: frontend/src/components/StudentForm/StudentForm.tsx
===================================================================
--- frontend/src/components/StudentForm/StudentForm.tsx	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
+++ frontend/src/components/StudentForm/StudentForm.tsx	(revision 1f27255c9f05038d7afa555a20aa7d329fbec5c8)
@@ -90,6 +90,4 @@
 	const [hasExtracurricular, setHasExtracurricular] = useState(false);
 	const [invalidSubjects, setInvalidSubjects] = useState<Subject[]>([]);
-	const [totalCredits, setTotalCredits] = useState(-1);
-	const [creditsByLevel, setCreditsByLevel] = useState([0, 0, 0]);
 
 	// Update form when formData changes (e.g., after fetching user data)
@@ -192,5 +190,6 @@
 	const handleSubmit = async (e: React.FormEvent) => {
 		e.preventDefault();
-
+		let totalCredits = { value: -1 };
+		let creditsByLevel = { value: [0, 0, 0] };
 		const errors = validateForm({
 			index,
@@ -201,6 +200,6 @@
 			hasExtracurricular,
 			setInvalidSubjects,
-			setTotalCredits,
-			setCreditsByLevel,
+			totalCredits,
+			creditsByLevel,
 		});
 		if (Object.keys(errors).length > 0) {
@@ -242,9 +241,10 @@
 			passed_subjects_per_semester: mapToID(passedSubjectsPerSemester),
 			has_extracurricular: hasExtracurricular,
-			total_credits: totalCredits,
-			level_credits: creditsByLevel,
+			total_credits: totalCredits.value,
+			level_credits: creditsByLevel.value,
 		};
 		try {
-			console.log(payload);
+			console.log(totalCredits.value);
+			console.log(creditsByLevel.value);
 			// For updating existing form data use PATCH instead of PUT for partial updates
 			const method = formData?.current_year || isSubmitted ? "PATCH" : "POST";
Index: frontend/src/components/StudentForm/utils.ts
===================================================================
--- frontend/src/components/StudentForm/utils.ts	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
+++ frontend/src/components/StudentForm/utils.ts	(revision 1f27255c9f05038d7afa555a20aa7d329fbec5c8)
@@ -71,6 +71,6 @@
 	hasExtracurricular,
 	setInvalidSubjects,
-	setTotalCredits,
-	setCreditsByLevel,
+	totalCredits,
+	creditsByLevel,
 }: {
 	index: string;
@@ -81,6 +81,6 @@
 	hasExtracurricular: boolean;
 	setInvalidSubjects: Dispatch<SetStateAction<Subject[]>>;
-	setTotalCredits: Dispatch<SetStateAction<number>>;
-	setCreditsByLevel: Dispatch<SetStateAction<number[]>>;
+	totalCredits: Record<string, number>;
+	creditsByLevel: Record<string, number[]>;
 }) => {
 	const errors: { [key: string]: string } = {};
@@ -103,7 +103,7 @@
 		passedSubjects,
 		hasExtracurricular,
-		setTotalCredits,
+		totalCredits,
 		studyTrack,
-		setCreditsByLevel
+		creditsByLevel
 	);
 	if (invalid.length != 0) {
@@ -143,7 +143,7 @@
 	passedSubjects: Subject[],
 	hasExtracurricular: boolean,
-	setTotalCredits: Dispatch<SetStateAction<number>>,
+	totalCredits: Record<string, number>,
 	studyTrack: StudyTrack | "",
-	setCreditsByLevel: Dispatch<SetStateAction<number[]>>
+	creditsByLevel: Record<string, number[]>
 ) => {
 	passedSubjects.sort(
@@ -166,10 +166,10 @@
 	}
 
-	let totalCredits = (passedSubjectIds.size + Number(hasExtracurricular)) * 6;
+	totalCredits.value = (passedSubjectIds.size + Number(hasExtracurricular)) * 6;
 	if (
 		passedSubjects.some((s) => s.name === "Професионални вештини") &&
 		passedSubjects.some((s) => s.name === "Спорт и здравје")
 	) {
-		totalCredits -= 6;
+		totalCredits.value -= 6;
 	}
 
@@ -178,7 +178,7 @@
 		const prereqs = subject.subject_info.prerequisite;
 		// subtracting 6 because the current subject is counted in the total as well
-		if (prereqs["credits"] && prereqs["credits"] > totalCredits - 6) {
+		if (prereqs["credits"] && prereqs["credits"] > totalCredits.value - 6) {
 			passedSubjectIds.delete(subject.id);
-			totalCredits -= 6;
+			totalCredits.value -= 6;
 			invalidSubjects.push(subject);
 		}
@@ -186,9 +186,8 @@
 
 	if (invalidSubjects.length == 0) {
-		setTotalCredits(totalCredits);
 		const newPassedSubjects = passedSubjects.filter((subject) =>
 			passedSubjectIds.has(subject.id)
 		);
-		setCreditsByLevel(getCreditsByLevel(newPassedSubjects, studyTrack));
+		creditsByLevel.value = getCreditsByLevel(newPassedSubjects, studyTrack);
 	}
 
