You can generate a holdings report for a transaction portfolio at any time.
Call the GetHoldings API. Note the following:
It’s almost always useful to specify the
propertyKeysparameter with theInstrument/default/Namesystem property to identify individual results. You can retrieve any otherInstrumentorHoldingproperty in the same way.The request is effective today unless you specify a historical or future date using the
effectiveAtparameter.
curl -X GET "https://<your-domain>.lusid.com/api/api/transactionportfolios/Finbourne-Examples/UK-Equities/holdings?propertyKeys=Instrument%2Fdefault%2FName"
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'Providing the request is successful, the response contains one value per holding, for example:
"values": [
{
"instrumentScope": "default",
"instrumentUid": "LUID_WPFIPFGD",
"subHoldingKeys": {},
"properties": {
"Instrument/default/Name": {
"key": "Instrument/default/Name",
"value": {
"labelValue": "LEGAL&GEN."
},
"effectiveFrom": "0001-01-01T00:00:00.0000000+00:00"
}
},
"holdingType": "P",
"units": 82867.64705882352,
"settledUnits": 82867.64705882352,
"cost": {
"amount": 238244.49,
"currency": "GBP"
},
"costPortfolioCcy": {
"amount": 238244.49,
"currency": "GBP"
},
"currency": "GBP"
},
...
]Navigate to the Portfolio Management > Holdings dashboard.
Choose a portfolio or portfolio group and optionally an effective date (defaults to today):
.png?sv=2026-02-06&spr=https&st=2026-09-04T05%3A38%3A51Z&se=2026-09-04T05%3A50%3A51Z&sr=c&sp=r&sig=Wv2JzwaZq6zAm39jKqP67zsYEutY7p8iSlySiRtHOFk%3D)
Write a Luminesce SQL query using the Lusid.Portfolio.Holding provider and execute it using a tool such as the LUSID web app:

Retaining holdings reduced to zero units
By default, a holding that is set, adjusted or traded down to zero units drops out of holdings reports.
To retain it, add the Holding/default/RetainZeroHolding system property and set the value to True. For example, the following call to the BatchAdjustHoldings API targets a particular Bond instrument holding and adds the system property effective before its maturity date:
curl -X POST 'https://<your-domain>.lusid.com/api/api/transactionportfolios/Growth/FI/holdings/$batchAdjust?successMode=Partial'
-H 'Authorization: Bearer <your-API-access-token>'
-H 'Content-Type: application/json-patch+json'
-d '{
"AdjustHoldingRequest1": {
"effectiveAt": "2027-03-01T00:00:00.0000000+00:00",
"instrumentIdentifiers": {"Instrument/default/LusidInstrumentId": "LUID_00003H5N"},
"properties": {
"Holding/default/RetainZeroHolding": {
"key": "Holding/default/RetainZeroHolding",
"value": {
"labelValue": "True"
}
}
},
"taxLots": [
{
"units": 2000,
}
],
"currency": "GBP"
}
}'Now, LUSID retains the zero-unit holding in the report post-maturity:

To remove it, set the system property back to False.