fxtr.017.001.04
Scope The ForeignExchangeTradeStatusAndDetails message is sent by a central system to the participant to provide notification of the status and details of a foreign exchange trade. Usage The notification is sent by a central settlement system to the two trading parties after it has received foreign exchange trade instructions from both.
Message Construction
Every ISO20022 message has at the highest level what we call ‘building blocks’. Because the message is constructed as immutable records, the association is by composition. Below you can see the relationship between the message and its constituent building blocks: For comparison, see the ISO20022 official specification
classDiagram direction LR %% ForeignExchangeTradeStatusAndDetailsNotificationV04 recursion level 0 with max 0 ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "1..1" TradeData14 : StatusDetails ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "1..1" TradeAgreement12 : TradeInformation ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "1..1" TradePartyIdentification6 : TradingSideIdentification ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "1..1" TradePartyIdentification6 : CounterpartySideIdentification ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "1..1" AmountsAndValueDate1 : TradeAmounts ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "1..1" AgreedRate3 : AgreedRate ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "0..1" NonDeliverableForwardConditions2 : NonDeliverableForwardConditions ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "0..1" SettlementParties29 : TradingSideSettlementInstructions ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "0..1" SettlementParties29 : CounterpartySideSettlementInstructions ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "0..1" GeneralInformation5 : GeneralInformation ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "0..1" SplitTradeDetails3 : SplitTradeInformation ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "0..1" RegulatoryReporting6 : RegulatoryReporting ForeignExchangeTradeStatusAndDetailsNotificationV04 *-- "0..1" SupplementaryData1 : SupplementaryData
Now, we will zero-in one-by-one on each of these building blocks.
StatusDetails building block
Provides information on the status of a foreign exchange trade in the central system. Provides information on the status of a trade. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradeData14 recursion level 0 with max 1 class TradeData14{ MatchingSystemUniqueReference IsoMax35Text MatchingSystemMatchingReference IsoMax35Text MatchingSystemMatchedSideReference IsoMax35Text StatusOriginator IsoMax35Text CurrentStatusSubType StatusSubType2Code CurrentStatusDateTime IsoISODateTime AllegedTrade IsoYesNoIndicator PreviousStatusSubType StatusSubType2Code } TradeData14 *-- "1..1" StatusAndSubStatus2 : CurrentStatus TradeData14 *-- "0..1" IStatus28Choice : PreviousStatus %% StatusAndSubStatus2 recursion level 1 with max 1 class StatusAndSubStatus2{ SubStatusCode IsoExact4AlphaNumericText } StatusAndSubStatus2 *-- "1..1" IStatus27Choice : StatusCode %% IStatus28Choice recursion level 1 with max 1
TradeData14 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
MatchingSystemUniqueReference | Reference to the unique system identification assigned to the trade by the central matching system. | IsoMax35Text - Required 1..1 |
MatchingSystemMatchingReference | Reference to the unique matching identification assigned to the trade and to the matching trade from the counterparty by the central matching system. | IsoMax35Text - Optional 0..1 |
MatchingSystemMatchedSideReference | Unique reference from the central settlement system that allows the removal of alleged trades once the matched status notification for the matching side has been received. | IsoMax35Text - Optional 0..1 |
StatusOriginator | Party that assigned the status to the trade. | IsoMax35Text - Optional 0..1 |
CurrentStatus | Specifies the new status of the trade. | StatusAndSubStatus2 - Required 1..1 |
CurrentStatusSubType | Additional information about the current status of the trade. | StatusSubType2Code - Optional 0..1 |
CurrentStatusDateTime | Specifies the date and time at which the current status was assigned. | IsoISODateTime - Optional 0..1 |
PreviousStatus | Specifies the previous status of the trade. | IStatus28Choice - Optional 0..1 |
AllegedTrade | Specifies whether a trade is alleged or not. | IsoYesNoIndicator - Optional 0..1 |
PreviousStatusSubType | Additional information on the previous status of a trade in a central system. | StatusSubType2Code - Optional 0..1 |
TradeInformation building block
General information related to the foreign exchange trade. Date and identification of a trade together with references to previous events in its life. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradeAgreement12 recursion level 0 with max 1 class TradeAgreement12{ TradeDate IsoISODate MessageIdentification IsoMax35Text OriginatorReference IsoMax35Text CommonReference IsoMax35Text AmendOrCancelReason IsoMax35Text RelatedReference IsoMax35Text ProductType IsoMax35Text OperationType IsoMax4Text OperationScope IsoMax4Text SettlementSessionIdentifier IsoExact4AlphaNumericText SplitTradeIndicator IsoYesNoIndicator PaymentVersusPaymentIndicator IsoYesNoIndicator }
TradeAgreement12 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
TradeDate | Date on which the trading parties agreed on the trade. | IsoISODate - Required 1..1 |
MessageIdentification | Identification of the present message assigned by the party issuing the message. This identification must be unique amongst all messages of same type sent by the same party. | IsoMax35Text - Required 1..1 |
OriginatorReference | Represents the original reference of the instruction for which the status is given, as assigned by the participant that submitted the foreign exchange trade. | IsoMax35Text - Required 1..1 |
CommonReference | Reference common to both parties of the trade. | IsoMax35Text - Optional 0..1 |
AmendOrCancelReason | Specifies the reason for the cancellation or the amendment. | IsoMax35Text - Optional 0..1 |
RelatedReference | Reference to the identification of a previous event in the life of a trade which is amended or cancelled. | IsoMax35Text - Optional 0..1 |
ProductType | Specifies the product for which the status of the confirmation is reported. | IsoMax35Text - Optional 0..1 |
OperationType | Specifies the type of underlying transaction, for example cancellation (CANC). | IsoMax4Text - Optional 0..1 |
OperationScope | Specifies the business role between the submitter and the trade party, for example, agent (AGNT). | IsoMax4Text - Optional 0..1 |
SettlementSessionIdentifier | To indicate the requested CLS settlement session that the related trade is part of. | IsoExact4AlphaNumericText - Optional 0..1 |
SplitTradeIndicator | To indicate if the trade is split. | IsoYesNoIndicator - Required 1..1 |
PaymentVersusPaymentIndicator | Specifies if the FX transaction is PVP settlement. Payment versus payment (PvP) settlement arrangement allows for two currencies in a foreign exchange (FX) contract to exchange simultaneously on a central settlement platform to eliminate the settlement risk. To apply PvP, the two parties in the FX contract need to have a pre-agreement with the central settlement platform, for example, USD/MYR FX deals require both parties to have an agreement to settle via HK Interbank Clearing Ltd settlement platform. | IsoYesNoIndicator - Optional 0..1 |
TradingSideIdentification building block
Party(ies) on the trading side of the foreign exchange trade. Entity involved in an activity. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradePartyIdentification6 recursion level 0 with max 1 TradePartyIdentification6 *-- "1..1" IPartyIdentification73Choice : SubmittingParty TradePartyIdentification6 *-- "0..1" IPartyIdentification73Choice : TradeParty TradePartyIdentification6 *-- "0..0" FundIdentification4 : FundIdentification %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% FundIdentification4 recursion level 1 with max 1 class FundIdentification4{ AccountIdentificationWithCustodian IsoMax35Text } FundIdentification4 *-- "1..1" PartyIdentification60 : FundIdentification FundIdentification4 *-- "0..1" IPartyIdentification73Choice : CustodianIdentification
TradePartyIdentification6 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
SubmittingParty | Party that submits the foreign exchange trade to the matching system or to the settlement system or to the counterparty. | IPartyIdentification73Choice - Required 1..1 |
TradeParty | Party that originated the foreign exchange trade. This party may be the same as the submitting party. | IPartyIdentification73Choice - Optional 0..1 |
FundIdentification | Identifies the fund that is one of the parties in the foreign exchange trade. | FundIdentification4 - Unknown 0..0 |
CounterpartySideIdentification building block
Party(ies) on the counterparty side of the foreign exchange trade. Entity involved in an activity. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradePartyIdentification6 recursion level 0 with max 1 TradePartyIdentification6 *-- "1..1" IPartyIdentification73Choice : SubmittingParty TradePartyIdentification6 *-- "0..1" IPartyIdentification73Choice : TradeParty TradePartyIdentification6 *-- "0..0" FundIdentification4 : FundIdentification %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% FundIdentification4 recursion level 1 with max 1 class FundIdentification4{ AccountIdentificationWithCustodian IsoMax35Text } FundIdentification4 *-- "1..1" PartyIdentification60 : FundIdentification FundIdentification4 *-- "0..1" IPartyIdentification73Choice : CustodianIdentification
TradePartyIdentification6 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
SubmittingParty | Party that submits the foreign exchange trade to the matching system or to the settlement system or to the counterparty. | IPartyIdentification73Choice - Required 1..1 |
TradeParty | Party that originated the foreign exchange trade. This party may be the same as the submitting party. | IPartyIdentification73Choice - Optional 0..1 |
FundIdentification | Identifies the fund that is one of the parties in the foreign exchange trade. | FundIdentification4 - Unknown 0..0 |
TradeAmounts building block
Amounts of the foreign exchange trade. Specifies the value date and the amounts traded in a foreign exchange transaction. For comparison, see the ISO20022 official specification
classDiagram direction tb %% AmountsAndValueDate1 recursion level 0 with max 1 class AmountsAndValueDate1{ TradingSideBuyAmount IsoActiveOrHistoricCurrencyAndAmount TradingSideSellAmount IsoActiveOrHistoricCurrencyAndAmount SettlementDate IsoISODate }
AmountsAndValueDate1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
TradingSideBuyAmount | Currency and amount bought in a foreign exchange trade. | IsoActiveOrHistoricCurrencyAndAmount - Required 1..1 |
TradingSideSellAmount | Currency and amount sold in a foreign exchange trade. | IsoActiveOrHistoricCurrencyAndAmount - Required 1..1 |
SettlementDate | Date on which the trade is settled, ie, the amounts are due. | IsoISODate - Required 1..1 |
AgreedRate building block
Exchange rate as agreed by the traders. Information needed to process a currency exchange or conversion. For comparison, see the ISO20022 official specification
classDiagram direction tb %% AgreedRate3 recursion level 0 with max 1 class AgreedRate3{ ExchangeRate IsoBaseOneRate UnitCurrency ActiveCurrencyCode QuotedCurrency ActiveCurrencyCode }
AgreedRate3 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
ExchangeRate | The value of one currency expressed in relation to another currency. ExchangeRate expresses the ratio between UnitCurrency and QuotedCurrency (ExchangeRate = UnitCurrency/QuotedCurrency). | IsoBaseOneRate - Required 1..1 |
UnitCurrency | Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is GBP. | ActiveCurrencyCode - Optional 0..1 |
QuotedCurrency | Currency into which the base currency is converted, in a currency exchange. | ActiveCurrencyCode - Optional 0..1 |
NonDeliverableForwardConditions building block
Provides the opening and fixing information for an NDF trade. Specifies the opening and valuation conditions for the non deliverable forward. For comparison, see the ISO20022 official specification
classDiagram direction tb %% NonDeliverableForwardConditions2 recursion level 0 with max 1 NonDeliverableForwardConditions2 *-- "1..1" OpeningConditions1 : OpeningConditions NonDeliverableForwardConditions2 *-- "0..1" FixingConditions1 : FixingConditions %% OpeningConditions1 recursion level 1 with max 1 class OpeningConditions1{ SettlementCurrency ActiveCurrencyCode ValuationDate IsoISODate } OpeningConditions1 *-- "1..2" SettlementRateSource1 : SettlementRateSource %% FixingConditions1 recursion level 1 with max 1 class FixingConditions1{ TradeDate IsoISODate OriginatorReference IsoMax35Text CommonReference IsoMax35Text RelatedReference IsoMax35Text TradingSideBuyAmount IsoActiveOrHistoricCurrencyAndAmount TradingSideSellAmount IsoActiveOrHistoricCurrencyAndAmount ExchangeRate IsoBaseOneRate }
NonDeliverableForwardConditions2 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
OpeningConditions | Provides the opening information associated with an NDF trade. | OpeningConditions1 - Required 1..1 |
FixingConditions | Provides the additional information for an NDF as supplied on a fixing instruction. | FixingConditions1 - Optional 0..1 |
TradingSideSettlementInstructions building block
Settlement instructions for the amounts received by the trading side. Identification of a settlement party by a choice between a BIC or a name and address or a party identification. For comparison, see the ISO20022 official specification
classDiagram direction tb %% SettlementParties29 recursion level 0 with max 1 SettlementParties29 *-- "0..1" IPartyIdentification73Choice : DeliveryAgent SettlementParties29 *-- "0..1" IPartyIdentification73Choice : Intermediary SettlementParties29 *-- "1..1" IPartyIdentification73Choice : ReceivingAgent SettlementParties29 *-- "0..1" IPartyIdentification73Choice : BeneficiaryInstitution %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1
SettlementParties29 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
DeliveryAgent | Financial institution from which cash will be transferred. | IPartyIdentification73Choice - Optional 0..1 |
Intermediary | Party, within the settlement chain, between the delivery and receiving agents. | IPartyIdentification73Choice - Optional 0..1 |
ReceivingAgent | Financial institution where the payee will receive the funds. | IPartyIdentification73Choice - Required 1..1 |
BeneficiaryInstitution | Ultimate institution that will receive the funds when different from the trading or counterparty side. | IPartyIdentification73Choice - Optional 0..1 |
CounterpartySideSettlementInstructions building block
Settlement instructions for the amounts received by the counterparty. Identification of a settlement party by a choice between a BIC or a name and address or a party identification. For comparison, see the ISO20022 official specification
classDiagram direction tb %% SettlementParties29 recursion level 0 with max 1 SettlementParties29 *-- "0..1" IPartyIdentification73Choice : DeliveryAgent SettlementParties29 *-- "0..1" IPartyIdentification73Choice : Intermediary SettlementParties29 *-- "1..1" IPartyIdentification73Choice : ReceivingAgent SettlementParties29 *-- "0..1" IPartyIdentification73Choice : BeneficiaryInstitution %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1
SettlementParties29 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
DeliveryAgent | Financial institution from which cash will be transferred. | IPartyIdentification73Choice - Optional 0..1 |
Intermediary | Party, within the settlement chain, between the delivery and receiving agents. | IPartyIdentification73Choice - Optional 0..1 |
ReceivingAgent | Financial institution where the payee will receive the funds. | IPartyIdentification73Choice - Required 1..1 |
BeneficiaryInstitution | Ultimate institution that will receive the funds when different from the trading or counterparty side. | IPartyIdentification73Choice - Optional 0..1 |
GeneralInformation building block
Additional Information about the foreign exchange trade. Information concerning the negotiation process leading to a treasury trade. For comparison, see the ISO20022 official specification
classDiagram direction tb %% GeneralInformation5 recursion level 0 with max 1 class GeneralInformation5{ BlockIndicator IsoYesNoIndicator RelatedTradeReference IsoMax35Text DealingMethod Trading1MethodCode CounterpartyReference IsoMax35Text BrokersCommission IsoActiveCurrencyAndAmount SenderToReceiverInformation IsoMax210Text DefinitionsYear IsoISOYear BrokersReference IsoMax35Text } GeneralInformation5 *-- "0..1" IPartyIdentification73Choice : BrokerIdentification GeneralInformation5 *-- "0..1" IPartyIdentification73Choice : DealingBranchTradingSide GeneralInformation5 *-- "0..1" IPartyIdentification73Choice : DealingBranchCounterpartySide GeneralInformation5 *-- "0..1" ContactInformation1 : ContactInformation GeneralInformation5 *-- "0..1" AgreementConditions1 : AgreementDetails %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% ContactInformation1 recursion level 1 with max 1 class ContactInformation1{ Name IsoMax350Text FaxNumber IsoPhoneNumber TelephoneNumber IsoPhoneNumber EmailAddress IsoMax256Text } %% AgreementConditions1 recursion level 1 with max 1 class AgreementConditions1{ AgreementCode IsoMax6AlphaText Date IsoISODate Version IsoExact4NumericText }
GeneralInformation5 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
BlockIndicator | Indicates whether the trade is a block or single trade. | IsoYesNoIndicator - Optional 0..1 |
RelatedTradeReference | Reference to a preceding transaction, for example, an option or swap. | IsoMax35Text - Optional 0..1 |
DealingMethod | Method used by the trading parties to negotiate and/or execute a deal. | Trading1MethodCode - Optional 0..1 |
BrokerIdentification | Specifies the broker which arranged the deal between the trading side and the counterparty side or, when two money brokers are involved, between the trading side and the other money broker. | IPartyIdentification73Choice - Optional 0..1 |
CounterpartyReference | Counterparty’s reference for the trade. | IsoMax35Text - Optional 0..1 |
BrokersCommission | Brokerage fee for a broker confirmation. | IsoActiveCurrencyAndAmount - Optional 0..1 |
SenderToReceiverInformation | Specifies additional information for the receiver and applies to the whole message. | IsoMax210Text - Optional 0..1 |
DealingBranchTradingSide | Specifies the branch at the trading side with which the deal was done. | IPartyIdentification73Choice - Optional 0..1 |
DealingBranchCounterpartySide | Specifies the branch at the counterparty side with which the deal was done. | IPartyIdentification73Choice - Optional 0..1 |
ContactInformation | Specifies the name and/or electronic address of the receiver of the message who may be contacted for any queries concerning this trade. | ContactInformation1 - Optional 0..1 |
AgreementDetails | Specifies the type, date and version of the agreement used in a trade. | AgreementConditions1 - Optional 0..1 |
DefinitionsYear | Specifies the year of definitions of the agreement. | IsoISOYear - Optional 0..1 |
BrokersReference | Specifies a reference applied to the trade instruction by a broker. | IsoMax35Text - Optional 0..1 |
SplitTradeInformation building block
Details of the split trade. Information describing the high level details of a split trade. For comparison, see the ISO20022 official specification
classDiagram direction tb %% SplitTradeDetails3 recursion level 0 with max 1 SplitTradeDetails3 *-- "0..1" TradeData16 : StatusDetails SplitTradeDetails3 *-- "1..1" AmountsAndValueDate1 : TradeAmounts SplitTradeDetails3 *-- "0..1" AgreedRate3 : AgreedRate %% TradeData16 recursion level 1 with max 1 class TradeData16{ MatchingSystemUniqueReference IsoMax35Text MatchingSystemMatchingReference IsoMax35Text MatchingSystemMatchedSideReference IsoMax35Text StatusOriginator IsoMax35Text CurrentStatusSubType StatusSubType2Code CurrentStatusDateTime IsoISODateTime PreviousStatusSubType StatusSubType2Code } TradeData16 *-- "1..1" StatusAndSubStatus2 : CurrentStatus TradeData16 *-- "0..1" IStatus28Choice : PreviousStatus %% AmountsAndValueDate1 recursion level 1 with max 1 class AmountsAndValueDate1{ TradingSideBuyAmount IsoActiveOrHistoricCurrencyAndAmount TradingSideSellAmount IsoActiveOrHistoricCurrencyAndAmount SettlementDate IsoISODate } %% AgreedRate3 recursion level 1 with max 1 class AgreedRate3{ ExchangeRate IsoBaseOneRate UnitCurrency ActiveCurrencyCode QuotedCurrency ActiveCurrencyCode }
SplitTradeDetails3 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
StatusDetails | Provides information on the status of a foreign exchange trade in the system. | TradeData16 - Optional 0..1 |
TradeAmounts | Amounts of the foreign exchange trade. | AmountsAndValueDate1 - Required 1..1 |
AgreedRate | Exchange rate as agreed by the traders. | AgreedRate3 - Optional 0..1 |
RegulatoryReporting building block
Information that is to be provided to trade repositories in the context of the regulatory standards around over-the-counter (OTC) derivatives, central counterparties and trade repositories. Includes data elements that can be used for reporting to trade repositories, it is not to be used on regular trade confirmations. Although some fields, for example, unique transaction identifier and prior unique transaction identifier, might be used on regular trade confirmations. For comparison, see the ISO20022 official specification
classDiagram direction tb %% RegulatoryReporting6 recursion level 0 with max 1 class RegulatoryReporting6{ ClearingThresholdIndicator IsoYesNoIndicator ClearedProductIdentification IsoMax35Text UnderlyingProductIdentifier UnderlyingProductIdentifier1Code AllocationIndicator AllocationIndicator1Code CollateralisationIndicator CollateralisationIndicator1Code ExecutionVenue IsoMax35Text NonStandardFlag IsoYesNoIndicator LinkSwapIdentification IsoExact42Text FinancialNatureOfTheCounterpartyIndicator IsoYesNoIndicator CollateralPortfolioIndicator IsoYesNoIndicator CollateralPortfolioCode IsoMax10Text PortfolioCompressionIndicator IsoYesNoIndicator CorporateSectorIndicator CorporateSectorIdentifier1Code TradeWithNonEEACounterpartyIndicator IsoYesNoIndicator IntragroupTradeIndicator IsoYesNoIndicator CommercialOrTreasuryFinancingIndicator IsoYesNoIndicator ConfirmationDateAndTimestamp IsoISODateTime ClearingTimestamp IsoISOTime AdditionalReportingInformation IsoMax210Text } RegulatoryReporting6 *-- "0..0" TradingSideTransactionReporting1 : TradingSideTransactionReporting RegulatoryReporting6 *-- "0..0" CounterpartySideTransactionReporting1 : CounterpartySideTransactionReporting RegulatoryReporting6 *-- "0..1" IPartyIdentification73Choice : CentralCounterpartyClearingHouse RegulatoryReporting6 *-- "0..1" IPartyIdentification73Choice : ClearingBroker RegulatoryReporting6 *-- "0..1" IPartyIdentification73Choice : ClearingExceptionParty RegulatoryReporting6 *-- "0..1" ClearingBrokerIdentification1 : ClearingBrokerIdentification RegulatoryReporting6 *-- "0..1" IDateAndDateTimeChoice : ExecutionTimestamp RegulatoryReporting6 *-- "0..1" SecurityIdentification19 : FinancialInstrumentIdentification %% TradingSideTransactionReporting1 recursion level 1 with max 1 class TradingSideTransactionReporting1{ ReportingJurisdiction IsoMax35Text } TradingSideTransactionReporting1 *-- "0..1" IPartyIdentification73Choice : ReportingParty TradingSideTransactionReporting1 *-- "0..0" UniqueTransactionIdentifier2 : TradingSideUniqueTransactionIdentifier %% CounterpartySideTransactionReporting1 recursion level 1 with max 1 class CounterpartySideTransactionReporting1{ ReportingJurisdiction IsoMax35Text } CounterpartySideTransactionReporting1 *-- "0..1" IPartyIdentification73Choice : ReportingParty CounterpartySideTransactionReporting1 *-- "0..0" UniqueTransactionIdentifier2 : CounterpartySideUniqueTransactionIdentifier %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% IPartyIdentification73Choice recursion level 1 with max 1 %% ClearingBrokerIdentification1 recursion level 1 with max 1 class ClearingBrokerIdentification1{ SideIndicator SideIndicator1Code ClearingBrokerIdentification IsoMax35Text } %% IDateAndDateTimeChoice recursion level 1 with max 1 %% SecurityIdentification19 recursion level 1 with max 1 class SecurityIdentification19{ ISIN IsoISINOct2015Identifier Description IsoMax140Text } SecurityIdentification19 *-- "0..0" OtherIdentification1 : OtherIdentification
RegulatoryReporting6 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
TradingSideTransactionReporting | Regulatory transaction reporting information from the Trading Side party. | TradingSideTransactionReporting1 - Unknown 0..0 |
CounterpartySideTransactionReporting | Regulatory transaction reporting information from the Counterparty Side party. | CounterpartySideTransactionReporting1 - Unknown 0..0 |
CentralCounterpartyClearingHouse | Identifies an agency or separate corporation of a futures exchange responsible for settling and clearing trades, collecting and maintaining margins, regulating delivery and reporting trade data. This can also be known as a Central Counterparty (CCP). | IPartyIdentification73Choice - Optional 0..1 |
ClearingBroker | Identifies the party that is a member of the clearing house (CCP) and that acts as a liaison between the investor and the Cntral Counterparty (CCP). | IPartyIdentification73Choice - Optional 0..1 |
ClearingExceptionParty | Identifies the party that is exempt from a clearing obligation. | IPartyIdentification73Choice - Optional 0..1 |
ClearingBrokerIdentification | Specifies the reference number assigned by the clearing broker. A distinction can be made between the reference for the Central Counterparty (CCP) leg and the reference for the client leg of the transaction. | ClearingBrokerIdentification1 - Optional 0..1 |
ClearingThresholdIndicator | Specifies whether the contract is above or below the clearing threshold. Where No indicates the contract is below the clearing threshold and Yes indicates the contract is above the clearing threshold. | IsoYesNoIndicator - Optional 0..1 |
ClearedProductIdentification | Specifies the reference number assigned by the Central Counterparty (CCP). | IsoMax35Text - Optional 0..1 |
UnderlyingProductIdentifier | Specifies the underlying product type. | UnderlyingProductIdentifier1Code - Optional 0..1 |
AllocationIndicator | Specifies whether the trade is a pre-allocation or a post-allocation trade, or whether the trade is unallocated. | AllocationIndicator1Code - Optional 0..1 |
CollateralisationIndicator | Specifies whether the transaction is collateralised. | CollateralisationIndicator1Code - Optional 0..1 |
ExecutionVenue | Specifies the trading venue of the transaction. | IsoMax35Text - Optional 0..1 |
ExecutionTimestamp | Specifies the date and time of the execution of the transaction in Coordinated Universal Time (UTC). | IDateAndDateTimeChoice - Optional 0..1 |
NonStandardFlag | Specifies whether the reportable transaction has one or more additional terms or provisions, other than those listed in the required real-time data fields, that materially affects the price of the reportable transaction. | IsoYesNoIndicator - Optional 0..1 |
LinkSwapIdentification | Specifies the common reference or correlation identification for a swap transaction where the near and far leg are confirmed separately. | IsoExact42Text - Optional 0..1 |
FinancialNatureOfTheCounterpartyIndicator | Specifies the financial nature of the reporting counterparty. | IsoYesNoIndicator - Optional 0..1 |
CollateralPortfolioIndicator | Specifies if the collateral is posted on a portfolio basis. | IsoYesNoIndicator - Optional 0..1 |
CollateralPortfolioCode | Identifies the portfolio code to which the trade belongs if the collateral is posted on a portfolio basis (and not trade by trade). | IsoMax10Text - Optional 0..1 |
PortfolioCompressionIndicator | Indicates if the trade results from portfolio compression. | IsoYesNoIndicator - Optional 0..1 |
CorporateSectorIndicator | Specifies the corporate sector of the counterparty. | CorporateSectorIdentifier1Code - Optional 0..1 |
TradeWithNonEEACounterpartyIndicator | Specifies whether the counterparty has entered into a trade with a non-European Economic Area (EEA) counterparty that is not subject to the reporting obligation. | IsoYesNoIndicator - Optional 0..1 |
IntragroupTradeIndicator | To indicate if a reported trade falls under the definition of intragroup transaction, as defined by European Securities and Markets Authority (ESMA) in the Technical Standards. | IsoYesNoIndicator - Optional 0..1 |
CommercialOrTreasuryFinancingIndicator | Specifies whether the contract is objectively measurable as directly linked to the non-financial counterparty’s commercial or treasury financing activity. | IsoYesNoIndicator - Optional 0..1 |
FinancialInstrumentIdentification | Identification of a security, as assigned under a formal or proprietary identification scheme. | SecurityIdentification19 - Optional 0..1 |
ConfirmationDateAndTimestamp | Specifies the date and time of the confirmation of the trade in UTC. | IsoISODateTime - Optional 0..1 |
ClearingTimestamp | Specifies the time at which the CCP has legally taken on the clearing of the trade in UTC. | IsoISOTime - Optional 0..1 |
AdditionalReportingInformation | Specifies additional information that might be required by the regulator. | IsoMax210Text - Optional 0..1 |
SupplementaryData building block
Additional information that cannot be captured in the structured elements and/or any other specific block. Additional information that can not be captured in the structured fields and/or any other specific block. For comparison, see the ISO20022 official specification
classDiagram direction tb %% SupplementaryData1 recursion level 0 with max 1 class SupplementaryData1{ PlaceAndName IsoMax350Text } SupplementaryData1 *-- "1..1" IsoSupplementaryDataEnvelope1 : Envelope %% IsoSupplementaryDataEnvelope1 recursion level 1 with max 1
SupplementaryData1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
PlaceAndName | Unambiguous reference to the location where the supplementary data must be inserted in the message instance. In the case of XML, this is expressed by a valid XPath. | IsoMax350Text - Optional 0..1 |
Envelope | Technical element wrapping the supplementary data. | IsoSupplementaryDataEnvelope1 - Required 1..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the ForeignExchangeTradeStatusAndDetailsNotificationV04 implementation follows a specific implementaiton pattern. First of all, ForeignExchangeTradeStatusAndDetailsNotificationV04 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, ForeignExchangeTradeStatusAndDetailsNotificationV04Document implements IOuterDocument. Because ForeignExchangeTradeStatusAndDetailsNotificationV04 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type ForeignExchangeTradeStatusAndDetailsNotificationV04.
classDiagram class IOuterRecord ForeignExchangeTradeStatusAndDetailsNotificationV04 --|> IOuterRecord : Implements ForeignExchangeTradeStatusAndDetailsNotificationV04Document --|> IOuterDocument~ForeignExchangeTradeStatusAndDetailsNotificationV04~ : Implements class IOuterDocument~ForeignExchangeTradeStatusAndDetailsNotificationV04~ { ForeignExchangeTradeStatusAndDetailsNotificationV04 Message }
Document wrapper for serialization
The only real purpose ForeignExchangeTradeStatusAndDetailsNotificationV04Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:fxtr.017.001.04’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using ForeignExchangeTradeStatusAndDetailsNotificationV04.ToDocument() method. The returned ForeignExchangeTradeStatusAndDetailsNotificationV04Document value will serialize correctly according to ISO 20022 standards.
classDiagram ForeignExchangeTradeStatusAndDetailsNotificationV04Document *-- ForeignExchangeTradeStatusAndDetailsNotificationV04 : Document
Sample of message format
This is an abbreviated version of what the message should look like.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:fxtr.017.001.04">
<FXTradStsAndDtlsNtfctn>
<StsDtls>
<!-- StatusDetails inner content -->
</StsDtls>
<TradInf>
<!-- TradeInformation inner content -->
</TradInf>
<TradgSdId>
<!-- TradingSideIdentification inner content -->
</TradgSdId>
<CtrPtySdId>
<!-- CounterpartySideIdentification inner content -->
</CtrPtySdId>
<TradAmts>
<!-- TradeAmounts inner content -->
</TradAmts>
<AgrdRate>
<!-- AgreedRate inner content -->
</AgrdRate>
<NDFConds>
<!-- NonDeliverableForwardConditions inner content -->
</NDFConds>
<TradgSdSttlmInstrs>
<!-- TradingSideSettlementInstructions inner content -->
</TradgSdSttlmInstrs>
<CtrPtySdSttlmInstrs>
<!-- CounterpartySideSettlementInstructions inner content -->
</CtrPtySdSttlmInstrs>
<GnlInf>
<!-- GeneralInformation inner content -->
</GnlInf>
<SpltTradInf>
<!-- SplitTradeInformation inner content -->
</SpltTradInf>
<RgltryRptg>
<!-- RegulatoryReporting inner content -->
</RgltryRptg>
<SplmtryData>
<!-- SupplementaryData inner content -->
</SplmtryData>
</FXTradStsAndDtlsNtfctn>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_rIwsQZR5Eeak6e8_Fc5fQg"
nextVersions="_mJe8QQM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVgTJ5EeOd1OidA-8_VQ"
name="ForeignExchangeTradeStatusAndDetailsNotificationV04"
definition="Scope

The ForeignExchangeTradeStatusAndDetails message is sent by a central system to the participant to provide notification of the status and details of a foreign exchange trade.

Usage

The notification is sent by a central settlement system to the two trading parties after it has received foreign exchange trade instructions from both."
registrationStatus="Registered"
messageSet="_nB3wITJaEeOX98kTVpuqCw"
xmlTag="FXTradStsAndDtlsNtfctn"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<constraint
xmi:id="_rIwsQ5R5Eeak6e8_Fc5fQg"
nextVersions="_mJe8QwM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVgzJ5EeOd1OidA-8_VQ"
name="SplitTradeFalsePresenceRule"
definition="If TradeInformation\SplitTradeIndicator is NO (‘false’), the SplitTradeInformation is not allowed."
registrationStatus="Provisionally Registered"
expression="<RuleDefinition><ComplexRule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ComplexRule"><mustBe><connector>AND</connector><BooleanRule xsi:type="Absence"><leftOperand>/SplitTradeInformation[*]</leftOperand></BooleanRule></mustBe><onCondition><connector>AND</connector><BooleanRule xsi:type="EqualToValue"><leftOperand>/TradeInformation/SplitTradeIndicator</leftOperand><rightOperand>false</rightOperand></BooleanRule></onCondition></ComplexRule></RuleDefinition>" />
<constraint
xmi:id="_rIwsRZR5Eeak6e8_Fc5fQg"
nextVersions="_mJe8RQM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVhTJ5EeOd1OidA-8_VQ"
name="SplitTradeTruePresenceRule"
definition="If TradeInformation\SplitTradeIndicator is YES (‘true’), the SplitTradeInformation must be present."
registrationStatus="Provisionally Registered"
expression="<RuleDefinition><ComplexRule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ComplexRule"><mustBe><connector>AND</connector><BooleanRule xsi:type="Presence"><leftOperand>/SplitTradeInformation[*]</leftOperand></BooleanRule></mustBe><onCondition><connector>AND</connector><BooleanRule xsi:type="EqualToValue"><leftOperand>/TradeInformation/SplitTradeIndicator</leftOperand><rightOperand>true</rightOperand></BooleanRule></onCondition></ComplexRule></RuleDefinition>" />
<messageBuildingBlock
xmi:id="_rIwsR5R5Eeak6e8_Fc5fQg"
nextVersions="_mJe8RwM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVhzJ5EeOd1OidA-8_VQ"
name="StatusDetails"
definition="Provides information on the status of a foreign exchange trade in the central system."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="StsDtls"
complexType="_KP0LIZU7EeaYkf5FCqYMeA" />
<messageBuildingBlock
xmi:id="_rIwsSZR5Eeak6e8_Fc5fQg"
nextVersions="_mJe8SQM-Ee2nqoJcXIhTdw"
previousVersion="_0WwViTJ5EeOd1OidA-8_VQ"
name="TradeInformation"
definition="General information related to the foreign exchange trade."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradInf"
complexType="_WFoGkVN5EeOEi5J12GuNGQ" />
<messageBuildingBlock
xmi:id="_rIwsS5R5Eeak6e8_Fc5fQg"
nextVersions="_mJe8SwM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVizJ5EeOd1OidA-8_VQ"
name="TradingSideIdentification"
definition="Party(ies) on the trading side of the foreign exchange trade."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradgSdId"
complexType="_rbRD8SjaEeK1Sbo8NpBROA" />
<messageBuildingBlock
xmi:id="_rIwsTZR5Eeak6e8_Fc5fQg"
nextVersions="_mJe8TQM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVjTJ5EeOd1OidA-8_VQ"
name="CounterpartySideIdentification"
definition="Party(ies) on the counterparty side of the foreign exchange trade."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="CtrPtySdId"
complexType="_rbRD8SjaEeK1Sbo8NpBROA" />
<messageBuildingBlock
xmi:id="_rIwsT5R5Eeak6e8_Fc5fQg"
nextVersions="_mJe8TwM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVjzJ5EeOd1OidA-8_VQ"
name="TradeAmounts"
definition="Amounts of the foreign exchange trade."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradAmts"
complexType="_TITy0tp-Ed-ak6NoX_4Aeg_290674075" />
<messageBuildingBlock
xmi:id="_rIwsUZR5Eeak6e8_Fc5fQg"
nextVersions="_mJe8UQM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVkTJ5EeOd1OidA-8_VQ"
name="AgreedRate"
definition="Exchange rate as agreed by the traders."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="AgrdRate"
complexType="_x5OGYVhqEeWDI58xzGOTTQ" />
<messageBuildingBlock
xmi:id="_ncd-oKZqEea16Jw8SEVrDQ"
nextVersions="_mJe8UwM-Ee2nqoJcXIhTdw"
name="NonDeliverableForwardConditions"
definition="Provides the opening and fixing information for an NDF trade."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="NDFConds"
complexType="_dPfNQaZqEea16Jw8SEVrDQ" />
<messageBuildingBlock
xmi:id="_rIwsU5R5Eeak6e8_Fc5fQg"
nextVersions="_mJe8VQM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVkzJ5EeOd1OidA-8_VQ"
name="TradingSideSettlementInstructions"
definition="Settlement instructions for the amounts received by the trading side."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="TradgSdSttlmInstrs"
complexType="_4CRAsSjaEeK1Sbo8NpBROA" />
<messageBuildingBlock
xmi:id="_rIwsVZR5Eeak6e8_Fc5fQg"
nextVersions="_mJe8VwM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVlTJ5EeOd1OidA-8_VQ"
name="CounterpartySideSettlementInstructions"
definition="Settlement instructions for the amounts received by the counterparty."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="CtrPtySdSttlmInstrs"
complexType="_4CRAsSjaEeK1Sbo8NpBROA" />
<messageBuildingBlock
xmi:id="_rIwsV5R5Eeak6e8_Fc5fQg"
nextVersions="_mJe8WQM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVlzJ5EeOd1OidA-8_VQ"
name="GeneralInformation"
definition="Additional Information about the foreign exchange trade."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="GnlInf"
complexType="_KAWoEZUVEea7vKctaoIyEQ" />
<messageBuildingBlock
xmi:id="_rIwsWZR5Eeak6e8_Fc5fQg"
nextVersions="_mJe8WwM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVmTJ5EeOd1OidA-8_VQ"
name="SplitTradeInformation"
definition="Details of the split trade."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="SpltTradInf"
complexType="_Li4wUaAiEea9x5aZm6UTkw" />
<messageBuildingBlock
xmi:id="_rIwsW5R5Eeak6e8_Fc5fQg"
nextVersions="_mJe8XQM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVmzJ5EeOd1OidA-8_VQ"
name="RegulatoryReporting"
definition="Information that is to be provided to trade repositories in the context of the regulatory standards around over-the-counter (OTC) derivatives, central counterparties and trade repositories."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="RgltryRptg"
complexType="_vafxwZR6Eeak6e8_Fc5fQg" />
<messageBuildingBlock
xmi:id="_rIwsXZR5Eeak6e8_Fc5fQg"
nextVersions="_mJe8XwM-Ee2nqoJcXIhTdw"
previousVersion="_0WwVnTJ5EeOd1OidA-8_VQ"
name="SupplementaryData"
definition="Additional information that cannot be captured in the structured elements and/or any other specific block."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="SplmtryData"
complexType="_Qn0zC9p-Ed-ak6NoX_4Aeg_468227563" />
<messageDefinitionIdentifier
businessArea="fxtr"
messageFunctionality="017"
flavour="001"
version="04" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.