--- title: "Adding system properties to transactions and to transaction types" slug: "adding-system-properties-to-transactions-and-to-transaction-types" tags: ["system properties"] updated: 2026-09-14T08:18:52Z published: 2026-09-14T08:18:52Z canonical: "support.lusid.com/adding-system-properties-to-transactions-and-to-transaction-types" --- > ## Documentation Index > Fetch the complete documentation index at: https://support.lusid.com/llms.txt > Use this file to discover all available pages before exploring further. # Adding system properties to transactions and to transaction types A [system property](/v1/docs/what-is-a-system-property) is a built-in function that is either read-only or writable. > **Note**: You interact with a system property (that is, add, update and retrieve it) in the same way as a [custom property](/v1/docs/how-do-i-add-a-property-to-an-entity). A system property has a 3-stage key that is either in the protected `system` or `default` scope. ## Adding system properties to individual transactions You can add any of the [writable system properties in this table](/v1/docs/what-is-a-system-property#transaction-system-properties) to a transaction and specify a value that LUSID can then use in a business operation. Consider the following example of a call to the [BatchUpsertTransactions](https://www.lusid.com/docs/api#operation/BatchUpsertTransactions) API to upsert a foreign currency transaction, where: - The `TradeToPortfolioRate` system property specifies an exchange rate for the transaction currency to the portfolio currency, enabling LUSID to maintain the cost basis of the portfolio. - The `TaxLotSelectionMethod` system property overrides the [default accounting method](/v1/docs/how-do-i-handle-different-tax-lot-accounting-conventions#having-lusid-determine-tax-lots-automatically). ```json curl -X POST 'https://.lusid.com/api/api/transactionportfolios/Finbourne-Examples/Global-Equities/transactions/$batchUpsert?successMode=Partial'  -H 'Content-Type: application/json-patch+json'  -H 'Authorization: Bearer '  -d '{  "transactionRequest-1": {    "transactionId": "Txn-0000001",    "type": "Buy",    "instrumentIdentifiers": {      "Instrument/default/Figi": "BBG000C6K6G9",    },    "transactionDate": "2023-05-15T00:00:00.0000000+00:00",    "settlementDate": "2023-05-18T00:00:00.0000000+00:00",    "units": 1000,    "transactionPrice": {      "price": 120, "type": "Price"    },    "totalConsideration": {      "amount": 120000, "currency": "GBP"    },    "properties": {      "Transaction/default/TradeToPortfolioRate": {        "key": "Transaction/default/TradeToPortfolioRate",        "value": {          "metricValue": {            "value": 0.93,            "unit": ""          }        }      },      "Transaction/default/TaxLotSelectionMethod": {        "key": "Transaction/default/TaxLotSelectionMethod",        "value": {          "labelValue": "LowestCostFirst"        }      }    }  } }' ``` ## Adding system properties to transaction types You can add any of the [system properties in this table](/v1/docs/what-is-a-system-property#transaction-type-system-properties) to a [transaction type](/v1/docs/what-is-a-transaction-type) to change the default behavior for all the transactions belonging to that type. > **Note**: Some system properties are set on the transaction type itself, and some on an individual movement within the transaction type. Consider the following example of a call to the [SetTransactionType](https://www.lusid.com/docs/api#operation/SetTransactionType) API to create a custom `BuyProRated` transaction type, where: - The `TaxLotSelectionMethod` system property (specified on the first movement) overrides the [default accounting method](/v1/docs/how-do-i-handle-different-tax-lot-accounting-conventions#having-lusid-determine-tax-lots-automatically). - The `AllocationMethod` system property (set on the transaction type itself) is set to `Prorated` to automatically split transactions that do not themselves have an SHK across all SHKs defined for the portfolio. ```json curl -X POST 'https://.lusid.com/api/api/transactionconfiguration/types/Bloomberg/BuyProRated?scope=default'  -H 'Content-Type: application/json-patch+json'  -H 'Authorization: Bearer '  -d '{   "aliases": [     {       "type": "BuyProRated",       "description": "A custom transaction type to automatically split transactions across sub-holdings",       "transactionClass": "Buy",       "transactionRoles": "Longer",       "isDefault": false     },   ],   "movements": [     {       "movementTypes": "StockMovement",       "side": "Side1",       "direction": 1,       "properties": {         "TransactionConfiguration/default/TaxLotSelectionMethod": {           "key": "TransactionConfiguration/default/TaxLotSelectionMethod",           "value": {             "labelValue": "LastInFirstOut"           }         }       },       "mappings": [],       "movementOptions": []     },     {       "movementTypes": "CashCommitment",       "side": "Side2",       "direction": -1,       "properties": {},       "mappings": [],       "movementOptions": []     }   ],   "properties": {     "TransactionConfiguration/default/AllocationMethod": {       "key": "TransactionConfiguration/default/AllocationMethod",       "value": {         "labelValue": "Prorated"       }     }   }  }' ```