diff --git a/Sources/ElixxirDAppsSDK/ContactFromIdentityProvider.swift b/Sources/ElixxirDAppsSDK/ContactFromIdentityProvider.swift
index 1643a0cdc4a6b2979d67f0112e4f5cc0398859da..292f217d8c28f556f6599e4a4bf4fbde6248081c 100644
--- a/Sources/ElixxirDAppsSDK/ContactFromIdentityProvider.swift
+++ b/Sources/ElixxirDAppsSDK/ContactFromIdentityProvider.swift
@@ -1,16 +1,21 @@
 import Bindings
 
 public struct ContactFromIdentityProvider {
-  public var get: (Data) throws -> Data
+  public var get: (Identity) throws -> Data
 
-  public func callAsFunction(identity: Data) throws -> Data {
+  public func callAsFunction(identity: Identity) throws -> Data {
     try get(identity)
   }
 }
 
 extension ContactFromIdentityProvider {
   public static func live(bindingsClient: BindingsClient) -> ContactFromIdentityProvider {
-    ContactFromIdentityProvider(get: bindingsClient.getContactFromIdentity(_:))
+    ContactFromIdentityProvider { identity in
+      let encoder = JSONEncoder()
+      let identityData = try encoder.encode(identity)
+      let contactData = try bindingsClient.getContactFromIdentity(identityData)
+      return contactData
+    }
   }
 }