diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 129896626ffb490e705bfcddac4b4d7f75c208b6..cd98c3012d49e867e5f4aa06cb8627e92b08e834 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -40,7 +40,7 @@ unit-test:
     - apk add bash
   script:
     - yarn
-    - yarn test --ci --reporters=default --reporters=jest-junit
+    - yarn test --ci --reporters=default --reporters=jest-junit --coverage
   coverage: "/All files[^|]*\\|[^|]*\\s+([\\d\\.]+)/"
   artifacts:
     when: always
diff --git a/__tests__/core/contractVerification.spec.js b/__tests__/core/contractVerification.spec.js
index 12eddf0f97b82756aa96b042deb7764ee9a185cd..33b2ab7d1950e406ccbc693e7c873e51e031da85 100644
--- a/__tests__/core/contractVerification.spec.js
+++ b/__tests__/core/contractVerification.spec.js
@@ -6,8 +6,10 @@ const mockSoapRequest = jest.fn()
 jest.mock('easy-soap-request', () => async () => mockSoapRequest())
 
 const mockParseContracts = jest.fn()
+const mockCheckContractExists = jest.fn()
 jest.mock('../../src/helpers/parsing', () => ({
   parseContracts: () => mockParseContracts(),
+  checkContractExists: () => mockCheckContractExists(),
 }))
 
 const responseMock = {
@@ -33,6 +35,7 @@ describe('verifyContract', () => {
           'Collecte de la courbe de charge au pas 30 min avec transmission quotidienne des données brutes en soutirage',
       },
     ])
+    mockCheckContractExists.mockReturnValueOnce(true)
 
     jest.spyOn(xml2js, 'parseStringPromise').mockResolvedValue(
       {
@@ -84,6 +87,7 @@ describe('verifyContract', () => {
       serviceSouscritLibelle:
         'Collecte de la courbe de charge au pas 30 min avec transmission quotidienne des données brutes en soutirage',
     })
+    mockCheckContractExists.mockReturnValueOnce(true)
 
     jest.spyOn(xml2js, 'parseStringPromise').mockResolvedValue(
       {
@@ -143,6 +147,7 @@ describe('verifyContract', () => {
           'Collecte de la courbe de charge au pas 30 min avec transmission quotidienne des données brutes en soutirage',
       },
     ])
+    mockCheckContractExists.mockReturnValueOnce(true)
 
     jest.spyOn(xml2js, 'parseStringPromise').mockResolvedValue(
       {
@@ -212,6 +217,7 @@ describe('verifyContract', () => {
         },
       },
     })
+    mockCheckContractExists.mockReturnValueOnce(true)
 
     try {
       await verifyContract(
@@ -226,4 +232,28 @@ describe('verifyContract', () => {
       expect(error).toBe(errors.LOGIN_FAILED)
     }
   })
+  it('should return NULL if no contract are found 🚫', async () => {
+    mockSoapRequest.mockResolvedValue(responseMock)
+    jest.spyOn(xml2js, 'parseStringPromise').mockResolvedValueOnce({
+      Envelope: {
+        Body: {
+          rechercherServicesSouscritsMesuresResponse: {},
+        },
+      },
+    })
+
+    try {
+      const serviceId = await verifyContract(
+        'http://test.com',
+        '111',
+        'login@log.com',
+        '1234567',
+        '1111111111111'
+      )
+      expect(serviceId).toBe(null)
+    } catch (error) {
+      expect(true).toBe(false)
+    }
+    mockParseContracts.mockRestore()
+  })
 })
diff --git a/src/core/contractVerification.js b/src/core/contractVerification.js
index abc62f013b4ea520e4cd92b80f1fc0cf6a2c435e..62168192b4ffc33682998e7b780f301caead23ef 100644
--- a/src/core/contractVerification.js
+++ b/src/core/contractVerification.js
@@ -1,7 +1,12 @@
 // @ts-check
 const { log, errors } = require('cozy-konnector-libs')
 const soapRequest = require('easy-soap-request')
-const { parseTags, parseValue, parseContracts } = require('../helpers/parsing')
+const {
+  parseTags,
+  parseValue,
+  parseContracts,
+  checkContractExists,
+} = require('../helpers/parsing')
 const { rechercherServicesSouscritsMesures } = require('../requests/sge')
 const xml2js = require('xml2js')
 const { contractState, contractLibelle } = require('./types/enum')
@@ -37,6 +42,11 @@ async function verifyContract(url, apiAuthKey, appLogin, contractId, pointId) {
   })
 
   try {
+    if (!checkContractExists(parsedReply)) {
+      log('error', 'no contract found')
+      return null
+    }
+
     const currentContracts = parseContracts(parsedReply)
     let currentContract = null
     if (Array.isArray(currentContracts)) {
diff --git a/src/helpers/parsing.js b/src/helpers/parsing.js
index a1f9e8ff3669f1823a252557cae16b5770c169a9..1d10a743d4072eb4de884392df68f5fa876e6a70 100644
--- a/src/helpers/parsing.js
+++ b/src/helpers/parsing.js
@@ -89,6 +89,18 @@ async function formateDataForDoctype(data) {
   })
 }
 
+/**
+ * Check if response contains contracts
+ * @param {string} parsedReply
+ * @return {boolean}
+ */
+function checkContractExists(parsedReply) {
+  const json = JSON.stringify(parsedReply)
+  return JSON.parse(json)['Envelope']['Body'][
+    'rechercherServicesSouscritsMesuresResponse'
+  ]['servicesSouscritsMesures']
+}
+
 /**
  * Format tag in order to be manipulated easly
  * @param {string} name
@@ -124,4 +136,5 @@ module.exports = {
   parseContracts,
   parseContractStartDate,
   parseServiceId,
+  checkContractExists,
 }