diff --git a/services/web/app/src/Features/User/UserEmailsController.js b/services/web/app/src/Features/User/UserEmailsController.js
index 4a93b92a3e..32f64023e8 100644
--- a/services/web/app/src/Features/User/UserEmailsController.js
+++ b/services/web/app/src/Features/User/UserEmailsController.js
@@ -273,6 +273,14 @@ const _checkConfirmationCode =
})
}
+ if (error.name === 'InvalidInstitutionalEmailError') {
+ return res.status(422).json({
+ message: {
+ key: 'email_does_not_belong_to_university',
+ },
+ })
+ }
+
logger.err({ error }, 'failed to check confirmation code')
return res.status(500).json({
diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json
index 7bab4594dd..299f5d97d9 100644
--- a/services/web/frontend/extracted-translations.json
+++ b/services/web/frontend/extracted-translations.json
@@ -522,6 +522,7 @@
"email_attribute": "",
"email_confirmed_onboarding": "",
"email_confirmed_onboarding_message": "",
+ "email_does_not_belong_to_university": "",
"email_limit_reached": "",
"email_link_expired": "",
"email_must_be_linked_to_institution": "",
diff --git a/services/web/frontend/js/features/settings/components/emails/confirm-email-form.tsx b/services/web/frontend/js/features/settings/components/emails/confirm-email-form.tsx
index 49b114d9c2..0d2fb55f0b 100644
--- a/services/web/frontend/js/features/settings/components/emails/confirm-email-form.tsx
+++ b/services/web/frontend/js/features/settings/components/emails/confirm-email-form.tsx
@@ -307,6 +307,9 @@ function ErrorMessage({ error }: { error: string }) {
case 'email_already_registered':
return {t('email_already_registered')}
+ case 'email_does_not_belong_to_university':
+ return {t('email_does_not_belong_to_university')}
+
case 'too_many_confirm_code_resend_attempts':
return {t('too_many_confirm_code_resend_attempts')}