diff --git a/src/core/types/types.js b/src/core/types/types.js
index 6c5804f4ff2db03e76899f07a0b518a8d93862dc..c32a10c67c3080c45937e1a7a3f8eaecfd783437 100644
--- a/src/core/types/types.js
+++ b/src/core/types/types.js
@@ -37,6 +37,7 @@
  * @property {string} address
  * @property {string} postalCode
  * @property {string} inseeCode
+ * @property {string} endDate
  * @property {number} [serviceId]
  * @property {number} [ID]
  */
diff --git a/src/core/verifyUserIdentity.js b/src/core/verifyUserIdentity.js
index 973adc7fe4ccf200a6682f5f8e2937f30b0017b7..22a13c3ea6a06471745945b4e4a2e3bd2a8773fe 100644
--- a/src/core/verifyUserIdentity.js
+++ b/src/core/verifyUserIdentity.js
@@ -9,13 +9,15 @@ const { getInseeCode } = require('../requests/insee')
  * @param {string} baseUrl
  * @param {string} apiAuthKey
  * @param {string} loginUtilisateur
+ * @param {boolean} isAlternateStart
  * @returns {Promise<User>}
  */
 async function verifyUserIdentity(
   fields,
   baseUrl,
   apiAuthKey,
-  loginUtilisateur
+  loginUtilisateur,
+  isAlternateStart = false
 ) {
   const inseeCode = await getInseeCode(fields.postalCode, fields.city)
 
@@ -31,7 +33,11 @@ async function verifyUserIdentity(
 
   if (fields.pointId != pdl) {
     log('error', 'PointId does not match')
-    throw errors.LOGIN_FAILED
+    if (isAlternateStart) {
+      throw errors.TERMS_VERSION_MISMATCH
+    } else {
+      throw errors.LOGIN_FAILED
+    }
   }
 
   return {
diff --git a/src/index.js b/src/index.js
index b4ff9b8f884d59e3d91d921231f3421b8a611e0f..b28010b8d62dccad19af8a167073fde13dd39363 100644
--- a/src/index.js
+++ b/src/index.js
@@ -175,33 +175,37 @@ async function start(fields, cozyParameters) {
       boToken,
       accountData.data.consentId
     )
-    const user = await verifyUserIdentity(fields, baseUrl, apiAuthKey, sgeLogin)
+    const user = await verifyUserIdentity(
+      fields,
+      baseUrl,
+      apiAuthKey,
+      sgeLogin,
+      true
+    )
 
+    if (!userConsent) {
+      log('error', 'No user consent found')
+      throw errors.VENDOR_DOWN
+    }
+
+    const consentEndDate = Date.parse(userConsent.endDate)
+    const today = Date.now()
     if (
       user.lastname.toLocaleUpperCase() !==
         userConsent.lastname.toLocaleUpperCase() ||
-      !user
+      !user ||
+      consentEndDate < today
     ) {
-      log('error', `Invalid or not found consent for user`)
-      if (userConsent.serviceId) {
-        await terminateContract(
-          baseUrl,
-          apiAuthKey,
-          sgeLogin,
-          contractId,
-          pointId,
-          userConsent.serviceId
-        )
-        await deleteBoConsent(
-          boBaseUrl,
-          boToken,
-          userConsent.ID ? userConsent.ID : 0
-        )
-      } else {
-        log('error', `No service id retrieved from BO`)
-        throw errors.VENDOR_DOWN
-      }
-      throw errors.TERMS_VERSION_MISMATCH
+      await deleteConsent(
+        userConsent,
+        baseUrl,
+        apiAuthKey,
+        sgeLogin,
+        contractId,
+        pointId,
+        boBaseUrl,
+        boToken
+      )
     }
   }
   log('info', 'Successfully logged in')
@@ -209,6 +213,49 @@ async function start(fields, cozyParameters) {
   await gatherData(baseUrl, apiAuthKey, sgeLogin, pointId)
 }
 
+/**
+ * Delete User Consent
+ * @param {Consent} userConsent
+ * @param {string} baseUrl
+ * @param {string} apiAuthKey
+ * @param {string} sgeLogin
+ * @param {string} contractId
+ * @param {number} pointId
+ * @param {string} boBaseUrl
+ * @param {string} boToken
+ */
+async function deleteConsent(
+  userConsent,
+  baseUrl,
+  apiAuthKey,
+  sgeLogin,
+  contractId,
+  pointId,
+  boBaseUrl,
+  boToken
+) {
+  log('error', `Invalid or not found consent for user`)
+  if (userConsent.serviceId) {
+    await terminateContract(
+      baseUrl,
+      apiAuthKey,
+      sgeLogin,
+      contractId,
+      pointId,
+      userConsent.serviceId
+    )
+    await deleteBoConsent(
+      boBaseUrl,
+      boToken,
+      userConsent.ID ? userConsent.ID : 0
+    )
+  } else {
+    log('error', `No service id retrieved from BO`)
+    throw errors.VENDOR_DOWN
+  }
+  throw errors.TERMS_VERSION_MISMATCH
+}
+
 /**
  * Main method for gathering data
  * @param {string} baseUrl