diff --git a/Sources/ElixxirDAppsSDK/GroupChat/Functors/GroupChatMakeGroup.swift b/Sources/ElixxirDAppsSDK/GroupChat/Functors/GroupChatMakeGroup.swift
new file mode 100644
index 0000000000000000000000000000000000000000..04a57502665e567b8038cf07bb909f2596e2f34f
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/GroupChat/Functors/GroupChatMakeGroup.swift
@@ -0,0 +1,33 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct GroupChatMakeGroup {
+  public var run: ([Data], Data?, Data?) throws -> GroupReport
+
+  public func callAsFunction(
+    membership: [Data],
+    message: Data?,
+    name: Data?
+  ) throws -> GroupReport {
+    try run(membership, message, name)
+  }
+}
+
+extension GroupChatMakeGroup {
+  public static func live(_ bindingsGroupChat: BindingsGroupChat) -> GroupChatMakeGroup {
+    GroupChatMakeGroup { membership, message, name in
+      let reportData = try bindingsGroupChat.makeGroup(
+        try JSONEncoder().encode(membership),
+        message: message,
+        name: name
+      )
+      return try GroupReport.decode(reportData)
+    }
+  }
+}
+
+extension GroupChatMakeGroup {
+  public static let unimplemented = GroupChatMakeGroup(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/GroupChat/GroupChat.swift b/Sources/ElixxirDAppsSDK/GroupChat/GroupChat.swift
index 10f24edf28af41e468c5e0573a9cb12c01ac960e..ef3167cefba5f72b8dd7b4ea7da92762f2413394 100644
--- a/Sources/ElixxirDAppsSDK/GroupChat/GroupChat.swift
+++ b/Sources/ElixxirDAppsSDK/GroupChat/GroupChat.swift
@@ -3,6 +3,7 @@ import Bindings
 public struct GroupChat {
   public var getGroup: GroupChatGetGroup
   public var getGroups: GroupChatGetGroups
+  public var makeGroup: GroupChatMakeGroup
   public var joinGroup: GroupChatJoinGroup
   public var leaveGroup: GroupChatLeaveGroup
   public var numGroups: GroupChatNumGroups
@@ -15,6 +16,7 @@ extension GroupChat {
     GroupChat(
       getGroup: .live(bindingsGroupChat),
       getGroups: .live(bindingsGroupChat),
+      makeGroup: .live(bindingsGroupChat),
       joinGroup: .live(bindingsGroupChat),
       leaveGroup: .live(bindingsGroupChat),
       numGroups: .live(bindingsGroupChat),
@@ -28,6 +30,7 @@ extension GroupChat {
   public static let unimplemented = GroupChat(
     getGroup: .unimplemented,
     getGroups: .unimplemented,
+    makeGroup: .unimplemented,
     joinGroup: .unimplemented,
     leaveGroup: .unimplemented,
     numGroups: .unimplemented,