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
type
field set, specifying the name of a transaction type.Can have its
source
field set, specifying a data provider for a set of transaction types.Can be in a parent portfolio that has its
transactionTypeScope
field set, specifying a logical repository of transaction types valid for this portfolio.
Find out more about scopes and sources.
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
default
scope. Unlike when resolving instruments, LUSID does not ‘fall back’ from a custom transaction type scope to thedefault
scope.If a transaction has its
source
field set (for example, toGoldman
) then LUSID searches theGoldman
source in the given scope for a matching transaction type.If no transaction type is found, LUSID searches the
default
source 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 theGoldman
source in the given scope for a transaction type withisDefault
set toTrue
.If no transaction type is found, or if the transaction has no source, LUSID searches the
default
source in the given scope for a transaction type withisDefault
set toTrue
.
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
type
field 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: