diff --git a/Sources/ElixxirDAppsSDK/Client.swift b/Sources/ElixxirDAppsSDK/Client.swift
index 30ac66be7214ee54eb01f8d4d9fd18a179daadd0..76832a86c55fb5cff6080a37320f301df55d65bd 100644
--- a/Sources/ElixxirDAppsSDK/Client.swift
+++ b/Sources/ElixxirDAppsSDK/Client.swift
@@ -1,6 +1,7 @@
 import Bindings
 
 public struct Client {
+  public var getId: ClientIdProvider
   public var networkFollower: NetworkFollower
   public var waitForNetwork: NetworkWaiter
   public var isNetworkHealthy: NetworkHealthProvider
@@ -14,6 +15,7 @@ public struct Client {
 extension Client {
   public static func live(bindingsClient: BindingsClient) -> Client {
     Client(
+      getId: .live(bindingsClient: bindingsClient),
       networkFollower: .live(bindingsClient: bindingsClient),
       waitForNetwork: .live(bindingsClient: bindingsClient),
       isNetworkHealthy: .live(bindingsClient: bindingsClient),
@@ -29,6 +31,7 @@ extension Client {
 #if DEBUG
 extension Client {
   public static let failing = Client(
+    getId: .failing,
     networkFollower: .failing,
     waitForNetwork: .failing,
     isNetworkHealthy: .failing,
diff --git a/Sources/ElixxirDAppsSDK/ClientIdProvider.swift b/Sources/ElixxirDAppsSDK/ClientIdProvider.swift
new file mode 100644
index 0000000000000000000000000000000000000000..259a64b2510afcae200c7e49e8613bc3858fc7ca
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/ClientIdProvider.swift
@@ -0,0 +1,23 @@
+import Bindings
+
+public struct ClientIdProvider {
+  public var get: () -> Int
+
+  public func callAsFunction() -> Int {
+    get()
+  }
+}
+
+extension ClientIdProvider {
+  public static func live(bindingsClient: BindingsClient) -> ClientIdProvider {
+    ClientIdProvider(get: bindingsClient.getID)
+  }
+}
+
+#if DEBUG
+extension ClientIdProvider {
+  public static let failing = ClientIdProvider {
+    fatalError("Not implemented")
+  }
+}
+#endif