You can model certain kinds of loan as instruments of type FlexibleLoan in LUSID. See all supported instruments.
Note: This article does not currently cover a
FlexibleLoaninstrument linked to aLoanFacility.
A FlexibleLoan is designed for revolving credit facilities and drawdown loans where the outstanding principal balance can change on any day of an interest period. Unlike bonds, this means LUSID cannot derived accrued interest from flow conventions.
A FlexibleLoan accrues interest on the loan's outstanding balance every day. These daily amounts accumulate over the interest period and are paid out according to a payment schedule you define, typically once a month.
Mastering an instrument
There are numerous tools you can use to master a FlexibleLoan in the LUSID Security Master.
Some fields are common to all types of instrument, such as an intuitive name, the requirement to specify a set of identifiers, and the facility to store extra information as properties.
Fields in the economic definition object are specific to FlexibleLoan. For more information on these fields, examine the FlexibleLoan schema, or alternatively select FlexibleLoan from the definition dropdown in the UpsertInstruments API reference:

Consider the following call to the UpsertInstruments API to create a loan facility fixed at 5% with interest payments made once per year:
curl -X POST "https://<your-domain>.lusid.com/api/api/instruments?scope=mycustominstrscope"
-H "Content-Type: application/json-patch+json"
-H "Authorization: Bearer <your-API-access-token>"
-d '{
"upsert_request_1": {
"name": "FlexLoan-1Jan2024",
"identifiers": {"ClientInternal": {"value": "FlexLoan-1Jan2024"}},
"definition": {
"instrumentType": "FlexibleLoan",
"startDate": "2019-01-01T00:00:00Z",
"maturityDate": "2024-01-01T00:00:00Z",
"domCcy": "GBP",
"schedules": [
{
"scheduleType": "FixedSchedule",
"startDate": "2019-01-01T00:00:00Z",
"maturityDate": "2024-01-01T00:00:00Z",
"paymentCurrency": "GBP",
"notional": 1,
"couponRate": 0.05,
"flowConventions": {
"paymentFrequency": "1Y",
"dayCountConvention": "ActualActual",
"rollConvention": "None",
"currency": "GBP",
"paymentCalendars": [],
"resetCalendars": []
}
}
]
}
}
}'Coming soon
For information on all the fields, examine the FlexibleLoan schema. Note in particular the following:
The
instrumentTypemust beFlexibleLoan.The
startDateis typically the transaction date but can be before or after if required.The
schedulesarray must contain either a single fixed schedule or a single floating schedule. Note the interest rate calculation features of a schedule are the same as for aComplexBond.
Providing the request is successful, the response:
Confirms the globally-unique LUID for the instrument.
Generates extra fields that are stored as part of the instrument definition and can be filtered on.
Supplies default values for fields not explicitly specified in the request:
{
"values": {
"upsert_request_1": {
"scope": "mycustominstrscope",
"lusidInstrumentId": "LUID_00003H3C",
"version": {
"effectiveFrom": "0001-01-01T00:00:00.0000000+00:00",
"asAtDate": "2026-07-03T10:02:47.2951040+00:00",
"asAtCreated": "2026-07-03T10:02:47.2951040+00:00",
"userIdCreated": "00u91lo2d7X42sdse2p7",
"requestIdCreated": "2026070310-69fe7aa91e47450fb3684d24d4dcb27b",
"reasonCreated": "",
"asAtModified": "2026-07-03T10:02:47.2951040+00:00",
"userIdModified": "00u91lo2d7X42sdse2p7",
"requestIdModified": "2026070310-69fe7aa91e47450fb3684d24d4dcb27b",
"reasonModified": "",
"asAtVersionNumber": 1,
"entityUniqueId": "bf38498c-ac69-4cca-b1cf-e357e98df438"
},
"name": "FlexLoan-1Jan2024",
"identifiers": {
"LusidInstrumentId": "LUID_00003H3C",
"ClientInternal": "FlexLoan-1Jan2024"
},
"properties": [],
"instrumentDefinition": {
"startDate": "2019-01-01T00:00:00.0000000+00:00",
"maturityDate": "2024-01-01T00:00:00.0000000+00:00",
"domCcy": "GBP",
"schedules": [
{
"startDate": "2019-01-01T00:00:00.0000000+00:00",
"maturityDate": "2024-01-01T00:00:00.0000000+00:00",
"flowConventions": {
"currency": "GBP",
"paymentFrequency": "1Y",
"dayCountConvention": "ActualActual",
"rollConvention": "None",
"paymentCalendars": [],
"resetCalendars": [],
"settleDays": 0,
"resetDays": 0,
"leapDaysIncluded": true,
"accrualDateAdjustment": "Adjusted",
"businessDayConvention": "None",
"accrualDayCountConvention": "ActualActual"
},
"couponRate": 0.05,
"notional": 1,
"paymentCurrency": "GBP",
"stubType": "None",
"scheduleType": "FixedSchedule"
}
],
"instrumentType": "FlexibleLoan"
},
"state": "Active",
"assetClass": "Credit",
"domCcy": "GBP",
"relationships": [],
}
},
"staged": {},
"failed": {},
...
}Establishing a position
Unlike most other instrument types, LUSID does not use the number of units held in a FlexibleLoan to determine interest payments or present value. Instead, calculations are driven by the outstanding balance. This means you can choose whether to establish a holding with a single fixed unit, or rather dynamically sync the number of units to the balance. The method you choose determines how you should establish the holding.
Load two transactions into LUSID:
Transaction characteristics | Transaction type characteristics | |
|---|---|---|
Transaction #1 | Units: Total consideration: | Movement #1:
|
Transaction #2 | Units: <the amount to draw> | Movement #1:
Movement #2:
Custom side for
|
Load a single transaction into LUSID:
Transaction characteristics | Transaction type characteristics | |
|---|---|---|
Transaction #1 | Units: <the amount to draw> | Movement #1:
Movement #2:
Movement #3:
Custom side for
|
Confirming positions on the settlement date
Navigate to Portfolio Management > Holdings in the LUSID web app to call the GetHoldings API on the settlement date and examine the number of units held and the cost.
The number of units is fixed at 1 and the cost is £0, despite drawing (in this case) £100 from the loan facility:

The number of units and the cost is set to the amount drawn from the loan facility, in this case £100:

Auditing LUSID’s calculations of transaction amounts
Navigate to Portfolio Management > Transactions in Output mode to call the BuildTransactions API with a suitable window to examine the output transactions that generated these holdings.
Two output transactions:

One output transaction:

Valuing your position
To value your position, work through our valuation checklist. Note the following:
No market data is required.
The only valid pricing model is the dedicated
FlexibleLoanPricer.The most useful metric to report is
Holding/Balance.
To change the default pricing model, create a recipe as follows:
curl -X POST 'https://mydomain.lusid.com/api/api/recipes'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer myAPIAccessToken'
-d '{
"configurationRecipe": {
"scope": "MyRecipes",
"code": "MyBasicRecipe",
"market": {
"marketRules": []
},
"pricing": {
"modelRules": [
{
"instrumentType": "FlexibleLoan",
"modelName": "FlexibleLoanPricer"
}
]
}
}
}'You can then generate a valuation report with appropriate metrics, for example:

