diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index 944bf6743e4244b63e6207b0b8953048fa3a9646..23d3a732bf99bea475795d39d0013911aee0ec2c 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -1758,6 +1758,76 @@ const connection = Penpal.connectToParent({
 
       return encodeResponse("200", response.data, "Document created");
     },
+    getVcardWithQrCode: async (passportUUID, QRCodeContent = null) =>{
+      //TODO: IMPLEMENT QR CODE backend method needed
+      const authenticationPublicKey = localStorage.getItem(
+        "authenticatedIdentity"
+      );
+
+      if (
+        !authenticationPublicKey ||
+        !window.loadedIdentities[authenticationPublicKey] ||
+        !extendPinCodeTtl(authenticationPublicKey)
+      ) {
+        return encodeResponse("400", "", "Identity not authenticated");
+      }
+
+      let vCardImageData;
+      let vCardImageClaimValue;
+
+      const vCardImageClaimName = "vCardImage";
+      const defaultTagName = "notag";
+
+      const vCardClaimResponse = await executeRestfulFunction(
+        "private",
+        window.viamApi,
+        window.viamApi.entityGetClaim,
+        null,
+        vCardImageClaimName,
+        defaultTagName,
+        passportUUID
+      );
+
+      if (vCardClaimResponse.code === "200") {
+        vCardImageClaimValue = vCardClaimResponse.data;
+      }
+
+      if (
+        vCardImageClaimValue &&
+        "state" in vCardImageClaimValue &&
+        vCardImageClaimValue.state === "disabled"
+      ) {
+        //No image data if the user have disabled vCard for this profile.
+        vCardImageData = null;
+
+        // vCardImageData = new ImageData({
+        //   contentType: "image/png",
+        //   contentBase64:
+        //     "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=" //1x1px transparent pixel
+        // });
+      } else {
+        const vCardImageResponse = await executeRestfulFunction(
+          "private",
+          window.viamApi,
+          window.viamApi.passportGetVCardImage,
+          null,
+          passportUUID
+        );
+
+        if (vCardImageResponse.code !== "200") {
+          return encodeResponse("400", "", vCardImageResponse.status);
+        }
+        vCardImageData = new ImageData(vCardImageResponse.data.Image);
+        if (vCardImageData.contentType !== "image/png") {
+          return encodeResponse(
+            "400",
+            "",
+            "Content type of vCard mmust be 'image/png'"
+          );
+        }
+      }
+      return  encodeResponse("200",vCardImageData, 'vCard got');
+    },
     documentPutDocument: async (
       passportUUID,
       resourceid,