Portfolio & Positions

Show an account's evergreen fund holdings with market values and tax lots, its open and historical orders, and the distributions it has received.

The portfolio view answers three questions for an account: what it holds, what is in flight, and what it has been paid. Each maps to one Omnibus resource.

SectionResourceShows
PositionsOmnibusPositionSettled holdings, with cost basis and tax lots
OrdersOmnibusOrderResponseOpen and historical orders, including those placed through Model Orders
DistributionsOmnibusDividendCash and reinvested dividends

Endpoints used

MethodEndpointPurpose
GET/primary/v1/omnibus/positionsList positions
GET/primary/v1/omnibus/positions/{id}Retrieve one position, optionally with its tax lots
GET/primary/v1/omnibus/nav-reportLatest NAV of each held share class, to value positions
GET/primary/v1/omnibus/orderList orders
GET/primary/v1/omnibus/model-orderList Model Orders that include the account
GET/primary/v1/omnibus/dividendsList dividends

Positions

GET /primary/v1/omnibus/positions?accountId={accountId}&includeLots=true
Query parameterDescription
accountIdPositions of one account.
financialInstitutionIdPositions for accounts held at one custodian, for a book-level view.
omnibusFundId, omnibusShareClassIdPositions in one fund or share class.
distributionElectionCash or Drip.
includeLotstrue to return each position's tax lots.
{
  "items": [
    {
      "positionId": "9a8b7c6d-0000-4000-8000-0000000000b1",
      "accountId": "b2d4e6f8-0000-4000-8000-000000000021",
      "investorId": "0a4f6c1e-0000-4000-8000-000000000011",
      "financialInstitutionId": "7f3c2a10-0000-4000-8000-000000000001",
      "omnibusFundId": "d4f6b8c0-0000-4000-8000-0000000000f1",
      "omnibusShareClassId": "e5a7c9d1-0000-4000-8000-0000000000c1",
      "distributionElection": "Drip",
      "totalQuantity": 1057.529611,
      "totalCostBasis": 25000.00,
      "averageCostPerShare": 23.64,
      "currency": "USD",
      "lotCount": 1,
      "lots": [
        {
          "lotId": "3e2d1c0b-0000-4000-8000-0000000000a1",
          "acquisitionDate": "2026-10-01T14:32:08Z",
          "acquisitionType": "Subscription",
          "originalQuantity": 1057.529611,
          "currentQuantity": 1057.529611,
          "costBasisPerShare": 23.64,
          "totalCostBasis": 25000.00,
          "remainingCostBasis": 25000.00,
          "currency": "USD",
          "status": "Open",
          "lockedUntil": null,
          "lockReason": null
        }
      ]
    }
  ],
  "pagination": { "totalRecords": 1, "totalPages": 1, "currentPage": 1 }
}

The example is trimmed: positions and lots also carry timestamps and source identifiers. A lot's acquisitionDate is when Monark processed the transfer agent's confirmation, or the payable date for a DRIP reinvestment.

A position is identified by account, fund, share class, and distribution election. An account that holds the same share class under both Cash and Drip has two positions. Show them as separate rows, because a redemption is always made from one of them.

Important: Positions reflect settled activity only. An order is not part of a position until it reaches Settled, except that each fill in the netting queue creates its lot as it happens, even while the rest of the order is open. Until then, show it in the Orders section, so the two sections together account for everything the client has committed.

Value positions

Positions carry quantity and cost basis, but no market value. Value each position at the latest NAV of its share class - the report with the most recent reportDate:

GET /primary/v1/omnibus/nav-report?omnibusShareClassId={shareClassId}
UI elementSourceNotes
FundFund.name for Position.omnibusFundId
Share classShareClass.symbol or ShareClass.series for Position.omnibusShareClassId
DistributionsPosition.distributionElectionCash or Drip.
SharesPosition.totalQuantityUp to 9 decimal places, from DRIP reinvestments. Sell orders accept up to 6.
Average costPosition.averageCostPerShare
Cost basisPosition.totalCostBasis
Market valuePosition.totalQuantity × latest NAVReport.navState the NAV date.
Unrealized gain / lossMarket value − Position.totalCostBasis
Portfolio valueSum of market value across positions
Redeem actionPosition.positionIdOpens the redemption ticket. See Redemptions (Sell Orders).

Request the latest NAV once per distinct share class, not once per position. Market values calculated this way are indicative: they use the last reported NAV, which for many evergreen funds is struck monthly.

Tax lots

Each position is made up of tax lots. A lot is created by each settled Buy (one per Model Order line) and each DRIP reinvestment, and Sell orders relieve lots in the order set by their taxLotElection. The lot is the unit that cost basis and sale elections operate on.

UI elementSourceNotes
AcquiredLot.acquisitionDate
SourceLot.acquisitionTypeSubscription, Buy, DividendReinvestment, TransferIn, or ExternalImport.
SharesLot.currentQuantityLot.originalQuantity is the quantity before any sales.
Cost per shareLot.costBasisPerShare
Remaining cost basisLot.remainingCostBasis
StatusLot.statusAlways Open: closed lots are not returned.
AvailabilityLot.lockedUntil, Lot.lockReasonCurrently always null for evergreen fund lots. Every returned lot can be sold, less shares reserved by open Sell orders.

Show lots in an expandable row beneath the position. They are most useful to advisors who are planning a redemption, and to operations teams reconciling cost basis against custodian records.

Orders

GET /primary/v1/omnibus/order?accountId={accountId}&statuses=Received&statuses=PendingActions&statuses=PendingExecution
Query parameterDescription
accountIdOrders of one account.
financialInstitutionIdOrders for accounts held at one custodian.
statusesOne or more statuses. Repeat the parameter for each value.
sideBuy or Sell.
omnibusFundId, omnibusShareClassIdOrders in one fund or share class.
referenceId, externalIdLook an order up by your identifier or Monark's.
UI elementSourceNotes
FundFund.name for Order.omnibusFundId
ModelOrder.modelIdPopulated when the order was placed through a Model Order.
AccountOrder.externalAccountNumberShow this in book-level views. It is the custodian account number you supplied.
SideOrder.side
AmountOrder.notionalAmount for Buy, Order.quantity for Sell
FilledOrder.filledNotionalAmount or Order.filledQuantityPopulated at settlement, or as the order fills in the netting queue. For a Buy, filledNotionalAmount is net of feeAmount, so compare it to effectiveNotionalAmount.
StatusOrder.statusSee the order lifecycle in the Integration Overview.
SubmittedOrder.submittedAtUtcSort newest first.
Complete actionsShown when Order.status is PendingActionsSee Subscriptions (Buy Orders).
CancelShown while Order.status is Received, PendingActions or PendingExecution (until Monark's cutoff), and only when Order.modelOrderId is null. For netting orders, shown only while Order.status is PendingActionsExecuted orders can't be cancelled, and nor can netting orders outside PendingActions. Orders that belong to a Model Order are cancelled through the Model Order.

A useful default is two tabs: Open (Received, PendingActions, PendingExecution, Executed) and All. Rejected orders are worth keeping visible in history, with rejectedStatusReasonMessage, so users can see why an instruction did not go through.

Model Orders for an account

To show the Model Orders that an account took part in, filter the Model Order list by accountId. Only Model Orders that Monark has processed match, so drafts, Model Orders still Processing and Model Orders rejected while processing are not returned. The list does not include per-account amounts, so retrieve each Model Order by id when the user opens it. See Model Orders.

Distributions

GET /primary/v1/omnibus/dividends?accountId={accountId}&payableDateFrom=2026-01-01
Query parameterDescription
accountIdDividends of one account.
financialInstitutionIdDividends for accounts held at one custodian.
omnibusFundId, omnibusShareClassIdDividends from one fund or share class.
distributionElectionCash or Drip.
recordDateFrom, recordDateToFilter by record date.
payableDateFrom, payableDateToFilter by payable date.

Dividends are allocated per tax lot. An account that holds three lots in a fund receives three rows for the same distribution. Group rows by fund, share class, distributionElection, and recordDate before you show them to a client (payableDate can be null), and keep the lot-level rows for a drill-down.

UI elementSourceNotes
FundFund.name for Dividend.omnibusFundId
Record dateDividend.recordDate
Payable dateDividend.payableDate
TypeDividend.distributionElectionCash or Drip.
Cash paidDividend.notionalAmountFor Cash elections.
Shares reinvestedDividend.quantity at Dividend.pricePerShareFor Drip elections.
RateDividend.dividendRate
Resulting lotDividend.reinvestedLotIdFor Drip, the new tax lot created by the reinvestment.

Eligibility for a distribution is determined per lot, by acquisition date: a lot receives a distribution if Monark processed its transfer agent confirmation on or before the record date (UTC). A lot confirmed after the record date does not receive it. This matters most for clients who subscribe close to a record date, so be ready to explain it.

Monark sends one OmnibusDividendCreated webhook per dividend row (one per lot). Use it to refresh the distributions view and to notify the client. See Webhooks.

Implementation notes

  • Reconcile to your books. externalAccountNumber on orders and your referenceId values are the join keys to your own order and account records.
  • Treat market value as indicative. Label it with the NAV date, and do not use it as a statement value without your firm's own pricing controls.
  • Page large books. Firm-wide order and dividend queries can return many rows. Request them page by page using pagination.totalPages.

Next steps


Did this page help you?