Every transaction you upsert to a transaction portfolio LUSID must resolve to a known transaction type in order to define the precise economic impact; that is, the effect on your holding in the underlying instrument, and also potentially on holdings in other instruments in the portfolio too (for example, currency holdings).
Note: By default, LUSID operates a ‘data load first’ policy, so transactions are upserted and resolution failures must be handled manually as a post-process step. You can increase the level of validation to reject transactions that do not resolve to transaction types. Find out more about this.
An upserted transaction:
- Must have its
typefield set, specifying the name of a transaction type.
- Can have its
sourcefield set, specifying a data provider for a set of transaction types.
- Can be in a parent portfolio that has its
transactionTypeScopefield set, specifying a logical repository of transaction types valid for this portfolio.
For each upserted transaction, LUSID examines the
type field and performs the following steps in turn:
- LUSID determines the transaction type scope in which to look. If the parent portfolio has a custom scope set, LUSID examines that scope. If not, LUSID examines the built-in
defaultscope. Unlike when resolving instruments, LUSID does not ‘fall back’ from a custom transaction type scope to the
- If a transaction has its
sourcefield set (for example, to
Goldman) then LUSID searches the
Goldmansource in the given scope for a matching transaction type.
- If no transaction type is found, LUSID searches the
defaultsource in the given scope for a matching transaction type.
- If no transaction type is found and the transaction has a source of (for example)
Goldman, LUSID searches the
Goldmansource in the given scope for a transaction type with
- If no transaction type is found, or if the transaction has no source, LUSID searches the
defaultsource in the given scope for a transaction type with
If a transaction type still cannot be found:
- By default, the transaction is upserted into LUSID with metadata warnings, but excluded from holdings calculations. You should edit the
typefield of these transactions to supply a known transaction type.
- If you have increased the level of validation to reject unresolved transactions, then the transaction is not upserted. You should specify a known transaction type in the API request before attempting to upsert again.
The following flow diagram summarises the mapping logic: