public async Task CreateAsync(string indexName, decimal amount, string comment, string walletId,
                                      string clientId, string userId, bool isDirect)
        {
            IndexPrice indexPrice = await _indexPriceService.GetByIndexAsync(indexName);

            if (indexPrice == null)
            {
                throw new InvalidOperationException("Index price not found");
            }

            Settlement settlement = await CreateSettlementAsync(indexName, amount, comment, walletId, clientId, userId,
                                                                isDirect, indexPrice);

            await ValidateBalanceAsync(settlement);

            await _settlementRepository.InsertAsync(settlement);

            _log.InfoWithDetails("Settlement created", settlement);
        }