diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerStartFileTransfer.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerStartFileTransfer.swift
index 4a8e460d5025e3ebbe1a430a8e3c68455306d4f2..2ce92adfa7c193c92cb32b735a893f2e306aef6f 100644
--- a/Sources/XXMessengerClient/Messenger/Functions/MessengerStartFileTransfer.swift
+++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerStartFileTransfer.swift
@@ -25,9 +25,7 @@ extension MessengerStartFileTransfer {
           e2eFileTransferParamsJSON: env.getE2EFileTransferParams(),
           fileTransferParamsJSON: env.getFileTransferParams()
         ),
-        callback: ReceiveFileCallback { result in
-          // TODO:
-        }
+        callback: env.receiveFileCallbacksRegistry.registered()
       )
       env.fileTransfer.set(fileTransfer)
     }
diff --git a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift
index 30f3b22ecc826a7558eea6249d79240ab92af529..dcb706d46dc6761f6a6c09414fdf6a3695fdd0f1 100644
--- a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift
+++ b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift
@@ -33,6 +33,7 @@ public struct MessengerEnvironment {
   public var newOrLoadUd: NewOrLoadUd
   public var newUdManagerFromBackup: NewUdManagerFromBackup
   public var passwordStorage: PasswordStorage
+  public var receiveFileCallbacksRegistry: ReceiveFileCallbacksRegistry
   public var registerForNotifications: RegisterForNotifications
   public var registerLogWriter: RegisterLogWriter
   public var resumeBackup: ResumeBackup
@@ -83,6 +84,7 @@ extension MessengerEnvironment {
       newOrLoadUd: .live,
       newUdManagerFromBackup: .live,
       passwordStorage: .keychain,
+      receiveFileCallbacksRegistry: .live(),
       registerForNotifications: .live,
       registerLogWriter: .live,
       resumeBackup: .live,
@@ -128,6 +130,7 @@ extension MessengerEnvironment {
     newOrLoadUd: .unimplemented,
     newUdManagerFromBackup: .unimplemented,
     passwordStorage: .unimplemented,
+    receiveFileCallbacksRegistry: .unimplemented,
     registerForNotifications: .unimplemented,
     registerLogWriter: .unimplemented,
     resumeBackup: .unimplemented,
diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerStartFileTransferTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerStartFileTransferTests.swift
index 5164700fce1720d1f1a0574deaf0d6f0299aa51d..f0da2047a5f18d3aae27ecb68c74edafe23d3719 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerStartFileTransferTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerStartFileTransferTests.swift
@@ -12,6 +12,7 @@ final class MessengerStartFileTransferTests: XCTestCase {
     var didInitFileTransfer: [InitFileTransfer.Params] = []
     var receiveFileCallback: ReceiveFileCallback?
     var didSetFileTransfer: [FileTransfer?] = []
+    var didReceiveFile: [ReceiveFileCallback.Result] = []
 
     var env: MessengerEnvironment = .unimplemented
     env.e2e.get = {
@@ -33,6 +34,11 @@ final class MessengerStartFileTransferTests: XCTestCase {
     env.fileTransfer.set = {
       didSetFileTransfer.append($0)
     }
+    env.receiveFileCallbacksRegistry.registered = {
+      ReceiveFileCallback { result in
+        didReceiveFile.append(result)
+      }
+    }
 
     let start: MessengerStartFileTransfer = .live(env)
 
@@ -45,6 +51,17 @@ final class MessengerStartFileTransferTests: XCTestCase {
     )])
     XCTAssertNotNil(receiveFileCallback)
     XCTAssertNoDifference(didSetFileTransfer.map { $0 != nil }, [true])
+
+    let error = NSError(domain: "test", code: 7)
+    receiveFileCallback?.handle(.success(.stub(1)))
+    receiveFileCallback?.handle(.failure(error))
+    receiveFileCallback?.handle(.success(.stub(2)))
+
+    XCTAssertNoDifference(didReceiveFile, [
+      .success(.stub(1)),
+      .failure(error),
+      .success(.stub(2)),
+    ])
   }
 
   func testStartWhenNotConnected() {
@@ -60,3 +77,4 @@ final class MessengerStartFileTransferTests: XCTestCase {
     }
   }
 }
+