---
title: "Recommended transaction types for instrument lifecycle events"
slug: "recommended-transaction-types-for-instrument-lifecycle-events"
updated: 2026-04-02T12:00:24Z
published: 2026-04-02T12:00:24Z
canonical: "support.lusid.com/recommended-transaction-types-for-instrument-lifecycle-events"
---

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

# Recommended transaction types for instrument lifecycle events

If you use the default transaction templates provided by LUSID for [instrument lifecycle events](/v1/docs/understanding-instrument-lifecycle-events-emitted-by-lusid) then you **must** create transaction types with specific names residing in the `default` [source](/v1/docs/grouping-related-transaction-types-using-scopes-and-sources).

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](/v1/docs/how-do-i-create-a-custom-transaction-template) for the events you wish to handle.

The transaction types on this page are suggestions only. You can [design a transaction type](/v1/docs/what-is-a-transaction-type) to have any economic impact you like.

## `BondCouponEvent`

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

### `BondCoupon` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

## `BondPrincipalEvent`

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

### `BondPrincipal` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Movement options](/v1/docs/what-is-a-movement) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

## `CreditPremiumCashFlowEvent`

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

### `CreditPremiumCashFlow` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

## `EarlyRedemptionEvent`

The default transaction template for this instrument event specifies two transaction types. Note this event can be [manually loaded](/v1/docs/redeeming-a-bond-early) for bonds modelled as `Bond`, `InflationLinkedBond` and `ComplexBond` (though excluding MBS).

### `BondEarlyRedemption` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Movement options](/v1/docs/what-is-a-movement) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/BondEarlyRedemption?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "BondEarlyRedemption",
      "description": "Transaction type for bond early redemption event - return of principal",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Increase cash balance by principal returned",
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Reduce units of bond holding",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
```

### `BondEarlyRedemptionAccrued` transaction type

This transaction type is required if interest accrued since the last coupon is greater than zero. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Movement options](/v1/docs/what-is-a-movement) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/BondEarlyRedemptionAccrued?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "BondEarlyRedemptionAccrued",
      "description": "Transaction type for bond early redemption event - return of accrued interest",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Increase cash balance by accrued interest returned, if any",
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": 1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
```

## `ExpiryEvent`

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

### `Expiry` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

## `FlexibleRepoCashFlowEvent`

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

### `FlexibleRepoCashTransfer` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/FlexibleRepoCashTransfer?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "FlexibleRepoCashTransfer",
      "description": "Transaction type for transactions automatically generated by FlexibleRepoCashFlowEvent",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Transfer cash",
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Impact cost of stock (without affecting units)",
      "movementTypes": "StockMovement",
      "side": "Side1RepoCashTransfer",             # <--Custom side, see below
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
```

The `StockMovement` uses a custom side ([see this tutorial](/v1/docs/handling-instrument-events-for-repurchase-agreements)):

```json
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/Side1RepoCashTransfer?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",
}'
```

## `FlexibleRepoCollateralEvent`

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

### `FlexibleRepoCollateralTransfer` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/FlexibleRepoCollateralTransfer?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "FlexibleRepoCollateralTransfer",
      "description": "Transaction type for transactions automatically generated by FlexibleRepoCollateralEvent",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Transfer collateral",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": 1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
```

## `FlexibleRepoInterestPaymentEvent`

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

### `FlexibleRepoInterestPayment` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/FlexibleRepoInterestPayment?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "FlexibleRepoInterestPayment",
      "description": "Transaction type for transactions automatically generated by FlexibleRepoInterestPaymentEvent",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Transfer repo interest",
      "movementTypes": "CashAccrual",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Report repo interest",
      "movementTypes": "Carry",
      "side": "Side1RepoInterestPayment",             # <--Custom side, see below
      "direction": 1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
```

The `Carry` movement uses a custom side ([see this tutorial](/v1/docs/handling-instrument-events-for-repurchase-agreements)):

```json
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/Side1RepoInterestPayment?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",
}'
```

## `FutureExpiryEvent`

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

### `FutureCashSettlement` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

The `StockMovement` uses a custom side ([see this tutorial](/v1/docs/handling-future-mark-to-market-and-expiry-events#creating-a-suitable-futurecashsettlement-transaction-type)):

```json
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"
}'
```

## `FutureMarkToMarketEvent`

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

### `FutureMarkToMarket` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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": "Txn:GrossConsideration"
    },
    {
      "type": "DeriveTotalConsideration",
      "formula": "Txn:GrossConsideration"
    }
  ]
}'
```

The `VariationMargin` movement uses a custom side ([see this tutorial](/v1/docs/handling-future-mark-to-market-and-expiry-events#creating-a-suitable-futuremarktomarket-transaction-type)):

```json
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"
}'
```

## `FxForwardSettlementEvent`

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

### `FxForwardDomPrincipal` and `FxForwardFgnPrincipal` transaction types

These transaction types can be combined into one type with two aliases ([see this tutorial](/v1/docs/handling-fxforward-settlement-and-maturity-instrument-lifecycle-events#creating-a-suitable-transaction-type-for-settlement-event-output-transactions)). It is required if the FX instrument mastered in LUSID is deliverable. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Movement options](/v1/docs/what-is-a-movement) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

The `StockMovement` uses a custom side ([see this tutorial](/v1/docs/handling-fxforward-settlement-and-maturity-instrument-lifecycle-events#creating-a-suitable-transaction-type-for-settlement-event-output-transactions)):

```json
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"
}'
```

### `NdfSettlement` transaction type

This transaction type is required if the FX instrument mastered in LUSID is non-deliverable. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
Coming soon...
```

## `MaturityEvent`

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.

### `Maturity` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

## `MbsCouponEvent`

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.

### `MbsCoupon` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

## `MbsInterestDeferralEvent`

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.

### `MbsInterestDeferral` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

Both movements use the same custom side:

```json
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"
}'
```

## `MbsInterestShortfallEvent`

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.

### `MbsInterestShortfall` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

## `MbsPrincipalEvent`

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.

### `MbsPrincipal` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

The `StockMovement` uses a custom side:

```json
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"
}'
```

## `MbsPrincipalWriteOffEvent`

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.

### `MbsPrincipalWriteOff` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

Both movements use the same custom side:

```json
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"
}'
```

## `OptionExerciseCashEvent`

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

### `CashSettledOptionExercise` transaction type

This transaction type is required if the option is cash-settled, whether call or put. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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": "Set option holding to zero",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": -1
    },
    {
      "name": "Increase cash balance",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": 1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
```

## `OptionExercisePhysicalEvent`

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

### `PhysicallySettledOptionExercise` transaction type

This transaction type is required if the option is physically settled, both call and put. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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": "Set option holding to zero",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'
```

### `CallOptionPhysicalExercise` transaction type

This transaction type is required if the option is a physically-settled call option. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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": "Establish holding in 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"
    }
  ]
}'
```

The `CashCommitment` movement uses a custom side:

```json
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"
}'
```

### `PutOptionPhysicalExercise` transaction type

This transaction type is required if the option is a physically-settled put option. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

The `CashReceivable` movement uses a custom side:

```json
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": "Transaction/default/GrossConsideration",
  "amount": "Transaction/default/GrossConsideration"
}'
```

## `ProtectionPayoutCashFlowEvent`

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

### `ProtectionPayoutCashFlow` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

## `SwapCashFlowEvent`

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

### `SwapCashFlow` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```

## `SwapPrincipalEvent`

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

### `SwapPrincipal` transaction type

This transaction type is always required. See also: [Movement types](/v1/docs/what-movement-types-are-available) | [Built-in sides](https://support.lusid.com/docs/what-built-in-transaction-types-and-sides-are-provided-with-lusid#builtin-sides) | [Calculation types](https://support.lusid.com/docs/what-is-a-transaction-type-calculation)

```json
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"
    }
  ]
}'
```
