diff --git a/mo/util.py b/mo/util.py
index dab552fbab7e7fd7d9bdf7fb889a05f036cdefda..c3f08738fb79922b195df94c3d4b1964f4c13f29 100644
--- a/mo/util.py
+++ b/mo/util.py
@@ -136,16 +136,16 @@ def normalize_grade(grade: str) -> int:
 
 
 def parse_points(
-    raw_points: str, for_task: Optional[db.Task] = None, for_round: Optional[db.Round] = None,
+    raw_points: Optional[str], for_task: Optional[db.Task] = None, for_round: Optional[db.Round] = None,
 ) -> Tuple[Optional[decimal.Decimal], Optional[str]]:
     """Naparsuje a zkontroluje body. Vrátí body (jako decimal.Decimal nebo None
     při prázdných bodech) a případný error (None pokud nenastal, jinak text chyby)."""
-    if raw_points == "":
+    if not raw_points or raw_points == "":
         return None, None
     try:
         points = decimal.Decimal(raw_points.replace(',', '.'))
     except decimal.InvalidOperation:
-        return 0, f"Hodnota '{raw_points}' není číslo"
+        return decimal.Decimal(0), f"Hodnota '{raw_points}' není číslo"
 
     return points, check_points(points, for_task, for_round)