public async Task <IActionResult> GetByCustomerAsync()
        {
            var customerId = _requestContext.UserId;

            var walletResult = await _walletOperationsService.GetCustomerWalletAsync(customerId);

            switch (walletResult.Error)
            {
            case WalletsErrorCodes.None:

                var linkedWalletTask = _publicWalletLinkingService.GetLinkedWalletAddressAsync(customerId);

                var tokensStatisticsTask =
                    _operationsHistoryClient.StatisticsApi.GetTokensStatisticsForCustomerAsync(
                        new TokensStatisticsForCustomerRequest {
                    CustomerId = customerId
                });

                await Task.WhenAll(linkedWalletTask, tokensStatisticsTask);

                Money18?linkedWalletBalance = null;

                if (linkedWalletTask.Result.Status == PublicAddressStatus.Linked)
                {
                    var balance =
                        await _ethereumBridgeClient.Wallets.GetBalanceAsync(linkedWalletTask.Result.PublicAddress);

                    linkedWalletBalance = balance.Amount;
                }

                var response = new WalletResponseModel
                {
                    Balance                    = walletResult.Balance.ToDisplayString(),
                    ExternalBalance            = linkedWalletBalance?.ToDisplayString(),
                    AssetSymbol                = walletResult.AssetSymbol,
                    TotalEarned                = tokensStatisticsTask.Result.EarnedAmount.ToDisplayString(),
                    TotalSpent                 = tokensStatisticsTask.Result.BurnedAmount.ToDisplayString(),
                    IsWalletBlocked            = walletResult.IsWalletBlocked,
                    PrivateWalletAddress       = walletResult.Address,
                    PublicWalletAddress        = linkedWalletTask.Result.PublicAddress,
                    PublicAddressLinkingStatus = linkedWalletTask.Result.Status.ToLinkingStatus(),
                    StakedBalance              = walletResult.StakedBalance.ToDisplayString(),
                    TransitAccountAddress      = _settingsService.GetTransitAccountAddress(),
                };
                return(Ok(new List <WalletResponseModel> {
                    response
                }));

            case WalletsErrorCodes.InvalidCustomerId:
                throw LykkeApiErrorException.BadRequest(ApiErrorCodes.Service.InvalidCustomerId);

            case WalletsErrorCodes.CustomerWalletMissing:
                throw LykkeApiErrorException.BadRequest(ApiErrorCodes.Service.CustomerWalletMissing);

            default:
                throw new InvalidOperationException(
                          $"Unexpected error during Transfer for {_requestContext.UserId} - {walletResult.Error}");
            }
        }