diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/InvalidQRCodeExcpetion.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/InvalidQRCodeExcpetion.kt
deleted file mode 100644
index 28d4aeb35dbfe3fc9de6220fe584333465776e6a..0000000000000000000000000000000000000000
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/InvalidQRCodeExcpetion.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package de.rki.coronawarnapp.exception
-
-class InvalidQRCodeExcpetion : Exception("the supplied QR code does not match the patter")
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/SubmissionConstants.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/SubmissionConstants.kt
index 7798f280359645341682943a18e32d1d45f92992..6edc4ce1bfc13a6d94b5924234ad29e1a46a0e0c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/SubmissionConstants.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/SubmissionConstants.kt
@@ -19,7 +19,4 @@ object SubmissionConstants {
     val REGISTRATION_TOKEN_URL = "$VERSIONED_VERIFICATION_CDN_URL/$REGISTRATION_TOKEN"
     val TEST_RESULT_URL = "$VERSIONED_VERIFICATION_CDN_URL/$TEST_RESULT"
     val TAN_REQUEST_URL = "$VERSIONED_VERIFICATION_CDN_URL/$TAN"
-
-    val QR_CODE_VALIDATION_REGEX =
-        "[0-9A-Fa-f]{6}-[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}".toRegex()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/SubmissionService.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/SubmissionService.kt
index 77f4d57c139bd54349221890e6e41a87f50f045a..ad23d8a0d3bcfdb5929ce91e24f9385117ab069b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/SubmissionService.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/SubmissionService.kt
@@ -1,11 +1,9 @@
 package de.rki.coronawarnapp.service.submission
 
-import de.rki.coronawarnapp.exception.InvalidQRCodeExcpetion
 import de.rki.coronawarnapp.exception.NoGUIDOrTANSetException
 import de.rki.coronawarnapp.exception.NoRegistrationTokenSetException
 import de.rki.coronawarnapp.http.WebRequestBuilder
 import de.rki.coronawarnapp.service.submission.SubmissionConstants.QR_CODE_KEY_TYPE
-import de.rki.coronawarnapp.service.submission.SubmissionConstants.QR_CODE_VALIDATION_REGEX
 import de.rki.coronawarnapp.service.submission.SubmissionConstants.REGISTRATION_TOKEN_URL
 import de.rki.coronawarnapp.service.submission.SubmissionConstants.TAN_REQUEST_URL
 import de.rki.coronawarnapp.service.submission.SubmissionConstants.TELE_TAN_KEY_TYPE
@@ -63,11 +61,19 @@ object SubmissionService {
         SubmitDiagnosisKeysTransaction.start(registrationToken)
     }
 
-    fun validateAndStoreTestGUID(testGUID: String) {
-        val regexMatch = QR_CODE_VALIDATION_REGEX.find(testGUID) ?: throw InvalidQRCodeExcpetion()
-        LocalData.testGUID(regexMatch.value)
+    /**
+     * extracts the GUID from [scanResult]. Returns null if it does not match the required pattern
+     */
+    fun extractGUID(scanResult: String): String? {
+        val potentialGUID = scanResult.substringAfterLast("?", "")
+        return if (potentialGUID.isEmpty())
+            null
+        else
+            potentialGUID
     }
 
+    fun storeTestGUID(guid: String) = LocalData.testGUID(guid)
+
     fun deleteTestGUID() {
         LocalData.testGUID(null)
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/viewmodel/SubmissionViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/viewmodel/SubmissionViewModel.kt
index e1fda8bb4e794f61c1bc300aa34974c0871168e4..d32a610016700b02aad518d8cffbc67a1ad3c8fa 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/viewmodel/SubmissionViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/viewmodel/SubmissionViewModel.kt
@@ -5,7 +5,6 @@ import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.viewModelScope
 import de.rki.coronawarnapp.exception.ExceptionCategory
-import de.rki.coronawarnapp.exception.InvalidQRCodeExcpetion
 import de.rki.coronawarnapp.exception.report
 import de.rki.coronawarnapp.service.submission.SubmissionService
 import de.rki.coronawarnapp.storage.LocalData
@@ -44,11 +43,12 @@ class SubmissionViewModel : ViewModel() {
     fun refreshTestResult() =
         executeRequestWithState(SubmissionRepository::refreshTestResult, _testResultState)
 
-    fun validateAndStoreTestGUID(testGUID: String) {
-        try {
-            SubmissionService.validateAndStoreTestGUID(testGUID)
+    fun validateAndStoreTestGUID(scanResult: String) {
+        val guid = SubmissionService.extractGUID(scanResult)
+        if (guid != null) {
+            SubmissionService.storeTestGUID(guid)
             _scanStatus.value = ScanStatus.SUCCESS
-        } catch (ex: InvalidQRCodeExcpetion) {
+        } else {
             _scanStatus.value = ScanStatus.INVALID
         }
     }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/service/submission/SubmissionServiceTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/service/submission/SubmissionServiceTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..95728584cf11d5fc99dac735a44d9d0d9a3053f7
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/service/submission/SubmissionServiceTest.kt
@@ -0,0 +1,25 @@
+package de.rki.coronawarnapp.service.submission
+
+import org.hamcrest.CoreMatchers.equalTo
+import org.hamcrest.CoreMatchers.nullValue
+import org.hamcrest.MatcherAssert.assertThat
+import org.junit.Test
+
+class SubmissionServiceTest {
+
+    @Test
+    fun extractGUID() {
+        // valid
+        val guid = "123456-12345678-1234-4DA7-B166-B86D85475064"
+        assertThat(
+            SubmissionService.extractGUID("https://bs-sd.de/covid-19/?$guid"),
+            equalTo(guid)
+        )
+
+        // invalid
+        assertThat(
+            SubmissionService.extractGUID("https://no-guid-here"),
+            nullValue()
+        )
+    }
+}
\ No newline at end of file