---
title: "Transactions and transaction types"
slug: "transactions"
status: "update"
updated: 2025-09-15T09:58:30Z
published: 2025-09-15T09:58:30Z
canonical: "support.lusid.com/transactions"
---

> ## 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.

# Transactions and transaction types

A *transaction* registers a change to the quantity and/or cost of an [instrument](/v1/docs/instruments) held in a [transaction portfolio](/v1/docs/what-is-a-transaction-portfolio), for example the purchase of a number of BP shares at a particular price, or the exchange of a quantity of GBP for USD at a particular rate.

LUSID is a transaction-based system. It does not maintain a static record of your [holdings](/v1/docs/holdings) in a portfolio but rather [generates them on demand](/v1/docs/understanding-how-lusid-uses-transaction-types-to-generate-holdings) from the stored history of transactions, replayed in date order.

Note the following:

- A [transaction you create](/v1/docs/how-do-i-create-or-update-a-transaction) is known as an *input transaction*, to distinguish it from an *output transaction* automatically generated or processed by LUSID. [More information](/v1/docs/input-and-output-transactions).
- A transaction must resolve to a mastered [instrument](/v1/docs/instruments) so LUSID can update its calculation of your holding in that instrument in the portfolio.
- A transaction must resolve to a known [transaction type](/v1/docs/what-is-a-transaction-type) that determines the precise economic impact on holdings. The type is very likely to impact your holding in the transacted instrument, and possibly holdings in other instruments too (for example, currency holdings).
- By default, LUSID operates a ‘data load first’ policy, so transactions are upserted and resolution failures must be handled as a post-process step. You can [increase the level of validation](/v1/docs/validating-transactions) to reject transactions that do not resolve to instruments and/or to transaction types.
- By default, LUSID assumes the trade, settlement and portfolio currencies are all the same. If not, you can apply optional fields and properties to specify [exchange rates](/v1/docs/transactions-and-exchange-rates) between them.
- By default, a transaction settles on its contractual settlement date. You can configure LUSID to choose more sophisticated [settlement strategies](/v1/docs/settlement-management-for-transactions) if you wish.
- A transaction has a minimal set of data fields. You can add [custom properties](/v1/docs/properties) to extend the data model and store additional information, for example the name of the executing broker or the code of the exchange.
- You can add [certain system properties](/v1/docs/adding-system-properties-to-transactions-and-to-transaction-types) to a transaction to record additional information that LUSID can then use in business operations, for example an exchange rate for a foreign currency transaction so LUSID can maintain the cost basis of the portfolio.
- You can [strategy tag](/v1/docs/strategy-tagging-transactions-using-sub-holding-keys-shks) a transaction with one or more of the sub-holding keys (SHKs) registered with the portfolio, to divide your holding in the underlying instrument. By default, LUSID reports one holding per underlying instrument, with all transactions in that instrument contributing to the calculation.

You can see the stored history of all transactions for a portfolio in the LUSID web app by navigating to **Portfolio Management > Transactions**:

![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image-8LDVZAVB.png)

Alternatively, you can interact with transactions programmatically:

- Using the APIs in the [Transaction Portfolios](https://www.lusid.com/docs/api#tag/Transaction-Portfolios) collection.
- Using equivalent methods in the [LUSID SDK](/v1/docs/understanding-all-the-applications-in-the-finbourne-platform) in various languages.
- If you have a Luminesce license, by [writing SQL queries](/v1/docs/lusidportfoliotxnwriter).

**Explanation**

- [Understanding how LUSID uses transaction types to generate holdings](/v1/docs/understanding-how-lusid-uses-transaction-types-to-generate-holdings)
- [Grouping related transaction types using scopes and sources](/v1/docs/grouping-related-transaction-types-using-scopes-and-sources)

**Tutorials**

- Transaction types 1: [Ensuring different transaction codes have the same economic impact](/v1/docs/ensuring-different-transaction-codes-have-the-same-economic-impact)
- Transaction types 2: [Ensuring the same transaction code has different economic impacts](/v1/docs/ensuring-the-same-transaction-code-has-different-economic-impacts)
- Transaction types 3: [Reducing a cash balance by the cost of broker commission](/v1/docs/reducing-the-cash-balance-by-the-cost-of-broker-commission)
- Transaction types 4: [Breaking out broker commission as a separate cash holding](/v1/docs/breaking-out-broker-commission-as-a-separate-cash-holding)

**Reference**

- [Input and output transactions](/v1/docs/input-and-output-transactions)
- [Validating transactions](/v1/docs/validating-transactions)
- [Strategy-tagging transactions using SHKs](/v1/docs/strategy-tagging-transactions-using-sub-holding-keys-shks)
- [Transactions and exchange rates](/v1/docs/transactions-and-exchange-rates)
- [Transaction syncing in derived transaction portfolios](/v1/docs/transaction-syncing-in-derived-transaction-portfolios)
- [Adding system properties to transactions and to transaction types](/v1/docs/adding-system-properties-to-transactions-and-to-transaction-types)
- [How does LUSID resolve transactions to transaction types?](/v1/docs/how-does-lusid-resolve-transactions-to-transaction-types)
- [What is a transaction type?](/v1/docs/what-is-a-transaction-type)
- [What is a transaction type alias?](/v1/docs/what-is-a-transaction-type-alias)
- [How do transaction type class and roles work?](/v1/docs/how-do-transaction-type-class-and-roles-work)
- [What is a movement?](/v1/docs/what-is-a-movement)
- [What movement types are available?](/v1/docs/what-movement-types-are-available)
- [What is a side?](/v1/docs/what-is-a-side)
- [What built-in transaction types and sides are provided with LUSID?](/v1/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid)
- [What is a transaction type calculation?](/v1/docs/what-is-a-transaction-type-calculation)
- [What is a transaction template?](/v1/docs/what-is-a-transaction-template)
- [What is a transaction template specification?](/v1/docs/what-is-a-transaction-template-specification)

**How-to guides**

- [How do I create or update a transaction?](/v1/docs/how-do-i-create-or-update-a-transaction)
- [How do I create a transaction type?](/v1/docs/how-do-i-create-a-transaction-type)
- [How do I create a side?](/v1/docs/how-do-i-create-a-side)
- [How do I cancel a transaction?](/v1/docs/how-do-i-cancel-a-transaction)
- [How do I create a custom transaction template?](/v1/docs/how-do-i-create-a-custom-transaction-template)
- [How do I remove the built-in transaction types and sides?](/v1/docs/how-do-i-remove-the-built-in-transaction-types-and-sides)
