diff --git a/frontend/public/locales/en/common.json b/frontend/public/locales/en/common.json
index fec1141ff664bffd008f33511ed87557d5d802bc..83befb50f8e285cdf949f7dedb250cc52a65dae4 100644
--- a/frontend/public/locales/en/common.json
+++ b/frontend/public/locales/en/common.json
@@ -41,7 +41,8 @@
   },
   "endRoleDialog": {
     "title": "End role",
-    "text": "Ending the role will cause the guest to lose access if there are no other active roles registered. Are you sure you want to end the role?"
+    "text": "Ending the role will cause the guest to lose access if there are no other active roles registered. Are you sure you want to end the role?",
+    "endRole": "Ended role {{role}}"
   },
   "guestInfo": {
     "contactInfo": "Contact information",
@@ -210,6 +211,7 @@
     "guestRegistrationFailed": "Failed to register your data",
     "partialSubmitSuccess": "Invite creation partial successful",
     "emailUpdateFailed": "E-mail update failed",
+    "badEndDate": "Cannot end a role before it has started",
     "codes": {
       "invalid_invite": "Invalid invite",
       "invite_expired": "Invite has expired",
diff --git a/frontend/public/locales/nb/common.json b/frontend/public/locales/nb/common.json
index bba31d684415b62dd6c22712717b980664f37d34..540be666fe50ba802dc53044f1b6979a04351288 100644
--- a/frontend/public/locales/nb/common.json
+++ b/frontend/public/locales/nb/common.json
@@ -41,7 +41,8 @@
   },
   "endRoleDialog": {
     "title": "Avslutt rolle",
-    "text": "Dersom du avslutter rollen vil gjesten miste tilgang om det ikke eksisterer andre aktive roller. Vil du avslutte rollen?"
+    "text": "Dersom du avslutter rollen vil gjesten miste tilgang om det ikke eksisterer andre aktive roller. Vil du avslutte rollen?",
+    "endRole": "Avsluttet rolle {{role}}"
   },
   "guestInfo": {
     "contactInfo": "Kontaktinformasjon",
@@ -210,6 +211,7 @@
     "guestRegistrationFailed": "Klarte ikke å registrere dataene dine",
     "partialSubmitSuccess": "Opprettelse av invitasjon delvis vellykket",
     "emailUpdateFailed": "Oppdatering av e-post feilet",
+    "badEndDate": "Kan ikke avslutte en rolle før den har startet",
     "codes": {
       "invalid_invite": "Ugyldig invitasjon",
       "invite_expired": "Invitasjonen har utløpt",
diff --git a/frontend/public/locales/nn/common.json b/frontend/public/locales/nn/common.json
index cff78a450049509d086d97c61bad6ef9b7373bca..b7c4e6e8836c16ba84fc48409f34a95fa7c9d3e4 100644
--- a/frontend/public/locales/nn/common.json
+++ b/frontend/public/locales/nn/common.json
@@ -41,7 +41,8 @@
   },
   "endRoleDialog": {
     "title": "Avslutt rolle",
-    "text": "Dersom du avsluttar rolla vil gjesten miste tilgang om det ikkje eksisterer andre aktive roller. Vil du avslutte rolla?"
+    "text": "Dersom du avsluttar rolla vil gjesten miste tilgang om det ikkje eksisterer andre aktive roller. Vil du avslutte rolla?",
+    "endRole": "Avslutta rolle {{role}}"
   },
   "guestInfo": {
     "contactInfo": "Kontaktinformasjon",
@@ -210,6 +211,7 @@
     "guestRegistrationFailed": "Klarte ikkje å registrere informasjonen din",
     "partialSubmitSuccess": "Oppretting av invitasjon delvis vellukka",
     "emailUpdateFailed": "Oppdatering av e-post feila",
+    "badEndDate": "Kan ikkje avslutte ei rolle før ho har starta",
     "codes": {
       "invalid_invite": "Ugyldig invitasjon",
       "invite_expired": "Invitasjonen har gått ut",
diff --git a/frontend/src/routes/sponsor/guest/guestInfo/index.tsx b/frontend/src/routes/sponsor/guest/guestInfo/index.tsx
index 18d304c16a15272bbeae8e426c9c08b8552b28e4..f62f68485ded9c7b2c6df71e35550182340f0517 100644
--- a/frontend/src/routes/sponsor/guest/guestInfo/index.tsx
+++ b/frontend/src/routes/sponsor/guest/guestInfo/index.tsx
@@ -14,7 +14,7 @@ import {
 } from '@mui/material'
 import { Controller, SubmitHandler, useForm } from 'react-hook-form'
 import { useTranslation } from 'react-i18next'
-import { Link, useNavigate, useParams } from 'react-router-dom'
+import { Link, useNavigate, useParams, useLocation } from 'react-router-dom'
 
 import ServerErrorReport, {
   ServerErrorReportData,
@@ -87,6 +87,10 @@ type Email = {
   email: string
 }
 
+interface LocationState {
+  cancelledRoleName: string
+}
+
 export default function GuestInfo({
   guest,
   updateEmail,
@@ -97,6 +101,9 @@ export default function GuestInfo({
   const { pid } = useParams<GuestInfoParams>()
   const [t] = useTranslation(['common'])
   const navigate = useNavigate()
+  const location = useLocation()
+  const state = location.state as LocationState
+  const cancelledRoleName = state?.cancelledRoleName || ''
   const [confirmCancelDialogOpen, setConfirmCancelDialogOpen] = useState(false)
   const [showEmailSent, setShowEmailSent] = useState<Boolean>(false)
   const [emailUpdateError, setEmailUpdateError] =
@@ -379,6 +386,14 @@ export default function GuestInfo({
       <Typography sx={{ marginBottom: '1rem' }} variant="body1">
         {t('guestInfo.roleInfoBody')}
       </Typography>
+      {cancelledRoleName && (
+        <Alert
+          sx={{ fontSize: '1rem', marginTop: '1rem', marginBottom: '1rem' }}
+          severity="success"
+        >
+          {t('endRoleDialog.endRole', { role: cancelledRoleName })}
+        </Alert>
+      )}
       <TableContainer>
         <Table sx={{ minWidth: 650 }} aria-label="simple table">
           <TableHead>
diff --git a/frontend/src/routes/sponsor/guest/guestRoleInfo/index.tsx b/frontend/src/routes/sponsor/guest/guestRoleInfo/index.tsx
index acc8ed308fcc5289aed5f37a911a80d7a5e85630..8d5fe0bc8832b073f0e014812f25fa9c0c8adaff 100644
--- a/frontend/src/routes/sponsor/guest/guestRoleInfo/index.tsx
+++ b/frontend/src/routes/sponsor/guest/guestRoleInfo/index.tsx
@@ -110,12 +110,13 @@ export default function GuestRoleInfo({
 }: GuestRoleInfoProps) {
   const { pid, id } = useParams<GuestRoleInfoParams>()
   const { ous } = useOus()
-  const [t] = useTranslation('common')
+  const [t, i18n] = useTranslation('common')
   const { displayContactAtUnit, displayComment } = useFeatureContext()
   const navigate = useNavigate()
   const [showPeriodChange, setShowPeriodChange] = useState<Boolean>(false)
   const [showPeriodChangeFailed, setShowPeriodChangeFailed] =
     useState<Boolean>(false)
+  const [badEndDate, setBadEndDate] = useState<Boolean>(false)
   const [role, setRole] = useState<Role>({
     id: '',
     name_nb: '',
@@ -140,10 +141,19 @@ export default function GuestRoleInfo({
     // If the role was set to end today, the change will not be active
     // until the next date since the end date is inclusive
     const newEndDate = addDays(-1)(today)
-    role.end_date = newEndDate
-    endPeriodPost(role_id, { end_date: newEndDate })
-    // Go back to guest overview page
-    navigate(`/sponsor/guest/${guest.pid}`)
+    if (role.start_date !== undefined && role.start_date > newEndDate) {
+      setBadEndDate(true)
+    } else {
+      role.end_date = newEndDate
+      endPeriodPost(role_id, { end_date: newEndDate })
+      // Go back to guest overview page
+      navigate(`/sponsor/guest/${guest.pid}`, {
+        state: {
+          cancelledRoleName:
+            i18n.language === 'en' ? role.name_en : role.name_nb,
+        },
+      })
+    }
   }
 
   const {
@@ -240,6 +250,14 @@ export default function GuestRoleInfo({
           {t('error.changePeriodFailed')}
         </Alert>
       )}
+      {badEndDate && (
+        <Alert
+          sx={{ fontSize: '1rem', marginTop: '1rem', marginBottom: '1rem' }}
+          severity="error"
+        >
+          {t('error.badEndDate')}
+        </Alert>
+      )}
       <form onSubmit={onSubmit}>
         <TableContainer>
           <Table sx={{ minWidth: 650 }} aria-label="simple table">