Recommended transaction types for instrument lifecycle events

If you use the default transaction templates provided by LUSID for instrument lifecycle events then you must create transaction types with specific names residing in the default source.

If you wish to change transaction type names and/or sources then you cannot use the default transaction templates and must instead create custom transaction templates for the events you wish to handle.

The transaction types on this page are suggestions only. You can design a transaction type to have any economic impact you like.

The default transaction template for this instrument lifecycle event specifies a BondCoupon transaction type. Note this event applies to bonds modelled as Bond, InflationLinkedBond and ComplexBond (though excluding MBS).

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/BondCoupon?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "BondCoupon",
      "description": "Transaction type for bond coupon event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Increase cash balance",
      "movementTypes": "CashAccrual",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Report income as a flow out of the security",
      "movementTypes": "Carry",
      "side": "Side1",
      "direction": 1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies a BondPrincipal transaction type. Note this event applies to bonds modelled as Bond, InflationLinkedBond and ComplexBond (though excluding MBS).

This transaction type is always required. See also: Movement types | Movement options | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/BondPrincipal?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "BondPrincipal",
      "description": "Transaction type for bond principal event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Increase cash balance",
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Set cost to zero without reducing units",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": -1,
      "movementOptions": ["Virtual"]
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies a CreditPremiumCashFlow transaction type. Note this event applies to instruments modelled as CdsIndex and CreditDefaultSwap.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/CreditPremiumCashFlow?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "CreditPremiumCashFlow",
      "description": "Transaction type for credit premium cash flow event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Premium payment",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Record as a flow of value in/out",
      "movementTypes": "Carry",
      "side": "Side1",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies an Expiry transaction type.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/Expiry?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "Expiry",
      "description": "Transaction type for expiry event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Set units to zero",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies a FutureCashSettlement transaction type.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/FutureCashSettlement?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "FutureCashSettlement",
      "description": "Transaction type for transactions automatically generated by FutureExpiryEvent",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Set units to 0"
      "movementTypes": "StockMovement",
      "side": "NotionalCustomSide",              # <--Custom side, see below
      "direction": -1
    },
    {
      "name": "Realise contract gain or loss"
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "Txn:GrossConsideration"
    },
    {
      "type": "DeriveTotalConsideration",
      "formula": "Txn:GrossConsideration"
    }
  ]
}'
JSON

The StockMovement uses a custom side (see this tutorial):

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/NotionalCustomSide?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "security": "Txn:LusidInstrumentId",
  "currency": "Txn:TradeCurrency",
  "rate": "Txn:TradeToPortfolioRate",
  "units": "Txn:Units",
  "amount": "Txn:TotalConsideration",
  "notionalAmount": "Transaction/default/NotionalAmount"
}'
JSON

The default transaction template for this instrument lifecycle event specifies a FutureMarkToMarket transaction type.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/FutureMarkToMarket?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "FutureMarkToMarket",
      "description": "Transaction type for transactions automatically generated by FutureMarkToMarketEvent",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Adjust notional cost up or down"
      "movementTypes": "VariationMargin",
      "side": "MTMCustomSide",                   # <--Custom side, see below
      "direction": 1
    },
    {
      "name": "Realise daily gain or loss"
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "DeriveTotalConsideration",
      "formula": "Txn:GrossConsideration"
    }
  ]
}'
JSON

The VariationMargin movement uses a custom side (see this tutorial):

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/MTMCustomSide?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "security": "Txn:LusidInstrumentId",
  "currency": "Txn:TradeCurrency",
  "rate": "Txn:TradeToPortfolioRate",
  "units": "Txn:Units",
  "amount": "Txn:TotalConsideration"
}'
JSON

The default transaction template for this instrument lifecycle event specifies three transaction types, all conditional. Note this event applies to instruments modelled as FxForward and FxSwap.

These transaction types can be combined into one type with two aliases (see this tutorial). It is required if the FX instrument mastered in LUSID is deliverable. See also: Movement types | Movement options | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/FxForwardDomPrincipal?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "FxForwardDomPrincipal",
      "description": "Settle the domestic leg of a FxForwardSettlementEvent",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    },
    {
      "type": "FxForwardFgnPrincipal",
      "description": "Settle the foreign leg of a FxForwardSettlementEvent",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Virtually sell the individual legs to calculate realised gain/loss",
      "movementTypes": "StockMovement",
      "side": "FxForwardSettlementEventCustomSide",    # <--Custom side, see below
      "direction": -1,
      "movementOptions": ["Virtual"]
    },
    {
      "name": "Manifest the cash holdings",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The StockMovement uses a custom side (see this tutorial):

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/FxForwardSettlementEventCustomSide?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "security": "Txn:LusidInstrumentId",
  "currency": "Txn:TradeCurrency",
  "rate": "Txn:TradeToPortfolioRate",
  "units": "Txn:Units",
  "amount": "Txn:TotalConsiderationInTradeCurrency"
}'
JSON

This transaction type is required if the FX instrument mastered in LUSID is non-deliverable. See also: Movement types | Built-in sides | Calculation types

Coming soon...
JSON

The default transaction template for this instrument lifecycle event specifies a Maturity transaction type. Note this is a generic event that applies to many different types of instrument.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/Maturity?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "Maturity",
      "description": "Transaction type for maturity event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Set units to zero",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies a MbsCoupon transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsCoupon?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "MbsCoupon",
      "description": "Transaction type for MBS coupon event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Increase cash balance",
      "movementTypes": "CashAccrual",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Report income as a flow out of the security",
      "movementTypes": "Carry",
      "side": "Side1",
      "direction": 1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies a MbsInterestDeferral transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

This transaction type is always required. See also: Movement types | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsInterestDeferral?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "MbsInterestDeferral",
      "description": "Transaction type for MBS interest deferral event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Adjust current face",
      "movementTypes": "StockMovement",
      "side": "MbsCurrentFaceCustomSide",        # <--Custom side, see below
      "direction": 1
    },
    {
      "name": "Report adjustment as a flow of value",
      "movementTypes": "Carry",
      "side": "MbsCurrentFaceCustomSide",        # <--Custom side, see below
      "direction": 1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

Both movements use the same custom side:

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/MbsCurrentFaceCustomSide?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "security": "Txn:LusidInstrumentId",
  "currency": "Txn:TradeCurrency",
  "rate": "Txn:TradeToPortfolioRate",
  "units": "0",
  "amount": "Txn:TotalConsideration",
  "currentFace": "Txn:TotalConsideration"
}'
JSON

The default transaction template for this instrument lifecycle event specifies a MbsInterestShortfall transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsInterestShortfall?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "MbsInterestShortfall",
      "description": "Transaction type for MBS interest shortfall event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Adjust cash balance",
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": -1
    },
    {
      "name": "Report adjustment as a flow of value",
      "movementTypes": "Carry",
      "side": "Side1",
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies a MbsPrincipal transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsPrincipal?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "MbsPrincipal",
      "description": "Transaction type for MBS principal event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Increase cash balance",
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Adjust current face",
      "movementTypes": "StockMovement",
      "side": "MbsCurrentFaceCustomSide",        # <--Custom side, see below
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The StockMovement uses a custom side:

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/MbsCurrentFaceCustomSide?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "security": "Txn:LusidInstrumentId",
  "currency": "Txn:TradeCurrency",
  "rate": "Txn:TradeToPortfolioRate",
  "units": "0",
  "amount": "Txn:TotalConsideration",
  "currentFace": "Txn:TotalConsideration"
}'
JSON

The default transaction template for this instrument lifecycle event specifies a MbsPrincipalWriteOff transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

This transaction type is always required. See also: Movement types | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsPrincipalWriteOff?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "MbsPrincipalWriteOff",
      "description": "Transaction type for MBS principal write-off event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Adjust current face",
      "movementTypes": "StockMovement",
      "side": "MbsCurrentFaceCustomSide",        # <--Custom side, see below
      "direction": -1
    },
    {
      "name": "Report adjustment as a flow of value",
      "movementTypes": "Carry",
      "side": "MbsCurrentFaceCustomSide",        # <--Custom side, see below
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

Both movements use the same custom side:

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/MbsCurrentFaceCustomSide?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "security": "Txn:LusidInstrumentId",
  "currency": "Txn:TradeCurrency",
  "rate": "Txn:TradeToPortfolioRate",
  "units": "0",
  "amount": "Txn:TotalConsideration",
  "currentFace": "Txn:TotalConsideration"
}'
JSON

The default transaction template for this instrument lifecycle event specifies a CashSettledOptionExercise transaction type. Note this event applies to instruments modelled as ExchangeTradedOption and EquityOption.

This transaction type is required if the option is cash-settled, whether call or put. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/CashSettledOptionExercise?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "CashSettledOptionExercise",
      "description": "Transaction type for cash-settled option event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Adjust cost of option",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": -1
    },
    {
      "name": "Adjust cash balance",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": 1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies three transaction types. Note this event applies to instruments modelled as ExchangeTradedOption and EquityOption.

This transaction type is required if the option is physically settled, both call and put. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/PhysicallySettledOptionExercise?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "PhysicallySettledOptionExercise",
      "description": "Transaction type for physically settled option event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Adjust cost of option",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

This transaction type is required if the option is a physically-settled call option. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/CallOptionPhysicalExercise?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "CallOptionPhysicalExercise",
      "description": "Transaction type for physically settled call option event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Increase cost of underlying",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": 1
    },
    {
      "name": "Decrease cash balance",
      "movementTypes": "CashCommitment",
      "side": "CallOptionPhysicalExerciseCustomSide",   # <--Custom side, see below
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The CashCommitment movement uses a custom side:

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/CallOptionPhysicalExerciseCustomSide?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "security": "Txn:SettleCcy",
  "currency": "Txn:SettlementCurrency",
  "rate": "SettledToPortfolioRate",
  "units": "Transaction/default/GrossConsideration",
  "amount": "Transaction/default/GrossConsideration"
}'
JSON

This transaction type is required if the option is a physically-settled put option. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/PutOptionPhysicalExercise?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "PutOptionPhysicalExercise",
      "description": "Transaction type for physically settled put option event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Decrease cost of underlying",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": -1
    },
    {
      "name": "Increase cash balance",
      "movementTypes": "CashReceivable",
      "side": "PutOptionPhysicalExerciseCustomSide",   # <--Custom side, see below
      "direction": 1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The CashReceivable movement uses a custom side:

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/PutOptionPhysicalExerciseCustomSide?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "security": "Txn:SettleCcy",
  "currency": "Txn:SettlementCurrency",
  "rate": "SettledToPortfolioRate",
  "units": "Txn:TotalConsideration",
  "amount": "Transaction/default/GrossConsideration"
}'
JSON

The default transaction template for this instrument lifecycle event specifies a ProtectionPayoutCashFlow transaction type. Note this event applies to instruments modelled as CdsIndex and CreditDefaultSwap.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/ProtectionPayoutCashFlow?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "ProtectionPayoutCashFlow",
      "description": "Transaction type for protection payout cash flow event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Update cash balance",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies a SwapCashFlow transaction type. Note this event applies to instruments modelled as InflationSwap and InterestRateSwap.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/SwapCashFlow?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "SwapCashFlow",
      "description": "Transaction type for swap cash flow event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Pay/receive cashflow",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Report as a flow of value in/out",
      "movementTypes": "Carry",
      "side": "Side2",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON

The default transaction template for this instrument lifecycle event specifies a SwapPrincipal transaction type.

This transaction type is always required. See also: Movement types | Built-in sides | Calculation types

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/SwapPrincipal?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "SwapPrincipal",
      "description": "Transaction type for swap principal event",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Pay/receive cashflow",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Report as a flow of value in/out",
      "movementTypes": "Carry",
      "side": "Side2",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
JSON