diff --git a/app/src/main/java/io/xxlabs/messenger/backup/bindings/BindingsBackupMediator.kt b/app/src/main/java/io/xxlabs/messenger/backup/bindings/BindingsBackupMediator.kt
index 61b1c1b796720020d430a56ae095c496984629d5..38f43eeee8146215f0083247a034ac1e5ca0b853 100644
--- a/app/src/main/java/io/xxlabs/messenger/backup/bindings/BindingsBackupMediator.kt
+++ b/app/src/main/java/io/xxlabs/messenger/backup/bindings/BindingsBackupMediator.kt
@@ -30,7 +30,7 @@ class BindingsBackupMediator @Inject constructor(
     private val restoreHandler =
         BindingsRestoreHandler(preferences, daoRepo, messageReceivedListener, backupHandler)
 
-    override val crustApi = BindingsCrustMediator()
+    override val crustApi = BindingsCrustMediator(username = preferences.name)
 
     override fun initializeCrustIntegration(
         userDiscovery: UserDiscovery,
diff --git a/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/Crust.kt b/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/Crust.kt
index f38a04319b80bf88958ea99ec49830a9032872b4..56fbb1c074c621d0e5721464e835a1e9f1b7c664 100644
--- a/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/Crust.kt
+++ b/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/Crust.kt
@@ -86,6 +86,7 @@ class Crust private constructor(
     }
 
     private suspend fun fetchData() {
+
         cachedBackupData = crustApi.recoverBackup(username ?: preferences.name).getOrNull()?.let {
             AccountArchive(it)
         }?.also {
diff --git a/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/CrustDataSource.kt b/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/CrustDataSource.kt
index dab2ef4ad1d529bcc3829a6f9fc7e36f1006dc48..3cc47927351fd3c14599f6ce3d10f67cdd87616b 100644
--- a/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/CrustDataSource.kt
+++ b/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/CrustDataSource.kt
@@ -2,6 +2,7 @@ package io.xxlabs.messenger.backup.cloud.crust
 
 import bindings.Bindings
 import bindings.UserDiscovery
+import timber.log.Timber
 
 interface CrustDataSource {
     suspend fun uploadBackup(path: String): Result<ByteArray>
@@ -10,11 +11,13 @@ interface CrustDataSource {
 
 class BindingsCrustMediator(
     var udManager: UserDiscovery? = null,
-    var receptionRsaPrivateKey: ByteArray = byteArrayOf()
+    var receptionRsaPrivateKey: ByteArray = byteArrayOf(),
+    val username: String? = null
 ) : CrustDataSource {
 
     override suspend fun uploadBackup(path: String): Result<ByteArray> {
         return try {
+            updateUsernameCache()
             udManager?.let {
                 val uploadSuccessReport = Bindings.uploadBackup(path, udManager, receptionRsaPrivateKey)
                 Result.success(uploadSuccessReport)
@@ -24,6 +27,19 @@ class BindingsCrustMediator(
         }
     }
 
+    private fun updateUsernameCache() {
+        udManager?.run {
+            try {
+                if (username.isNotBlank()) {
+                    storeUsername(username)
+                    Timber.d("Successfully cached username '$username' in UserDiscovery.")
+                }
+            } catch (e: Exception) {
+                Timber.d("Failed to cache username '$username' in UserDiscovery")
+            }
+        }
+    }
+
     override suspend fun recoverBackup(username: String): Result<ByteArray> {
         return try {
             val backupData = Bindings.recoverBackup(username)