--- title: "What is a transaction template specification?" slug: "what-is-a-transaction-template-specification" updated: 2024-08-20T13:16:43Z published: 2024-08-20T13:16:43Z canonical: "support.lusid.com/what-is-a-transaction-template-specification" --- > ## 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. # What is a transaction template specification? A *transaction template specification* is a set of rules that a [transaction template](/v1/docs/what-is-a-transaction-template) must adhere to in order to handle a particular type of LUSID [instrument event](/v1/docs/what-is-an-event-in-lusid). Note that an instrument event can either be: - An instrument lifecycle event. [See a list](/v1/docs/understanding-instrument-lifecycle-events-emitted-by-lusid). - A corporate action event. [See a list](/v1/docs/understanding-dedicated-corporate-action-events). LUSID provides a transaction template specification for every type of event, for example `BondCouponEvent`. To examine this template specification, call the [GetTransactionTemplateSpecification](https://www.lusid.com/docs/api#operation/GetTransactionTemplateSpecification) API as follows: ```json curl -X GET "https://.lusid.com/api/api/instrumenteventtypes/BondCouponEvent/transactiontemplatespecification"  -H "Authorization: Bearer " ``` The response to this call is currently as follows (note transaction template specifications may evolve over time): ```json {   "instrumentEventType": "BondCouponEvent",   "supportedInstrumentTypes": [     "Bond",     "ComplexBond",     "InflationLinkedBond"   ],   "supportedParticipationTypes": [     "Mandatory"   ],   "supportedElectionTypes": [],   "supportedTemplateFields": [     {       "fieldName": "holdingId",       "specificity": "AllEventsAndHoldings",       "description": "The id of the holding to which the instrument event is being applied",       "type": "String",       "usage": [         "holdingId"       ]     },     {       "fieldName": "holdingCurrency",       "specificity": "AllEventsAndHoldings",       "description": "The currency of the holding to which the instrument event is being applied",       "type": "Currency",       "usage": [         "holdingCurrency"       ]     },     {       "fieldName": "instrumentEventId",       "specificity": "AllEventsAndHoldings",       "description": "The id of the instrument event that is being applied to the holding",       "type": "String",       "usage": [         "instrumentEventId"       ]     },     {       "fieldName": "instrument",       "specificity": "AllEventsAndHoldings",       "description": "The instrument of the holding and instrument event",       "type": "InstrumentId",       "usage": [         "instrument"       ]     },     {       "fieldName": "eligibleBalance",       "specificity": "AllEventsAndHoldings",       "description": "The number of units of the instrument held on the instrument event's entitlement date (typically the exDate)",       "type": "Decimal",       "usage": [         "eligibleBalance"       ]     },     {       "fieldName": "exDate",       "specificity": "InstrumentEventType",       "description": "The ex date (entitlement date) of the coupon",       "type": "DateTime",       "usage": [         "BondCouponEvent.exDate"       ]     },     {       "fieldName": "paymentDate",       "specificity": "InstrumentEventType",       "description": "The payment date of the coupon",       "type": "DateTime",       "usage": [         "BondCouponEvent.paymentDate"       ]     },     {       "fieldName": "currency",       "specificity": "InstrumentEventType",       "description": "The currency in which the coupon is paid",       "type": "Currency",       "usage": [         "BondCouponEvent.currency"       ]     },     {       "fieldName": "couponPerUnit",       "specificity": "InstrumentEventType",       "description": "The coupon amount received for each unit of the instrument held on the ex date",       "type": "Decimal",       "usage": [         "BondCouponEvent.couponPerUnit"       ]     },     {       "fieldName": "couponAmount",       "specificity": "InstrumentEventType",       "description": "The total coupon amount received for the holding, calculated as couponPerUnit x eligibleBalance",       "type": "Decimal",       "usage": [         "BondCouponEvent.couponAmount"       ]     }   ],   "eligibilityCalculation": {     "entitlementDate": "exDate",     "eligibleUnits": "SettledUnits"   } } ``` Note the following: - This transaction template specification defines rules for a transaction template designed to handle instrument events of type `BondCouponEvent`. - The `supportedInstrumentTypes` array lists the types of instrument that emit this event. - The `supportedParticipationTypes` array lists only `Mandatory` because instrument lifecycle events have no user input and are always mandatory. A corporate action event, on the other hand, can be optional or have elective choices defined in the `supportedElectionTypes` array. - The `supportedTemplateFields` array lists the variables available to include in a transaction template. In each, the `usage` array defines the syntax for use with the Mustache template system, so for example you can insert a variable representing a bond coupon amount as `{{BondCouponEvent.CouponAmount}}`. - The `eligibilityCalculation` object defines how the eligible balance is calculated. For a bond coupon, this is the number of *settled* units held in a portfolio on the ex-dividend date; note this might be different to the number of *traded* units.