Trade model: ESP

This page describes the FX Integration API’s ESP trade model, as defined in the file config/TradingAdapter/Blade/DataSource/etc/trademodels.xml in the FX Integration API Kit.

This documentation is for the FX Integration API 8.3.0.

Trade models are XML-defined state machines used by the Java Trading API, the C Trading API, and Caplin Trader’s Trading API to manage trading workflows. For more information on trade model XML definitions, see the Trade model XML schema reference.

State diagram

The state diagram for the ESP trade model is shown below. To simplify the diagram, the Rejected and Error states have been omitted.

InitialSubmittedQueuedClientCloseSentClientClosedPickedUpTradeConfirmedSubmitSubmitAckClientCloseClientCloseAckPickUpHoldTradeConfirmationLegendTransitions initiated by the client are inyellow.Transitions initiated by the server are inblue.

Messages: client → server

Trade-channel messages sent by StreamLink clients to the FX API DataSource.

For high-level information on message fields, see Message and record fields. For information about fields in specific messages, see the message specifications below.

Submit
ESPSubmission
ESPSubmissionLeg Ln
Ln_Price
string
Ln_FwdPoints
decimal
Example: 0.001198
Ln_FwdPips
string
Example: 11.98
Ln_Amount
decimal
The amount of a trade or order in the DealtCurrency.
Ln_BuySell
string
The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.
Ln_SettlementDate
string
Ln_RequestedProfitCurrency
string
Ln_Tenor
string
Example: 1M
Supported types are [ON, [TODAY, TOD, TD], TN, [TOM, ND], SPOT, SN, 1D, 1W, 2W, 3W, 4W, 1M, 2M, 4M, 5M, 6M, 7M, 8M, 9M, 10M, 11M, [1Y, 12M], 15M, 18M, 21M, [2Y, 24M], [3Y, 36M], [4Y, 48M], [5Y, 60M], broken]. 'broken' indicates that the settlement date does not fall onto a tenor.
Ln_FixingDate
string
Example: 20150620
This is the day and time whereby the comparison between the NDF rate and the prevailing spot rate is made.
Ln_TOBOUser
string
Example: client@customer.co.za
The user the trade is on behalf of. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be client@customer.co.za.
Ln_Remarks
string
The text content of a comment left on a leg of a trade or order.
Ln_TraderRemarks
string
The trader's comments on an order leg - visible to only the Trader
CurrencyPair
string
The currency pair for the trade. For example, EURUSD
DealtCurrency
string
Example: GBP
The currency of the Amount of a trade or order.
AssetClass
The asset class for the trade; used by permissioning and licensing. Example value: FX
TradingAssetClass
The trading asset class for the trade; used by permissioning and licensing. Example value: FX
TradingProtocol
The trade protocol, e.g, ESP or RFS. The Trading DataSource library needs this so that it knows which state model to use for the trade. Also used for permissioning.
TradingSubProtocol
string
Example: SALES_RFS
This field is used to indicate to the back end that the user is requesting a trade with Sales functionality.
Account
string
Example: Garfields|GARF
The account a trade or order has been submitted against. The format is <description>|<name> or <name>|<name>
TOBOUser
string
Example: client@customer.co.za
The user the trade is on behalf of. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be client@customer.co.za.
ControlAddLeg
This is a control field that the front end trading library adds automatically. The user code doesn't need to do anything with this.
TradingType
string
Caplin supported values are [SPOT, FWD, NDF, NDF_FIXING, NDS, TIME_OPTION, DRAWDOWN, SWAP, BLOCK, PAR_FORWARD]. See the constants defined within com.caplin.motif.fx.trading.FXTradingType for further details.
Purpose
string
Example: Commercial
The purpose of a trade.
IsCommercial
Indication whether something is commercial or not
AppID
A unique identifier for the client application
MsgType
String
Example: Submit
Name of the transition
RequestID
String
The RequestID. A Unique identifier, must remain the same for each event in the trade model
QuoteID
string
The unique ID of the quote the client wants to trade on.
SpotRate
decimal
Example: 1.08341
OneClickActionType
string
IsCoverTrade
boolean
This field is used to indicate to the back end that a cover trade has been submitted
SlippageAmount
decimal
The amount that an order can slip before it needs to be filled
ClientClose
MsgType
String
Example: ClientClose
Name of the transition
RequestID
String
The RequestID. A Unique identifier, must remain the same for each event in the trade model

Messages: server → client

Messages sent by the FX API DataSource to StreamLink clients.

For high-level information on message fields, see Message and record fields. For information about fields in specific messages, see the message specifications below.

SubmitAck
MsgType
String
Example: SubmitAck
Name of the transition
RequestID
String
The RequestID. A Unique identifier, must remain the same for each event in the trade model
ClientCloseAck
MsgType
String
Example: ClientCloseAck
Name of the transition
RequestID
String
The RequestID. A Unique identifier, must remain the same for each event in the trade model
Hold
MsgType
String
Example: Hold
Name of the transition
RequestID
String
The RequestID. A Unique identifier, must remain the same for each event in the trade model
PickUp
MsgType
String
Example: PickUp
Name of the transition
RequestID
String
The RequestID. A Unique identifier, must remain the same for each event in the trade model
TradeConfirmation Ticket Spot Trade Confirmation
CommonSpotTradeConfirmation
CommonTradeConfirmationFields
TradeID
string
Example: 00001561
A unique identifier for this trade
CurrencyPair
string
The currency pair for the trade. For example, EURUSD
DealtCurrency
string
Example: GBP
The currency of the Amount of a trade or order.
SpotRate
decimal
Example: 1.08341
SpotMidRate
decimal
Example: 1.08345
The mid rate between the SpotAskRate and SpotBidRate. Note that this will not always be precisely between.
SpotRateDPS
integer
Example: 5
The number of decimal places to display after the decimal point.
ExecutionDateTime
string
Example: 20160322123621
TradeDate
string
Example: 20160314
Account
string
Example: Garfields|GARF
The account a trade or order has been submitted against. The format is <description>|<name> or <name>|<name>
TraderUsername
string
Example: sales_trader@novobank.co.za
The user who entered the trade. This may be on behalf of themselves, or on behalf of someone else. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be dealer1@novobank.co.za. If the user client@customer.co.za makes a trade on behalf of themselves it will be client@customer.co.za.
TOBOUser
string
Example: client@customer.co.za
The user the trade is on behalf of. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be client@customer.co.za.
FullName
string
The full name of the user the trade is on behalf of
EntityId
string
Example: CUSTONE
The entity the trade is on behalf of. For example, if the logged in user user1@customer.co.za wishes to make a trade on behalf of entity CUSTONE, then the value of this field will be CUSTONE. If this field is absent on a leg then the default entity should be presumed.
EntityDescription
string
Example: Customer 1
The description of a trade on behalf of entity.
AssetType
string
Example: FX
A grouping of investments that exhibit similar characteristics and are subject to the same laws and regulations. Supported asset types are [FX, PM]
TradingType
string
Caplin supported values are [SPOT, FWD, NDF, NDF_FIXING, NDS, TIME_OPTION, DRAWDOWN, SWAP, BLOCK, PAR_FORWARD]. See the constants defined within com.caplin.motif.fx.trading.FXTradingType for further details.
DeliverableType
string
Caplin supported values are [DELIVERABLE, NON_DELIVERABLE]. Determines whether trade is deliverable or not (for ndfs etc)
DigitsBeforePips
integer
Example: 2
Precision-related field that tells the client how to display rates. This is the number of digits between the decimal point and the pips (i.e the big digits that the client wants to look at). For most currency pairs the value of this field will be 2, i.e. for a USDGBP rate of 1.23456 the pips are 45 so there are two digits between the decimal point and the pips. For USDJPY the rate could be 103.256 and the pips are the 25, so in this case the value of DigitsBeforePips should be 0.
NumberOfPips
integer
Example: 2
Precision-related field that tells the client how to display rates. This is the number of pips the client wants to look at. Normally this value is 2.
OrderID
string
The id of the order.
WarningCode
string
Example: 001
The code for the warning regarding a quote request.
WarningMessage
string
Example: You do not have sufficient credit for EUR
The message to display for any warnings regarding a quote request
Client
string
Client is a duplicate of TOBOUser
CostAmount
decimal
Example: 12412891.31
The actual transactional cost of performing the trade to the client in the home currency
CostCurrency
string
Example: GBP
The currency that the cost is displayed in, this could be any currency but will typically be set to the home currency
CostCurrencyDPS
integer
Example: 2
The number of decimal places to display after the decimal point.
CostPercentage
decimal
Example: 13.56
Percentage of the overall price which is the transactional cost to the client of performing the trade. This number should be out of 100, where 100.0 represents 100%.
ContraCostAmount
decimal
The actual transactional cost of performing the trade to the client on the contra currency
ContraCostCurrency
string
Example: GBP
The contra currency that the cost is displayed in
ContraCostCurrencyDPS
integer
Example: 2
The number of decimal places to display after the decimal point.
ContraCostPercentage
decimal
Example: 13.56
Percentage of the overall price which is the transactional cost to the client of performing the trade in contra currency. This number should be out of 100, where 100.0 represents 100%.
ServiceCostCurrencyDPS
integer
Example: 2
The number of decimal places to display after the decimal point.
ServiceContraCostCurrencyDPS
integer
Example: 2
The number of decimal places to display after the decimal point.
CanAllocate
string
Defines if a user can allocate a trade. Enum of: NONE, FULL, FULL_OR_PARTIAL
CanDrawdown
boolean
Ability to Drawdown a time option trade.
AllocationSettlementDateOptions
string
Example: ORIGINAL,EARLIER,LATER
Comma-separated list, defines available settlement dates for an allocation.
IsAllocated
boolean
Define if a trade is already allocated or rolled
IsReversible
boolean
Whether a trade can be reversed.
IsAmendable
boolean
Whether a trade can be amended.
IsCancellable
boolean
Whether a trade can be cancelled.
AmountDPS
integer
Example: 2
The precision for a specified currency pair and dealt currency
ContraAmountDPS
integer
Example: 2
The precision for a specified currency pair and contra currency
Remarks
string
The text content of a comment left on a leg of a trade or order.
UTI
string
Unique Transaction Identifier.
BackOfficeID
string
Back office trade identifier.
PriceSource
string
Example: st1@caplin.com
Identifies the person or system that priced the trade.
Venue
string
Example: FX Sales
Where the trade was placed.
Purpose
string
Example: Commercial
The purpose of a trade.
Tags
string
Example: method={'import':'static com.caplin.motif.fx.config.definitions.common.Tag','name':'Arrays.asList'}
Tags for a trade.
ClientAgreementDateTime
datetime
Optional field that can be used to display the client agreement date time in a trade amend. This field can also be included in the Amend's EditableFields list to allow the user to edit it. This field can be used to allow the user to specify a client agreement time in scenarios where the execution time might have been different
PostTradeType
string
The post-trade action that created this trade. Enum of: ROLL_BACK, ROLL_FORWARD, ALLOCATION
OriginalTradeID
string
TradeID of the trade that this trade was created from.
LegTradeConfirmationFields L1
SettlementTradeFields L1
SettlementFields L1_Pay[n]
L1_Pay[n]SettlementId
string
The identifier for the settlement instruction.
L1_Pay[n]SettlementCurrency
string
Example: GBP
A currency for of settlement instruction
L1_Pay[n]SettlementAmount
decimal
The amount of a settlement
L1_Pay[n]SettlementDirection
string
The direction in which the settlement details refer to, supported directions are: PAY, RECEIVE, BOTH
L1_Pay[n]IsDefaultSettlementInstruction
boolean
Is this the default settlement instruction for this currency
L1_Pay[n]SettlementInstructionType
string
Example: EXISTING
The type of settlement instruction attached to a trade. Supported types are [EXISTING, ADHOC, NONE]
L1_Pay[n]SettlementDisplayName
string
Example: [CCY] Account 1
The name of the settlement instruction. This field can be omitted.
L1_Pay[n]SettlementStatus
string
Caplin supported statuses are [PENDING, AFFIRMED, CONFIRMED, DISPUTED, CANCELLED, REPLACED, AUTO_CONFIRMED, OVERDUE, REJECTED]
L1_Pay[n]BankAccount
string
Example: 12345678
The account number of the bank
L1_Pay[n]BankSwift
string
Example: CAP123
The BIC of the bank
L1_Pay[n]BankName
string
Example: Bank Of Caplin
The name of the bank
L1_Pay[n]BankAddress1
string
Example: 12 Capitol
The first line of the bank's address
L1_Pay[n]BankAddress2
string
Example: The City
The second line of the bank's address
L1_Pay[n]BankAddress3
string
Example: London
The third line of the bank's address
L1_Pay[n]IndividualAccount
string
Example: 87654321
The account number of the recipient
L1_Pay[n]IndividualSwift
string
Example: SOLD987
The BIC of the recipient's account
L1_Pay[n]IndividualName
string
Example: Susan Sellers
The name of the payee or payee's bank
L1_Pay[n]IndividualAddress1
string
Example: 98 Lane
The first line of the recipient
L1_Pay[n]IndividualAddress2
string
Example: Manchester
The second line of the recipient
L1_Pay[n]NettingStatus
string
Example: NETTED
The status that denotes the permanent netting state of a settlement. This is required to know which settlements have been netted and which have not
L1_Pay[n]SplitComponentId
string
The unique ID of a split component
L1_Pay[n]SettlementDetailsLine1
string
The first line of remittance information.
L1_Pay[n]SettlementDetailsLine2
string
The second line of remittance information.
L1_Pay[n]SettlementDetailsLine3
string
The third line of remittance information.
L1_Pay[n]SettlementDetailsLine4
string
The fourth line of remittance information.
L1_Pay[n]SettlementDetailsLine5
string
The fifth line of remittance information.
L1_Pay[n]SettlementDetailsLine6
string
The sixth line of remittance information.
SettlementFields L1_Receive[n]
L1_Receive[n]SettlementId
string
The identifier for the settlement instruction.
L1_Receive[n]SettlementCurrency
string
Example: GBP
A currency for of settlement instruction
L1_Receive[n]SettlementAmount
decimal
The amount of a settlement
L1_Receive[n]SettlementDirection
string
The direction in which the settlement details refer to, supported directions are: PAY, RECEIVE, BOTH
L1_Receive[n]IsDefaultSettlementInstruction
boolean
Is this the default settlement instruction for this currency
L1_Receive[n]SettlementInstructionType
string
Example: EXISTING
The type of settlement instruction attached to a trade. Supported types are [EXISTING, ADHOC, NONE]
L1_Receive[n]SettlementDisplayName
string
Example: [CCY] Account 1
The name of the settlement instruction. This field can be omitted.
L1_Receive[n]SettlementStatus
string
Caplin supported statuses are [PENDING, AFFIRMED, CONFIRMED, DISPUTED, CANCELLED, REPLACED, AUTO_CONFIRMED, OVERDUE, REJECTED]
L1_Receive[n]BankAccount
string
Example: 12345678
The account number of the bank
L1_Receive[n]BankSwift
string
Example: CAP123
The BIC of the bank
L1_Receive[n]BankName
string
Example: Bank Of Caplin
The name of the bank
L1_Receive[n]BankAddress1
string
Example: 12 Capitol
The first line of the bank's address
L1_Receive[n]BankAddress2
string
Example: The City
The second line of the bank's address
L1_Receive[n]BankAddress3
string
Example: London
The third line of the bank's address
L1_Receive[n]IndividualAccount
string
Example: 87654321
The account number of the recipient
L1_Receive[n]IndividualSwift
string
Example: SOLD987
The BIC of the recipient's account
L1_Receive[n]IndividualName
string
Example: Susan Sellers
The name of the payee or payee's bank
L1_Receive[n]IndividualAddress1
string
Example: 98 Lane
The first line of the recipient
L1_Receive[n]IndividualAddress2
string
Example: Manchester
The second line of the recipient
L1_Receive[n]NettingStatus
string
Example: NETTED
The status that denotes the permanent netting state of a settlement. This is required to know which settlements have been netted and which have not
L1_Receive[n]SplitComponentId
string
The unique ID of a split component
L1_Receive[n]SettlementDetailsLine1
string
The first line of remittance information.
L1_Receive[n]SettlementDetailsLine2
string
The second line of remittance information.
L1_Receive[n]SettlementDetailsLine3
string
The third line of remittance information.
L1_Receive[n]SettlementDetailsLine4
string
The fourth line of remittance information.
L1_Receive[n]SettlementDetailsLine5
string
The fifth line of remittance information.
L1_Receive[n]SettlementDetailsLine6
string
The sixth line of remittance information.
NettingComponents L1_PayNettingComponents[n]
L1_PayNettingComponents[n]TradeID
string
Example: 00001561
A unique identifier for this trade
L1_PayNettingComponents[n]BuySell
string
The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.
L1_PayNettingComponents[n]Amount
decimal
The amount of a trade or order in the DealtCurrency.
NettingComponents L1_ReceiveNettingComponents[n]
L1_ReceiveNettingComponents[n]TradeID
string
Example: 00001561
A unique identifier for this trade
L1_ReceiveNettingComponents[n]BuySell
string
The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.
L1_ReceiveNettingComponents[n]Amount
decimal
The amount of a trade or order in the DealtCurrency.
L1_CanAffirm
boolean
Ability to Affirm the Trade Details are as agreed.
L1_CanConfirm
boolean
Ability to Confirm the Settlement Details are now final.
L1_CanAdHoc
boolean
Can confirm adhoc settlement instructions for a trade.
L1_CanDispute
boolean
Ability to Dispute the details of a trade, if for example something is wrong about it.
L1_CanCancel
boolean
Ability to Cancel a trade, for example if a mistake was made.
L1_CanReplace
boolean
Ability to mark a deal as amended, meaning that it has been replaced by a corrected deal.
L1_CanAutoConfirm
boolean
Ability to Mark that the deal was Confirmed by the Bank, rather than by the client.
L1_CanUnconfirm
boolean
Ability to move the deal back to a Pending state.
L1_CanApproveInstructions
boolean
Can approve settlement instructions for a trade.
L1_CanRejectInstructions
boolean
Can reject settlement instructions for a trade.
L1_CanRelease
boolean
Relates to post trade actions: User can release the trade
L1_SettlementStatus
string
Caplin supported statuses are [PENDING, AFFIRMED, CONFIRMED, DISPUTED, CANCELLED, REPLACED, AUTO_CONFIRMED, OVERDUE, REJECTED]
L1_NextActionDeadline
datetime
Example: 2018-03-16T07:25:16+00:00
The deadline for a user to perform a trade's next action in ISO-8601 format
L1_NextActionDeadlineDisplayTimezone
string
Example: America/New_York
The timezone for the NextActionDeadline field in the form Area/Location
L1_AffirmedBy
string
The name of the user who affirmed a trade.
L1_AffirmedDateTime
datetime
Example: 2018-03-16T07:25:16+00:00
The time at which a trade was affirmed in ISO-8601 format
L1_ConfirmedBy
string
The name of the user who confirmed a trade.
L1_ConfirmedDateTime
datetime
Example: 2018-03-16T07:25:16+00:00
The time at which a trade was confirmed in ISO-8601 format
L1_IsPayNetted
boolean
Denotes whether the pay side of a trade has been netted.
L1_IsReceiveNetted
boolean
Denotes whether the receive side of a trade has been netted.
L1_IsPayNettingRequired
boolean
Denotes whether the pay side of a trade requires netting.
L1_IsReceiveNettingRequired
boolean
Denotes whether the receive side of a trade requires netting.
L1_IsPaySplit
boolean
Denotes whether the pay side of a trade has been split.
L1_IsReceiveSplit
boolean
Denotes whether the receive side of a trade has been split.
NostroAccount L1
L1_NostroName
string
Example: GBP Nostro Account.
An identifier for the given nostro account.
L1_NostroBIC
string
Example: ARABAEADABC
The Bank Identifier Code denoting the bank which will receive the money.
L1_NostroAccount
string
Example: AE770090004000824676500
The account at the bank denoted by the NostroBIC field that will receive the money.
RemarksEntry L1_Remarks[n]
L1_Remarks[n]Remarks
string
The text content of a comment left on a leg of a trade or order.
L1_Remarks[n]RemarkDateTime
datetime
Example: 2018-03-16T07:25:16+00:00
The date and time a remark was left on in ISO-8601 format.
L1_Remarks[n]RemarkSource
string
The username of the person who left a remark on a trade.
L1_Remarks[n]RemarkOriginStatus
string
Additional remark field pointing at the previous status of the trade.
L1_Remarks[n]RemarkTargetStatus
string
Additional remark field pointing at the current status of the trade when the remark was added.
L1_TradeID
string
Example: 00001561
A unique identifier for this trade
L1_AllInRate
decimal
Example: 1.091790
L1_AllInRateDPS
integer
Example: 5
The number of decimal places to display after the decimal point.
L1_AllInMidRate
decimal
Example: 1.091790
The mid rate used in charging customers for accepting banker's acceptances, consisting of the discount interest rate plus the commission.
L1_FwdPoints
decimal
Example: 0.001198
L1_FwdMidPoints
decimal
Example: 0.005390
The number of basis points added to or subtracted from the mid rate to determine the forward rate for delivery on a specific value date.
L1_FwdPips
string
Example: 11.98
L1_BuySell
string
The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.
L1_Amount
decimal
The amount of a trade or order in the DealtCurrency.
L1_ContraAmount
decimal
Example: 350
The amount that is exchanged for the Amount. This will be defined in the contra currency of the DealtCurrency.
L1_Tenor
string
Example: 1M
Supported types are [ON, [TODAY, TOD, TD], TN, [TOM, ND], SPOT, SN, 1D, 1W, 2W, 3W, 4W, 1M, 2M, 4M, 5M, 6M, 7M, 8M, 9M, 10M, 11M, [1Y, 12M], 15M, 18M, 21M, [2Y, 24M], [3Y, 36M], [4Y, 48M], [5Y, 60M], broken]. 'broken' indicates that the settlement date does not fall onto a tenor.
L1_SettlementDate
string
L1_FilledAmount
decimal
Example: 0
L1_RemainingAmount
decimal
Example: 500
L1_RiskDate
string
Example: 20160314
The date in the settlement window which yields the lowest client sell price, or the highest client buy price.
L1_RiskTenor
string
Example: 1W
The tenor in the settlement window which yields the lowest client sell price, or the highest client buy price.
L1_StartDate
string
Example: 20150620
L1_StartTenor
string
Example: 1W
L1_IsTimeOption
boolean
Example: true
true if a leg is time-option
L1_Account
string
Example: Garfields|GARF
The account a trade or order has been submitted against. The format is <description>|<name> or <name>|<name>
L1_Profit
decimal
Example: 1000
The sales profit in the specified currency.
L1_CostAmount
decimal
Example: 12412891.31
The actual transactional cost of performing the trade to the client in the home currency
L1_EntityId
string
Example: CUSTONE
The entity the trade is on behalf of. For example, if the logged in user user1@customer.co.za wishes to make a trade on behalf of entity CUSTONE, then the value of this field will be CUSTONE. If this field is absent on a leg then the default entity should be presumed.
L1_EntityDescription
string
Example: Customer 1
The description of a trade on behalf of entity.
L1_CostCurrency
string
Example: GBP
The currency that the cost is displayed in, this could be any currency but will typically be set to the home currency
L1_CostPercentage
decimal
Example: 13.56
Percentage of the overall price which is the transactional cost to the client of performing the trade. This number should be out of 100, where 100.0 represents 100%.
L1_ContraCostAmount
decimal
The actual transactional cost of performing the trade to the client on the contra currency
L1_ContraCostCurrency
string
Example: GBP
The contra currency that the cost is displayed in
L1_ContraCostPercentage
decimal
Example: 13.56
Percentage of the overall price which is the transactional cost to the client of performing the trade in contra currency. This number should be out of 100, where 100.0 represents 100%.
L1_ServiceContraCostAmount
decimal
The actual service cost of performing the trade to the client on the contra currency
L1_ServiceContraCostCurrency
string
Example: GBP
The service contra currency that the cost is displayed in
L1_ServiceCostAmount
decimal
The actual service cost of performing the trade to the client on the home currency
L1_ServiceCostCurrency
string
Example: GBP
The service home currency that the cost is displayed in
L1_TOBOUser
string
Example: client@customer.co.za
The user the trade is on behalf of. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be client@customer.co.za.
L1_FullName
string
The full name of the user the trade is on behalf of
L1_ForwardPointsDecimalOffset
integer
Example: 4
Optional override to determine the number of decimal places to move forward points before displaying them. Should be used if standard display of pips is not desired.
L1_AllocatableAmount
decimal
Example: 500
This is the amount that can be allocated or rolled.
L1_AllocatableContraAmount
decimal
Example: 500
This is the amount that can be allocated or rolled, defined in the contra currency of the DealtCurrency
L1_OriginalRate
decimal
The Rate of the trade that this trade was created from.
L1_AdjustedSwapPoints
decimal
The swap points adjusted for this repriced trade
SettlementSummaryTradeFields U1
SettlementSummaryFields U1_Pay
U1_PaySettlementDisplayName
string
Example: [CCY] Account 1
The name of the settlement instruction. This field can be omitted.
U1_PaySettlementRemarks
string
The remarks corresponding to the settlement details
SettlementSummaryFields U1_Receive
U1_ReceiveSettlementDisplayName
string
Example: [CCY] Account 1
The name of the settlement instruction. This field can be omitted.
U1_ReceiveSettlementRemarks
string
The remarks corresponding to the settlement details
DisplayFields
string
Example: method={'import':'static com.caplin.motif.fx.config.DefaultDisplayFields.addDefaultSalesAllocationDetailsUpdateFields','name':'addDefaultSalesAllocationDetailsUpdateFields','comment':'See DefaultDisplayFields javadoc for parameters and available builder methods.'}
Configuration for a frontend to display label-value pairs. Use DefaultDisplayFields builders to provide Caplin default and/or custom fields.
TradeConfirmation Ticket Forward Trade Confirmation
CommonForwardTradeConfirmation
CommonTradeConfirmationFields
TradeID
string
Example: 00001561
A unique identifier for this trade
CurrencyPair
string
The currency pair for the trade. For example, EURUSD
DealtCurrency
string
Example: GBP
The currency of the Amount of a trade or order.
SpotRate
decimal
Example: 1.08341
SpotMidRate
decimal
Example: 1.08345
The mid rate between the SpotAskRate and SpotBidRate. Note that this will not always be precisely between.
SpotRateDPS
integer
Example: 5
The number of decimal places to display after the decimal point.
ExecutionDateTime
string
Example: 20160322123621
TradeDate
string
Example: 20160314
Account
string
Example: Garfields|GARF
The account a trade or order has been submitted against. The format is <description>|<name> or <name>|<name>
TraderUsername
string
Example: sales_trader@novobank.co.za
The user who entered the trade. This may be on behalf of themselves, or on behalf of someone else. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be dealer1@novobank.co.za. If the user client@customer.co.za makes a trade on behalf of themselves it will be client@customer.co.za.
TOBOUser
string
Example: client@customer.co.za
The user the trade is on behalf of. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be client@customer.co.za.
FullName
string
The full name of the user the trade is on behalf of
EntityId
string
Example: CUSTONE
The entity the trade is on behalf of. For example, if the logged in user user1@customer.co.za wishes to make a trade on behalf of entity CUSTONE, then the value of this field will be CUSTONE. If this field is absent on a leg then the default entity should be presumed.
EntityDescription
string
Example: Customer 1
The description of a trade on behalf of entity.
AssetType
string
Example: FX
A grouping of investments that exhibit similar characteristics and are subject to the same laws and regulations. Supported asset types are [FX, PM]
TradingType
string
Caplin supported values are [SPOT, FWD, NDF, NDF_FIXING, NDS, TIME_OPTION, DRAWDOWN, SWAP, BLOCK, PAR_FORWARD]. See the constants defined within com.caplin.motif.fx.trading.FXTradingType for further details.
DeliverableType
string
Caplin supported values are [DELIVERABLE, NON_DELIVERABLE]. Determines whether trade is deliverable or not (for ndfs etc)
DigitsBeforePips
integer
Example: 2
Precision-related field that tells the client how to display rates. This is the number of digits between the decimal point and the pips (i.e the big digits that the client wants to look at). For most currency pairs the value of this field will be 2, i.e. for a USDGBP rate of 1.23456 the pips are 45 so there are two digits between the decimal point and the pips. For USDJPY the rate could be 103.256 and the pips are the 25, so in this case the value of DigitsBeforePips should be 0.
NumberOfPips
integer
Example: 2
Precision-related field that tells the client how to display rates. This is the number of pips the client wants to look at. Normally this value is 2.
OrderID
string
The id of the order.
WarningCode
string
Example: 001
The code for the warning regarding a quote request.
WarningMessage
string
Example: You do not have sufficient credit for EUR
The message to display for any warnings regarding a quote request
Client
string
Client is a duplicate of TOBOUser
CostAmount
decimal
Example: 12412891.31
The actual transactional cost of performing the trade to the client in the home currency
CostCurrency
string
Example: GBP
The currency that the cost is displayed in, this could be any currency but will typically be set to the home currency
CostCurrencyDPS
integer
Example: 2
The number of decimal places to display after the decimal point.
CostPercentage
decimal
Example: 13.56
Percentage of the overall price which is the transactional cost to the client of performing the trade. This number should be out of 100, where 100.0 represents 100%.
ContraCostAmount
decimal
The actual transactional cost of performing the trade to the client on the contra currency
ContraCostCurrency
string
Example: GBP
The contra currency that the cost is displayed in
ContraCostCurrencyDPS
integer
Example: 2
The number of decimal places to display after the decimal point.
ContraCostPercentage
decimal
Example: 13.56
Percentage of the overall price which is the transactional cost to the client of performing the trade in contra currency. This number should be out of 100, where 100.0 represents 100%.
ServiceCostCurrencyDPS
integer
Example: 2
The number of decimal places to display after the decimal point.
ServiceContraCostCurrencyDPS
integer
Example: 2
The number of decimal places to display after the decimal point.
CanAllocate
string
Defines if a user can allocate a trade. Enum of: NONE, FULL, FULL_OR_PARTIAL
CanDrawdown
boolean
Ability to Drawdown a time option trade.
AllocationSettlementDateOptions
string
Example: ORIGINAL,EARLIER,LATER
Comma-separated list, defines available settlement dates for an allocation.
IsAllocated
boolean
Define if a trade is already allocated or rolled
IsReversible
boolean
Whether a trade can be reversed.
IsAmendable
boolean
Whether a trade can be amended.
IsCancellable
boolean
Whether a trade can be cancelled.
AmountDPS
integer
Example: 2
The precision for a specified currency pair and dealt currency
ContraAmountDPS
integer
Example: 2
The precision for a specified currency pair and contra currency
Remarks
string
The text content of a comment left on a leg of a trade or order.
UTI
string
Unique Transaction Identifier.
BackOfficeID
string
Back office trade identifier.
PriceSource
string
Example: st1@caplin.com
Identifies the person or system that priced the trade.
Venue
string
Example: FX Sales
Where the trade was placed.
Purpose
string
Example: Commercial
The purpose of a trade.
Tags
string
Example: method={'import':'static com.caplin.motif.fx.config.definitions.common.Tag','name':'Arrays.asList'}
Tags for a trade.
ClientAgreementDateTime
datetime
Optional field that can be used to display the client agreement date time in a trade amend. This field can also be included in the Amend's EditableFields list to allow the user to edit it. This field can be used to allow the user to specify a client agreement time in scenarios where the execution time might have been different
PostTradeType
string
The post-trade action that created this trade. Enum of: ROLL_BACK, ROLL_FORWARD, ALLOCATION
OriginalTradeID
string
TradeID of the trade that this trade was created from.
NDFTradeConfirmationFields
FixingSource
string
Example: WMR 8am London Time
SettlementCurrency
string
Example: GBP
A currency for of settlement instruction
LegTradeConfirmationFields L1
SettlementTradeFields L1
SettlementFields L1_Pay[n]
L1_Pay[n]SettlementId
string
The identifier for the settlement instruction.
L1_Pay[n]SettlementCurrency
string
Example: GBP
A currency for of settlement instruction
L1_Pay[n]SettlementAmount
decimal
The amount of a settlement
L1_Pay[n]SettlementDirection
string
The direction in which the settlement details refer to, supported directions are: PAY, RECEIVE, BOTH
L1_Pay[n]IsDefaultSettlementInstruction
boolean
Is this the default settlement instruction for this currency
L1_Pay[n]SettlementInstructionType
string
Example: EXISTING
The type of settlement instruction attached to a trade. Supported types are [EXISTING, ADHOC, NONE]
L1_Pay[n]SettlementDisplayName
string
Example: [CCY] Account 1
The name of the settlement instruction. This field can be omitted.
L1_Pay[n]SettlementStatus
string
Caplin supported statuses are [PENDING, AFFIRMED, CONFIRMED, DISPUTED, CANCELLED, REPLACED, AUTO_CONFIRMED, OVERDUE, REJECTED]
L1_Pay[n]BankAccount
string
Example: 12345678
The account number of the bank
L1_Pay[n]BankSwift
string
Example: CAP123
The BIC of the bank
L1_Pay[n]BankName
string
Example: Bank Of Caplin
The name of the bank
L1_Pay[n]BankAddress1
string
Example: 12 Capitol
The first line of the bank's address
L1_Pay[n]BankAddress2
string
Example: The City
The second line of the bank's address
L1_Pay[n]BankAddress3
string
Example: London
The third line of the bank's address
L1_Pay[n]IndividualAccount
string
Example: 87654321
The account number of the recipient
L1_Pay[n]IndividualSwift
string
Example: SOLD987
The BIC of the recipient's account
L1_Pay[n]IndividualName
string
Example: Susan Sellers
The name of the payee or payee's bank
L1_Pay[n]IndividualAddress1
string
Example: 98 Lane
The first line of the recipient
L1_Pay[n]IndividualAddress2
string
Example: Manchester
The second line of the recipient
L1_Pay[n]NettingStatus
string
Example: NETTED
The status that denotes the permanent netting state of a settlement. This is required to know which settlements have been netted and which have not
L1_Pay[n]SplitComponentId
string
The unique ID of a split component
L1_Pay[n]SettlementDetailsLine1
string
The first line of remittance information.
L1_Pay[n]SettlementDetailsLine2
string
The second line of remittance information.
L1_Pay[n]SettlementDetailsLine3
string
The third line of remittance information.
L1_Pay[n]SettlementDetailsLine4
string
The fourth line of remittance information.
L1_Pay[n]SettlementDetailsLine5
string
The fifth line of remittance information.
L1_Pay[n]SettlementDetailsLine6
string
The sixth line of remittance information.
SettlementFields L1_Receive[n]
L1_Receive[n]SettlementId
string
The identifier for the settlement instruction.
L1_Receive[n]SettlementCurrency
string
Example: GBP
A currency for of settlement instruction
L1_Receive[n]SettlementAmount
decimal
The amount of a settlement
L1_Receive[n]SettlementDirection
string
The direction in which the settlement details refer to, supported directions are: PAY, RECEIVE, BOTH
L1_Receive[n]IsDefaultSettlementInstruction
boolean
Is this the default settlement instruction for this currency
L1_Receive[n]SettlementInstructionType
string
Example: EXISTING
The type of settlement instruction attached to a trade. Supported types are [EXISTING, ADHOC, NONE]
L1_Receive[n]SettlementDisplayName
string
Example: [CCY] Account 1
The name of the settlement instruction. This field can be omitted.
L1_Receive[n]SettlementStatus
string
Caplin supported statuses are [PENDING, AFFIRMED, CONFIRMED, DISPUTED, CANCELLED, REPLACED, AUTO_CONFIRMED, OVERDUE, REJECTED]
L1_Receive[n]BankAccount
string
Example: 12345678
The account number of the bank
L1_Receive[n]BankSwift
string
Example: CAP123
The BIC of the bank
L1_Receive[n]BankName
string
Example: Bank Of Caplin
The name of the bank
L1_Receive[n]BankAddress1
string
Example: 12 Capitol
The first line of the bank's address
L1_Receive[n]BankAddress2
string
Example: The City
The second line of the bank's address
L1_Receive[n]BankAddress3
string
Example: London
The third line of the bank's address
L1_Receive[n]IndividualAccount
string
Example: 87654321
The account number of the recipient
L1_Receive[n]IndividualSwift
string
Example: SOLD987
The BIC of the recipient's account
L1_Receive[n]IndividualName
string
Example: Susan Sellers
The name of the payee or payee's bank
L1_Receive[n]IndividualAddress1
string
Example: 98 Lane
The first line of the recipient
L1_Receive[n]IndividualAddress2
string
Example: Manchester
The second line of the recipient
L1_Receive[n]NettingStatus
string
Example: NETTED
The status that denotes the permanent netting state of a settlement. This is required to know which settlements have been netted and which have not
L1_Receive[n]SplitComponentId
string
The unique ID of a split component
L1_Receive[n]SettlementDetailsLine1
string
The first line of remittance information.
L1_Receive[n]SettlementDetailsLine2
string
The second line of remittance information.
L1_Receive[n]SettlementDetailsLine3
string
The third line of remittance information.
L1_Receive[n]SettlementDetailsLine4
string
The fourth line of remittance information.
L1_Receive[n]SettlementDetailsLine5
string
The fifth line of remittance information.
L1_Receive[n]SettlementDetailsLine6
string
The sixth line of remittance information.
NettingComponents L1_PayNettingComponents[n]
L1_PayNettingComponents[n]TradeID
string
Example: 00001561
A unique identifier for this trade
L1_PayNettingComponents[n]BuySell
string
The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.
L1_PayNettingComponents[n]Amount
decimal
The amount of a trade or order in the DealtCurrency.
NettingComponents L1_ReceiveNettingComponents[n]
L1_ReceiveNettingComponents[n]TradeID
string
Example: 00001561
A unique identifier for this trade
L1_ReceiveNettingComponents[n]BuySell
string
The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.
L1_ReceiveNettingComponents[n]Amount
decimal
The amount of a trade or order in the DealtCurrency.
L1_CanAffirm
boolean
Ability to Affirm the Trade Details are as agreed.
L1_CanConfirm
boolean
Ability to Confirm the Settlement Details are now final.
L1_CanAdHoc
boolean
Can confirm adhoc settlement instructions for a trade.
L1_CanDispute
boolean
Ability to Dispute the details of a trade, if for example something is wrong about it.
L1_CanCancel
boolean
Ability to Cancel a trade, for example if a mistake was made.
L1_CanReplace
boolean
Ability to mark a deal as amended, meaning that it has been replaced by a corrected deal.
L1_CanAutoConfirm
boolean
Ability to Mark that the deal was Confirmed by the Bank, rather than by the client.
L1_CanUnconfirm
boolean
Ability to move the deal back to a Pending state.
L1_CanApproveInstructions
boolean
Can approve settlement instructions for a trade.
L1_CanRejectInstructions
boolean
Can reject settlement instructions for a trade.
L1_CanRelease
boolean
Relates to post trade actions: User can release the trade
L1_SettlementStatus
string
Caplin supported statuses are [PENDING, AFFIRMED, CONFIRMED, DISPUTED, CANCELLED, REPLACED, AUTO_CONFIRMED, OVERDUE, REJECTED]
L1_NextActionDeadline
datetime
Example: 2018-03-16T07:25:16+00:00
The deadline for a user to perform a trade's next action in ISO-8601 format
L1_NextActionDeadlineDisplayTimezone
string
Example: America/New_York
The timezone for the NextActionDeadline field in the form Area/Location
L1_AffirmedBy
string
The name of the user who affirmed a trade.
L1_AffirmedDateTime
datetime
Example: 2018-03-16T07:25:16+00:00
The time at which a trade was affirmed in ISO-8601 format
L1_ConfirmedBy
string
The name of the user who confirmed a trade.
L1_ConfirmedDateTime
datetime
Example: 2018-03-16T07:25:16+00:00
The time at which a trade was confirmed in ISO-8601 format
L1_IsPayNetted
boolean
Denotes whether the pay side of a trade has been netted.
L1_IsReceiveNetted
boolean
Denotes whether the receive side of a trade has been netted.
L1_IsPayNettingRequired
boolean
Denotes whether the pay side of a trade requires netting.
L1_IsReceiveNettingRequired
boolean
Denotes whether the receive side of a trade requires netting.
L1_IsPaySplit
boolean
Denotes whether the pay side of a trade has been split.
L1_IsReceiveSplit
boolean
Denotes whether the receive side of a trade has been split.
NostroAccount L1
L1_NostroName
string
Example: GBP Nostro Account.
An identifier for the given nostro account.
L1_NostroBIC
string
Example: ARABAEADABC
The Bank Identifier Code denoting the bank which will receive the money.
L1_NostroAccount
string
Example: AE770090004000824676500
The account at the bank denoted by the NostroBIC field that will receive the money.
RemarksEntry L1_Remarks[n]
L1_Remarks[n]Remarks
string
The text content of a comment left on a leg of a trade or order.
L1_Remarks[n]RemarkDateTime
datetime
Example: 2018-03-16T07:25:16+00:00
The date and time a remark was left on in ISO-8601 format.
L1_Remarks[n]RemarkSource
string
The username of the person who left a remark on a trade.
L1_Remarks[n]RemarkOriginStatus
string
Additional remark field pointing at the previous status of the trade.
L1_Remarks[n]RemarkTargetStatus
string
Additional remark field pointing at the current status of the trade when the remark was added.
L1_TradeID
string
Example: 00001561
A unique identifier for this trade
L1_AllInRate
decimal
Example: 1.091790
L1_AllInRateDPS
integer
Example: 5
The number of decimal places to display after the decimal point.
L1_AllInMidRate
decimal
Example: 1.091790
The mid rate used in charging customers for accepting banker's acceptances, consisting of the discount interest rate plus the commission.
L1_FwdPoints
decimal
Example: 0.001198
L1_FwdMidPoints
decimal
Example: 0.005390
The number of basis points added to or subtracted from the mid rate to determine the forward rate for delivery on a specific value date.
L1_FwdPips
string
Example: 11.98
L1_BuySell
string
The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.
L1_Amount
decimal
The amount of a trade or order in the DealtCurrency.
L1_ContraAmount
decimal
Example: 350
The amount that is exchanged for the Amount. This will be defined in the contra currency of the DealtCurrency.
L1_Tenor
string
Example: 1M
Supported types are [ON, [TODAY, TOD, TD], TN, [TOM, ND], SPOT, SN, 1D, 1W, 2W, 3W, 4W, 1M, 2M, 4M, 5M, 6M, 7M, 8M, 9M, 10M, 11M, [1Y, 12M], 15M, 18M, 21M, [2Y, 24M], [3Y, 36M], [4Y, 48M], [5Y, 60M], broken]. 'broken' indicates that the settlement date does not fall onto a tenor.
L1_SettlementDate
string
L1_FilledAmount
decimal
Example: 0
L1_RemainingAmount
decimal
Example: 500
L1_RiskDate
string
Example: 20160314
The date in the settlement window which yields the lowest client sell price, or the highest client buy price.
L1_RiskTenor
string
Example: 1W
The tenor in the settlement window which yields the lowest client sell price, or the highest client buy price.
L1_StartDate
string
Example: 20150620
L1_StartTenor
string
Example: 1W
L1_IsTimeOption
boolean
Example: true
true if a leg is time-option
L1_Account
string
Example: Garfields|GARF
The account a trade or order has been submitted against. The format is <description>|<name> or <name>|<name>
L1_Profit
decimal
Example: 1000
The sales profit in the specified currency.
L1_CostAmount
decimal
Example: 12412891.31
The actual transactional cost of performing the trade to the client in the home currency
L1_EntityId
string
Example: CUSTONE
The entity the trade is on behalf of. For example, if the logged in user user1@customer.co.za wishes to make a trade on behalf of entity CUSTONE, then the value of this field will be CUSTONE. If this field is absent on a leg then the default entity should be presumed.
L1_EntityDescription
string
Example: Customer 1
The description of a trade on behalf of entity.
L1_CostCurrency
string
Example: GBP
The currency that the cost is displayed in, this could be any currency but will typically be set to the home currency
L1_CostPercentage
decimal
Example: 13.56
Percentage of the overall price which is the transactional cost to the client of performing the trade. This number should be out of 100, where 100.0 represents 100%.
L1_ContraCostAmount
decimal
The actual transactional cost of performing the trade to the client on the contra currency
L1_ContraCostCurrency
string
Example: GBP
The contra currency that the cost is displayed in
L1_ContraCostPercentage
decimal
Example: 13.56
Percentage of the overall price which is the transactional cost to the client of performing the trade in contra currency. This number should be out of 100, where 100.0 represents 100%.
L1_ServiceContraCostAmount
decimal
The actual service cost of performing the trade to the client on the contra currency
L1_ServiceContraCostCurrency
string
Example: GBP
The service contra currency that the cost is displayed in
L1_ServiceCostAmount
decimal
The actual service cost of performing the trade to the client on the home currency
L1_ServiceCostCurrency
string
Example: GBP
The service home currency that the cost is displayed in
L1_TOBOUser
string
Example: client@customer.co.za
The user the trade is on behalf of. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be client@customer.co.za.
L1_FullName
string
The full name of the user the trade is on behalf of
L1_ForwardPointsDecimalOffset
integer
Example: 4
Optional override to determine the number of decimal places to move forward points before displaying them. Should be used if standard display of pips is not desired.
L1_AllocatableAmount
decimal
Example: 500
This is the amount that can be allocated or rolled.
L1_AllocatableContraAmount
decimal
Example: 500
This is the amount that can be allocated or rolled, defined in the contra currency of the DealtCurrency
L1_OriginalRate
decimal
The Rate of the trade that this trade was created from.
L1_AdjustedSwapPoints
decimal
The swap points adjusted for this repriced trade
NDFLegTradeConfirmationFields L1
L1_FixingDate
string
Example: 20150620
This is the day and time whereby the comparison between the NDF rate and the prevailing spot rate is made.
L1_FixingCurrency
string
Example: USD
L1_FixingCode
string
Example: [CCY]1/1600/GBLO
L1_FixingDescription
string
Example: WMR [CCY] 4pm London
L1_FixingAmount
decimal
The Buy or Sell Amount from the original deal for currency that is the Settlement Currency
L1_ReferenceCurrency
decimal
The Buy or Sell Currency that is not the Settlement Currency
L1_ReferenceAmount
decimal
The Buy or Sell Amount from the original deal for currency that is not the Settlement Currency
L1_SettlementAmount
decimal
The amount of a settlement
TimeOptionLegTradeConfirmationFields L1
L1_FilledAmount
decimal
Example: 0
L1_RemainingAmount
decimal
Example: 500
L1_RiskDate
string
Example: 20160314
The date in the settlement window which yields the lowest client sell price, or the highest client buy price.
L1_RiskTenor
string
Example: 1W
The tenor in the settlement window which yields the lowest client sell price, or the highest client buy price.
L1_StartDate
string
Example: 20150620
L1_StartTenor
string
Example: 1W
SettlementSummaryTradeFields U1
SettlementSummaryFields U1_Pay
U1_PaySettlementDisplayName
string
Example: [CCY] Account 1
The name of the settlement instruction. This field can be omitted.
U1_PaySettlementRemarks
string
The remarks corresponding to the settlement details
SettlementSummaryFields U1_Receive
U1_ReceiveSettlementDisplayName
string
Example: [CCY] Account 1
The name of the settlement instruction. This field can be omitted.
U1_ReceiveSettlementRemarks
string
The remarks corresponding to the settlement details
DisplayFields
string
Example: method={'import':'static com.caplin.motif.fx.config.DefaultDisplayFields.addDefaultSalesAllocationDetailsUpdateFields','name':'addDefaultSalesAllocationDetailsUpdateFields','comment':'See DefaultDisplayFields javadoc for parameters and available builder methods.'}
Configuration for a frontend to display label-value pairs. Use DefaultDisplayFields builders to provide Caplin default and/or custom fields.