diff --git a/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java b/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java
index de8fb13f7198c2374c1633a9a06e0c43755f991f..3fc9bc6334f5f53f7e8968d94e7dba19f4b2fa8c 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java
@@ -1,5 +1,6 @@
 package dev.fitko.fitconnect.client.util;
 
+import dev.fitko.fitconnect.api.domain.model.destination.Destination;
 import dev.fitko.fitconnect.api.domain.model.destination.DestinationService;
 import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType;
 import dev.fitko.fitconnect.api.domain.model.submission.ServiceType;
@@ -8,6 +9,7 @@ import dev.fitko.fitconnect.api.services.Sender;
 import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload;
 import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
 
+import java.net.URI;
 import java.util.Objects;
 import java.util.UUID;
 import java.util.regex.Pattern;
@@ -55,10 +57,11 @@ public class ValidDataGuard {
             throw new IllegalArgumentException("Data is mandatory, but was null.");
         }
         testOnValidDataFormat(submissionPayload);
-        testDefaults(submissionPayload.getDestinationId(), submissionPayload.getServiceType());
+        testDefaults(submissionPayload);
     }
 
     private void testDefaults(final UUID destinationId, final ServiceType serviceType) {
+
         if (destinationId == null) {
             throw new IllegalArgumentException("DestinationId is mandatory, but was null.");
         } else if (serviceType == null) {
@@ -67,13 +70,38 @@ public class ValidDataGuard {
             throw new IllegalArgumentException("Leika key is mandatory, but was null.");
         } else if (noValidLeikaKeyPattern(serviceType.getIdentifier())) {
             throw new IllegalArgumentException("LeikaKey has invalid format, please follow: ^urn:[a-z0-9][a-z0-9-]{0,31}:[a-z0-9()+,.:=@;$_!*'%/?#-]+$.");
-        } else if (serviceTypeDoesNotMatchDestination(destinationId, serviceType)) {
+        }
+
+        Destination destination = sender.getDestination(destinationId);
+        if (serviceTypeDoesNotMatchDestination(destination, serviceType)) {
             throw new IllegalArgumentException("Provided service type '" + serviceType.getIdentifier() + "' is not allowed by the destination ");
         }
     }
 
-    private boolean serviceTypeDoesNotMatchDestination(final UUID destinationId, final ServiceType serviceType) {
-        return sender.getDestination(destinationId).getServices().stream()
+    private void testDefaults(final SubmissionPayload submissionPayload) {
+
+        if (submissionPayload.getDestinationId() == null) {
+            throw new IllegalArgumentException("DestinationId is mandatory, but was null.");
+        } else if (submissionPayload.getServiceType() == null) {
+            throw new IllegalArgumentException("ServiceType is mandatory, but was null.");
+        } else if (submissionPayload.getServiceType().getIdentifier() == null) {
+            throw new IllegalArgumentException("Leika key is mandatory, but was null.");
+        } else if (noValidLeikaKeyPattern(submissionPayload.getServiceType().getIdentifier())) {
+            throw new IllegalArgumentException("LeikaKey has invalid format, please follow: ^urn:[a-z0-9][a-z0-9-]{0,31}:[a-z0-9()+,.:=@;$_!*'%/?#-]+$.");
+        }
+
+        Destination destination = sender.getDestination(submissionPayload.getDestinationId());
+        if (serviceTypeDoesNotMatchDestination(destination, submissionPayload.getServiceType())) {
+            throw new IllegalArgumentException("Provided service type '" + submissionPayload.getServiceType().getIdentifier() + "' is not allowed by the destination ");
+        }
+        if (mimeTypeAndSchemaUriDoNotMatchDestination(destination, submissionPayload.getDataMimeType(), submissionPayload.getSchemaUri())) {
+            throw new IllegalArgumentException("Combination of provided MIME type '" + submissionPayload.getDataMimeType() +
+                    "' and schema URI '" + submissionPayload.getSchemaUri() + "' is not allowed by the destination");
+        }
+    }
+
+    private boolean serviceTypeDoesNotMatchDestination(final Destination destination, final ServiceType serviceType) {
+        return destination.getServices().stream()
                 .map(DestinationService::getIdentifier)
                 .filter(Objects::nonNull)
                 .filter(serviceIdentifier -> serviceIdentifier.equals(serviceType.getIdentifier()))
@@ -81,6 +109,16 @@ public class ValidDataGuard {
                 .isEmpty();
     }
 
+    private boolean mimeTypeAndSchemaUriDoNotMatchDestination(final Destination destination, final MimeType mimeType, final URI schemaUri) {
+        return destination.getServices().stream()
+                .flatMap(service -> service.getSubmissionSchemas().stream())
+                .filter(Objects::nonNull)
+                .filter(schema -> schema.getMimeType().equals(mimeType))
+                .filter(schema -> schema.getSchemaUri().equals(schemaUri))
+                .findFirst()
+                .isEmpty();
+    }
+
     private void testOnValidDataFormat(final SubmissionPayload submissionPayload) {
         final MimeType dataMimeType = submissionPayload.getDataMimeType();
         if (dataMimeType.equals(MimeType.APPLICATION_JSON)) {
diff --git a/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java b/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java
index ea35dd69f4919d6642a20016ea5e1d15d39582a8..d2d4d8a51fcbdd56f7b946137b9f3b13e8a8c5cc 100644
--- a/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java
+++ b/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java
@@ -25,6 +25,7 @@ import dev.fitko.fitconnect.client.sender.SubmissionBuilder;
 import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload;
 import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
 import dev.fitko.fitconnect.client.testutil.LogCaptor;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -195,11 +196,11 @@ public class SenderClientTest {
                 .withSchemaUri(URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json"))
                 .build();
 
-        final var sentSubmission = senderClient.submit(submission);
+        final var exception = Assertions.assertThrows(IllegalArgumentException.class, () -> senderClient.submit(submission));
 
         // Then
-        assertNull(sentSubmission);
-        logs.assertContains("Required schema to send valid submission not found");
+        assertThat(exception.getMessage(), equalTo("Combination of provided MIME type 'application/json' and schema URI " +
+                "'https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json' is not allowed by the destination"));
     }
 
     @Test
diff --git a/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java b/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java
index 2afef9c7b343adc8d6e519aed3b7a1de32d060e9..4d7e3d1a1ef8b5446c0abde7f9c9afc9a46e87ad 100644
--- a/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java
+++ b/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java
@@ -2,6 +2,8 @@ package dev.fitko.fitconnect.client.util;
 
 import dev.fitko.fitconnect.api.domain.model.destination.Destination;
 import dev.fitko.fitconnect.api.domain.model.destination.DestinationService;
+import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType;
+import dev.fitko.fitconnect.api.domain.model.metadata.data.SubmissionSchema;
 import dev.fitko.fitconnect.api.domain.validation.ValidationResult;
 import dev.fitko.fitconnect.api.services.Sender;
 import dev.fitko.fitconnect.client.sender.EncryptedSubmissionBuilder;
@@ -41,8 +43,13 @@ class ValidDataGuardTest {
         void testValidSubmissionPayload() {
 
             // Given
+            final SubmissionSchema submissionSchema = new SubmissionSchema();
+            submissionSchema.setMimeType(MimeType.APPLICATION_JSON);
+            submissionSchema.setSchemaUri(URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json"));
+
             final DestinationService service = new DestinationService();
             service.setIdentifier("urn:de:fim:leika:leistung:99400048079000");
+            service.setSubmissionSchemas(Set.of(submissionSchema));
 
             final Destination destination = new Destination();
             destination.setDestinationId(UUID.randomUUID());
@@ -182,6 +189,69 @@ class ValidDataGuardTest {
             assertThat(exception.getMessage(), containsString("Provided service type 'urn:de:fim:leika:leistung:123456789101114' is not allowed by the destination"));
         }
 
+        @Test
+        void testMimeTypeNotMatchingDestination() {
+
+            // Given
+            final SubmissionSchema submissionSchema = new SubmissionSchema();
+            submissionSchema.setMimeType(MimeType.APPLICATION_XML);
+            submissionSchema.setSchemaUri(URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json"));
+
+            final DestinationService service = new DestinationService();
+            service.setIdentifier("urn:de:fim:leika:leistung:99400048079000");
+            service.setSubmissionSchemas(Set.of(submissionSchema));
+
+            final Destination destination = new Destination();
+            destination.setServices(Set.of(service));
+
+            when(senderMock.getDestination(any())).thenReturn(destination);
+            when(senderMock.validateJsonFormat(any())).thenReturn(ValidationResult.ok());
+
+            final SubmissionPayload submissionPayload = SubmissionBuilder.Builder()
+                    .withJsonData("\"test\": \"json\"")
+                    .withDestination(UUID.randomUUID())
+                    .withServiceType("Test", "urn:de:fim:leika:leistung:99400048079000")
+                    .withSchemaUri(URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json"))
+                    .build();
+            // When
+            final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> underTest.ensureValidDataPayload(submissionPayload));
+
+            // Then
+            assertThat(exception.getMessage(), containsString("Combination of provided MIME type 'application/json' and schema URI " +
+                    "'https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json' is not allowed by the destination"));
+        }
+
+        @Test
+        void testSchemaUriNotMatchingDestination() {
+
+            // Given
+            final SubmissionSchema submissionSchema = new SubmissionSchema();
+            submissionSchema.setMimeType(MimeType.APPLICATION_JSON);
+            submissionSchema.setSchemaUri(URI.create("https://schema.fitko.de/fim/s00000000010_1.0.0.schema.json"));
+
+            final DestinationService service = new DestinationService();
+            service.setIdentifier("urn:de:fim:leika:leistung:99400048079000");
+            service.setSubmissionSchemas(Set.of(submissionSchema));
+
+            final Destination destination = new Destination();
+            destination.setServices(Set.of(service));
+
+            when(senderMock.getDestination(any())).thenReturn(destination);
+            when(senderMock.validateJsonFormat(any())).thenReturn(ValidationResult.ok());
+
+            final SubmissionPayload submissionPayload = SubmissionBuilder.Builder()
+                    .withJsonData("\"test\": \"json\"")
+                    .withDestination(UUID.randomUUID())
+                    .withServiceType("Test", "urn:de:fim:leika:leistung:99400048079000")
+                    .withSchemaUri(URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json"))
+                    .build();
+            // When
+            final IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> underTest.ensureValidDataPayload(submissionPayload));
+
+            // Then
+            assertThat(exception.getMessage(), containsString("Combination of provided MIME type 'application/json' and schema URI " +
+                    "'https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json' is not allowed by the destination"));
+        }
     }