diff --git a/models/case.go b/models/case.go
index 0c81f966c..d68e40b5f 100644
--- a/models/case.go
+++ b/models/case.go
@@ -29,6 +29,10 @@ func (c Case) GetMetadata() CaseMetadata {
 	}
 }
 
+func (c CaseStatus) IsFinalized() bool {
+	return c == CaseDiscarded || c == CaseResolved
+}
+
 type CaseMetadata struct {
 	Id             string
 	CreatedAt      time.Time
diff --git a/models/sanction_check.go b/models/sanction_check.go
index 8b93c145c..f43c63115 100644
--- a/models/sanction_check.go
+++ b/models/sanction_check.go
@@ -9,6 +9,7 @@ type SanctionCheckStatus int
 
 const (
 	SanctionStatusConfirmedHit SanctionCheckStatus = iota
+	SanctionStatusNoHit
 	SanctionStatusInReview
 	SanctionStatusError
 	SanctionStatusUnknown
@@ -18,6 +19,8 @@ func SanctionCheckStatusFrom(s string) SanctionCheckStatus {
 	switch s {
 	case "confirmed_hit":
 		return SanctionStatusConfirmedHit
+	case "no_hit":
+		return SanctionStatusNoHit
 	case "in_review":
 		return SanctionStatusInReview
 	case "error":
@@ -31,6 +34,8 @@ func (scs SanctionCheckStatus) String() string {
 	switch scs {
 	case SanctionStatusConfirmedHit:
 		return "confirmed_hit"
+	case SanctionStatusNoHit:
+		return "no_hit"
 	case SanctionStatusInReview:
 		return "in_review"
 	case SanctionStatusError:
@@ -40,6 +45,10 @@ func (scs SanctionCheckStatus) String() string {
 	return "unknown"
 }
 
+func (scs SanctionCheckStatus) IsFinalized() bool {
+	return scs == SanctionStatusConfirmedHit || scs == SanctionStatusNoHit
+}
+
 type SanctionCheck struct {
 	Id          string
 	DecisionId  string
diff --git a/repositories/migrations/20250120101100_sanction_check.sql b/repositories/migrations/20250120101100_sanction_check.sql
index 6546afcea..3f227b286 100644
--- a/repositories/migrations/20250120101100_sanction_check.sql
+++ b/repositories/migrations/20250120101100_sanction_check.sql
@@ -5,7 +5,7 @@ create table sanction_checks (
     id uuid default uuid_generate_v4(),
     decision_id uuid not null,
 
-    status text check (status in ('confirmed_hit', 'in_review', 'error')) default 'in_review',
+    status text check (status in ('confirmed_hit', 'no_hit', 'in_review', 'error')) default 'in_review',
     search_input jsonb,
     search_datasets text[],
     search_threshold integer,
diff --git a/usecases/sanction_check_usecase.go b/usecases/sanction_check_usecase.go
index 7d82f68e2..545c5285b 100644
--- a/usecases/sanction_check_usecase.go
+++ b/usecases/sanction_check_usecase.go
@@ -222,9 +222,7 @@ func (uc SanctionCheckUsecase) enforceCanRefineSanctionCheck(ctx context.Context
 		return models.Decision{}, models.SanctionCheck{}, errors.Wrap(models.NotFoundError,
 			"this sanction check is not linked to a case")
 	}
-	if (decision[0].Case.Status != models.CaseOpen && decision[0].Case.Status !=
-		models.CaseInvestigating) || (sanctionCheck.Status != models.SanctionStatusInReview &&
-		sanctionCheck.Status != models.SanctionStatusError) {
+	if decision[0].Case.Status.IsFinalized() || sanctionCheck.Status.IsFinalized() {
 		return models.Decision{}, models.SanctionCheck{},
 			errors.Wrap(models.NotFoundError, "this sanction is not pending review")
 	}
diff --git a/usecases/sanction_check_usecase_test.go b/usecases/sanction_check_usecase_test.go
index 14b09435a..6d4922479 100644
--- a/usecases/sanction_check_usecase_test.go
+++ b/usecases/sanction_check_usecase_test.go
@@ -4,6 +4,7 @@ import (
 	"context"
 	"testing"
 
+	"github.com/checkmarble/marble-backend/models"
 	"github.com/checkmarble/marble-backend/repositories"
 	"github.com/checkmarble/marble-backend/repositories/dbmodels"
 	"github.com/checkmarble/marble-backend/usecases/executor_factory"
@@ -65,7 +66,7 @@ func TestGetSanctionCheckOnDecision(t *testing.T) {
 
 	assert.NoError(t, exec.Mock.ExpectationsWereMet())
 	assert.NoError(t, err)
-	assert.Equal(t, mockSc.Status, sc.Status)
+	assert.Equal(t, models.SanctionCheckStatusFrom(mockSc.Status), sc.Status)
 	assert.Len(t, sc.Matches, 3)
 	assert.Equal(t, mockScMatch.Status, sc.Matches[0].Status)
 	assert.Equal(t, mockScMatch.CommentCount, sc.Matches[0].CommentCount)