diff --git a/Sources/ElixxirDAppsSDK/ContactFactsSetter.swift b/Sources/ElixxirDAppsSDK/ContactFactsSetter.swift
index 0fca1df3f70537edc4e8fe62800d6ae093942f88..8dd0ed98e4ed1e8449b1df3c628c71798784de23 100644
--- a/Sources/ElixxirDAppsSDK/ContactFactsSetter.swift
+++ b/Sources/ElixxirDAppsSDK/ContactFactsSetter.swift
@@ -1,17 +1,22 @@
 import Bindings
 
 public struct ContactFactsSetter {
-  public var set: (Data, Data) throws -> Data
+  public var set: (Data, [Fact]) throws -> Data
 
-  public func callAsFunction(contact: Data, facts: Data) throws -> Data {
+  public func callAsFunction(
+    contact: Data,
+    facts: [Fact]
+  ) throws -> Data {
     try set(contact, facts)
   }
 }
 
 extension ContactFactsSetter {
   public static let live = ContactFactsSetter { contact, facts in
+    let encoder = JSONEncoder()
+    let factsData = try encoder.encode(facts)
     var error: NSError?
-    let updatedContact = BindingsSetFactsOnContact(contact, facts, &error)
+    let updatedContact = BindingsSetFactsOnContact(contact, factsData, &error)
     if let error = error {
       throw error
     }