GetPositions returns holdings of securities and cash positions on accounts. Each entry (GetPositionResponseRow) in the answer contains identifier for the Account and Asset, ie cash or instrument.

Each field is explained in the definition of GetPositionResponseRow below:


Filter inputs

Name

Type

Description

Mandatory

Available from version

BalanceDate

DateTime?

Balance date

Yes


DisplayCurrencyCode

String

ISO-code for DisplayCurrency. For explanation look at the fields in the table for the response rows.

Yes


AccountDimensionKey 

String

"T" for traded, "S" for settled and "A" for accounting

Yes


Accounts 

Guid[]

Filter by array of accounts, to show holdings.



AccountTypeKeys 

String[]

Filter by array of AccountTypeKeys



AccountNo 

String

Filter by account number 



AccountOwner

Guid?

Filter by account owner



Assets 

Guid[] 

Filter by array of assets (Cash or Instrument)



Asset 

Guid?

Filter by single asset (Cash or Instrument)



AssetTypeKeys

string[]

Filter by array of asset type keys (Cash or GenericInstrument)



InstrumentTypes 

int[]

Filter by array of instrument types



Response rows (Array)

Name

Type

Description

Available from version

Account 

Guid

The account id


Asset 

Guid

The id of the cash or instrument


AssetType

String

Cash means currency assets like SEK, EUR etc. while GenericInstrument means securities like Stocks, Bonds etc. The type of asset can then be found by sending the Asset GUID as the AssetID to GetInstruments


BalanceDate

DateTime

Balance date


Amount 

Decimal 

Size of the amount (amount for cash and number of shares of the instrument)


AccountTypeKey

String

Type of account, i.e. "HoldingAccount".


AcquisitionValue 

Double 

Acquisition value of the position, in the instruments currency.


AcquisitionValueAccountCurrency 

Double 

Acquisition value of the account currency.


Opened 

DateTime

Time when the position was created


AccountDimensionKey 

String

Account dimension, "T"=trade balance, "S" = settle balance, "A"=booked balance


Price 

Double 

Price of the asset. Cash is always 1.0. If 'BalanceDate' is todays date will current price be used (yesterday's closing price) or else the closing price for 'BalanceDate' or if the price is missing from BalanceDate, previous closing price.


FxRate 

Double 

The exchange rate of the instrument/cash


BaseRate 

Double 

The exchange rate of the accounts base rate.


DisplayCurrencyCode 

String 

Display currency


DisplayRate 

Double 

Exchange rate for the base rate


MarketValue

Double 

Market value of the instrument /cash currency. For cash it´s always the same as the amount.


MarketValueAccountCurrency

Double 

Market value in the account currency


MarketValueDisplayCurrency 

Double 

Market value in the display currency


PreviousMarketValue 

Double 

Value of the position of the previous closing price.


PreviousMarketValueDisplayCurrency 

Double 

Value of the position of the previous closing price (display currency)


MarketValueChange

Double 

Market value change between the previous closing price and the last closing price.


AcquisitionValueDisplayCurrency 

Double 

Acquisition value in display currency


AcquisitionPrice

Double 

AcquisitionPrice


AcquisitionPriceAccountCurrency 

Double 

Acquisition price in the base rate of the account 


AcquisitionPriceDisplayCurrency

Double 

Acquisition price in the base rate


ReturnValue 

Double 

Return Value, acquisition price


ReturnValueAccountCurrency 

Double 

Return value in the base rate of the account 


ReturnValueDisplayCurrency 

Double 

Return value in the display currancy.


ReturnPercentage 

Double 

Return value divided with the acquisition price


ReturnPercentageAccountCurrency

Double 

Return value divided with the acquisition price in the base rate of the account 


ReturnPercentageDisplayCurrency 

Double 

Return value divided with the acquisition price


ReservedAmount 

Decimal

Reserved amount. Amount of current availability reserved. Cash is reserved to buy orders and instrument is reserved to sell orders. 


AvailableAmount 

Decimal

Available amount


Account_AccountNo

string

The account number


DisplayPercentagePrice

Bool

If the price should be displayed in percentage terms

2.02

DisplayMultiplier

Decimal

The multiplier used to multiply the price for display purposes

2.02

ValueMultiplier

Decimal

The multiplier used to multiply the value of the position for valuation purposes

2.02



XML request example
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <GetPositions xmlns="http://tempuri.org/">
      <req>
        <Credentials>
          <UserName>yourusername</UserName>
          <Password>yourpassword</Password>
        </Credentials>
        <identify>youridentifier</identify>
        <Args>
          <BalanceDate>2015-10-23T16:21:59.1659611+02:00</BalanceDate>
          <DisplayCurrencyCode>SEK</DisplayCurrencyCode>
          <AccountNo>95708006170</AccountNo>
          <AccountOwner xsi:nil="true" />
          <Asset xsi:nil="true" />
          <InstrumentType xsi:nil="true" />
        </Args>
        <Fields>
          <Account>true</Account>
          <Asset>true</Asset>
          <BalanceDate>false</BalanceDate>
          <Amount>true</Amount>
          <AcquisitionValue>true</AcquisitionValue>
          <AcquisitionValueAccountCurrency>true</AcquisitionValueAccountCurrency>
          <Opened>false</Opened>
          <AccountDimensionKey>false</AccountDimensionKey>
          <Price>true</Price>
          <FxRate>false</FxRate>
          <BaseRate>false</BaseRate>
          <DisplayCurrency>false</DisplayCurrency>
          <MarketValue>true</MarketValue>
          <MarketValueAccountCurrency>true</MarketValueAccountCurrency>
          <MarketValueDisplayCurrency>true</MarketValueDisplayCurrency>
          <PreviousMarketValue>false</PreviousMarketValue>
          <PreviousMarketValueDisplayCurrency>false</PreviousMarketValueDisplayCurrency>
          <MarketValueChange>false</MarketValueChange>
          <AcquisitionValueDisplayCurrency>false</AcquisitionValueDisplayCurrency>
          <AcquisitionPrice>true</AcquisitionPrice>
          <AcquisitionPriceAccountCurrency>true</AcquisitionPriceAccountCurrency>
          <AcquisitionPriceDisplayCurrency>false</AcquisitionPriceDisplayCurrency>
          <ReturnValue>true</ReturnValue>
          <ReturnValueAccountCurrency>false</ReturnValueAccountCurrency>
          <ReturnValueDisplayCurrency>false</ReturnValueDisplayCurrency>
          <ReturnPercentage>false</ReturnPercentage>
          <ReturnPercentageAccountCurrency>false</ReturnPercentageAccountCurrency>
          <ReturnPercentageDisplayCurrency>false</ReturnPercentageDisplayCurrency>
          <DisplayRate>false</DisplayRate>
          <ReservedAmount>false</ReservedAmount>
          <AvailableAmount>false</AvailableAmount>
          <AssetType>true</AssetType>
          <Account_AccountNo>true</Account_AccountNo>
        </Fields>
      </req>
    </GetPositions>
  </s:Body>
</s:Envelope>


C# - Get positions for a specific account
            var credentials = new Credentials
            {
                UserName = "UserName",
                Password = "Password"
            };

            var getPositionsRequest = new GetPositionRequest
            {
                Credentials = credentials,
                identify = "uniqueIdentifierForYourBfsInstance",
                Args = new GetPositionArgs
                {
                    DisplayCurrencyCode = "SEK",
                    AccountDimensionKey = "T",
                    BalanceDate = DateTime.Now,
                    AccountOwner = Guid.Parse("79b7b7a1-eb5f-45b1-9246-bf7b459b544f")
                },
                Fields = new GetPositionFields
                {
                    Account = true,
                    BalanceDate = true,
                    Asset = true,
                    AssetType = true,
                    Amount = true,
                    AcquisitionValue = true,
                    AcquisitionValueAccountCurrency = true,
                    Price = true
                }
            };

            var response = client.GetPositions(getPositionsRequest);

            foreach (var position in response.Result)
            {
                Console.WriteLine($"AccountId: {position.Account}");
                Console.WriteLine($"BalanceDate: {position.BalanceDate}");
                Console.WriteLine($"Asset: {position.Asset}");
                Console.WriteLine($"AssetType: {position.AssetType}");
                Console.WriteLine($"Amount: {position.Amount}");
                Console.WriteLine($"AcquisitionValue : {position.AcquisitionValue}");
                Console.WriteLine($"AcquisitionValueAccountCurrency : {position.AcquisitionValueAccountCurrency}");
                Console.WriteLine($"Price: {position.Price}");
            }