diff --git a/src/STS/Utils/MergeUtil.cs b/src/STS/Utils/MergeUtil.cs
index 19ec9f170a7977546a4ce739f142f9454f3a880c..cbe4f048d343d4f02ef634c9d128f41d5379ddee 100644
--- a/src/STS/Utils/MergeUtil.cs
+++ b/src/STS/Utils/MergeUtil.cs
@@ -16,6 +16,7 @@ namespace Coscine.Api.STS.Utils
         private readonly ResourceModel _resourceModel;
         private readonly RoleModel _roleModel;
         private readonly TOSModel _tosModel;
+        private readonly ApiTokenModel _apiTokenModel;
         private readonly UserModel _userModel;
         private readonly UserDisciplineModel _userDisciplineModel;
 
@@ -33,6 +34,7 @@ namespace Coscine.Api.STS.Utils
             _resourceModel = new ResourceModel();
             _roleModel = new RoleModel();
             _tosModel = new TOSModel();
+            _apiTokenModel = new ApiTokenModel();
             _userModel = new UserModel();
             _userDisciplineModel = new UserDisciplineModel();
 
@@ -45,6 +47,7 @@ namespace Coscine.Api.STS.Utils
             MergeUserDiscipline(mergeIntoUser, mergeFromUser);
             MergeResourceOwner(mergeIntoUser, mergeFromUser);
             MergeTOSAccepted(mergeIntoUser, mergeFromUser);
+            MergeApiTokens(mergeIntoUser, mergeFromUser);
             MergeUserProperties(mergeIntoUser, mergeFromUser);
             // ExternalId gets merged last, in case something goes wrong
             MergeExternalId(mergeIntoUser, mergeFromUser);
@@ -169,6 +172,15 @@ namespace Coscine.Api.STS.Utils
             }
         }
 
+        private void MergeApiTokens(User mergeIntoUser, User mergeFromUser)
+        {
+            foreach (var apiToken in _apiTokenModel.GetAllWhere((entry) => entry.UserId == mergeFromUser.Id))
+            {
+                apiToken.UserId = mergeIntoUser.Id;
+                _apiTokenModel.Update(apiToken);
+            }
+        }
+
         private void MergeUserProperties(User mergeIntoUser, User mergeFromUser)
         {
             if (string.IsNullOrEmpty(mergeIntoUser.EmailAddress) && !string.IsNullOrEmpty(mergeFromUser.EmailAddress))