FCA transaction report
This is the message format for reporting transactions to FCA - reference here. This adheres to the ISO 20022 message format auth.016.
Data within the XML is transformed and flattened to rows of data with the following fields. Data in repeated structures are flattened into concatenated text.
Duco field name | Duco field type | Field in XML (In /Document/FinInstrmRptgTxRpt/Tx/New ...) | Is repeating structure |
---|---|---|---|
ReportStatus | Text | If .../Tx/New exist: "NEWT" If .../Tx/Cxl exist: "CANC" |
N |
TransactionIdentification | Text | If .../Tx/New exist: .../Tx/New/TxId If .../Tx/Cxl exist: .../Tx/Cxl/TxId |
N |
ExecutingParty | Text | If .../Tx/New exist: .../Tx/New/ExctgPty If .../Tx/Cxl exist: .../Tx/Cxl/ExctgPty |
N |
InvestmentPartyIndicator | Boolean | InvstmtPtyInd | N |
SubmittingParty | Text | If .../Tx/New exist: .../Tx/New/SubmitgPty If .../Tx/Cxl exist: .../Tx/Cxl/SubmitgPty |
N |
Buyer_AccountOwner_Id_LEI | Text | For each .../Buyr/AcctOwnr: .../Id/LEI |
Y |
Buyer_AccountOwner_Id_MIC | Text | For each .../Buyr/AcctOwnr: .../Id/MIC |
Y |
Buyer_AccountOwner_Id_Intl | Text | For each .../Buyr/AcctOwnr: .../Id/Intl |
Y |
Buyer_AccountOwner_FirstName | Text | For each .../Buyr/AcctOwnr: .../Id/Prsn/FrstNm |
Y |
Buyer_AccountOwner_Name | Text | For each .../Buyr/AcctOwnr: .../Id/Prsn/Nm |
Y |
Buyer_AccountOwner_BirthDate | Text | For each .../Buyr/AcctOwnr: .../Id/Prsn/BirthDt |
Y |
Buyer_AccountOwner_Id_Prsn | Text | For each .../Buyr/AcctOwnr: .../Id/Prsn/Othr/Id |
Y |
Buyer_AccountOwner_Id_Std_Code | Text | For each .../Buyr/AcctOwnr: .../Id/Prsn/Othr/SchmeNm/Cd |
Y |
Buyer_AccountOwner_Id_Prtry_Code | Text | For each .../Buyr/AcctOwnr: .../Id/Prsn/Othr/SchmeNm/Prtry |
Y |
Buyer_AccountOwner_CtryOfBrnch | Text | For each .../Buyr/AcctOwnr: .../CtryOfBrnch |
Y |
Buyer_DecisMaker_LEI | Text | For each .../Buyr/DcsnMakr: .../LEI |
Y |
Buyer_DecisMaker_FirstName | Text | For each .../Buyr/DcsnMakr: .../Prsn/FrstNm |
Y |
Buyer_DecisMaker_Name | Text | For each .../Buyr/DcsnMakr: .../Id/Prsn/Nm |
Y |
Buyer_DecisMaker_BirthDate | Text | For each .../Buyr/DcsnMakr: .../Id/Prsn/BirthDt |
Y |
Buyer_DecisMaker_Id_Prsn | Text | For each .../Buyr/DcsnMakr: .../Id/Prsn/Othr/Id |
Y |
Buyer_DecisMaker_Id_Std_Code | Text | For each .../Buyr/DcsnMakr: .../Id/Prsn/Othr/SchmeNm/Cd |
Y |
Buyer_DecisMaker_Id_Prtry_Code | Text | For each .../Buyr/DcsnMakr: .../Id/Prsn/Othr/SchmeNm/Prtry |
Y |
Sellr_AccountOwner_Id_LEI | Text | For each .../Sellr/AcctOwnr .../Id/LEI |
Y |
Sellr_AccountOwner_Id_MIC | Text | For each .../Sellr/AcctOwnr: .../Id/MIC |
Y |
Sellr_AccountOwner_Id_Intl | Text | For each .../Sellr/AcctOwnr: .../Id/Intl |
Y |
Sellr_AccountOwner_FirstName | Text | For each .../Sellr/AcctOwnr: .../Id/Prsn/FrstNm |
Y |
Sellr_AccountOwner_Name | Text | For each .../Sellr/AcctOwnr: .../Id/Prsn/Nm |
Y |
Sellr_AccountOwner_BirthDate | Text | For each .../Sellr/AcctOwnr: .../Id/Prsn/BirthDt |
Y |
Sellr_AccountOwner_Id_Prsn | Text | For each .../Sellr/AcctOwnr: .../Id/Prsn/Othr/Id |
Y |
Sellr_AccountOwner_Id_Std_Code | Text | For each .../Sellr/AcctOwnr: .../Id/Prsn/Othr/SchmeNm/Cd |
Y |
Sellr_AccountOwner_Id_Prtry_Code | Text | For each .../Sellr/AcctOwnr: .../Id/Prsn/Othr/SchmeNm/Prtry |
Y |
Sellr_AccountOwner_CtryOfBrnch | Text | For each .../Sellr/AcctOwnr: .../CtryOfBrnch |
Y |
Sellr_DecisMaker_LEI | Text | For each Sellr/DcsnMakr: .../LEI |
Y |
Sellr_DecisMaker_FirstName | Text | For each Sellr/DcsnMakr: .../Prsn/FrstNm |
Y |
Sellr_DecisMaker_Name | Text | For each Sellr/DcsnMakr: .../Id/Prsn/Nm |
Y |
Sellr_DecisMaker_BirthDate | Text | For each Sellr/DcsnMakr: .../Id/Prsn/BirthDt |
Y |
Sellr_DecisMaker_Id_Prsn | Text | For each Sellr/DcsnMakr: .../Id/Prsn/Othr/Id |
Y |
Sellr_DecisMaker_Id_Std_Code | Text | For each Sellr/DcsnMakr: .../Id/Prsn/Othr/SchmeNm/Cd |
Y |
Sellr_DecisMaker_Id_Prtry_Code | Text | For each Sellr/DcsnMakr: .../Id/Prsn/Othr/SchmeNm/Prtry |
Y |
OrderTransmission_TransInd | Boolean | .../New/OrdrTrnsmssn/TrnsmssnInd | N |
OrderTransmission_TransBuyer | Text | .../New/OrdrTrnsmssn/TrnsmttgBuyr | N |
OrderTransmission_TransSeller | Text | .../New/OrdrTrnsmssn/TrnsmttgSellr | N |
Transaction_TradeDate | Text | .../New/Tx/TradDt | N |
Transaction_TradingCapacity | Text | .../New/Tx/TradgCpcty | N |
Transaction_Quantity_Type | Text | In .../New/Tx/Qty: If Unit exist: "Unit" If NmnlVal exist: "NominalValue" If MntryVal exist: "MonetaryValue" |
N |
Transaction_Quantity | Decimal | In .../New/Tx/Qty: If Unit exist: "Unit" If NmnlVal exist: "NmnlVal" If MntryVal exist: "MntryVal" |
N |
Transaction_Quantity_Currency | Text | In .../New/Tx/Qty: If NmnlVal exist: NmnlVal/@Ccy If MntryVal exist: MntryVal/@Ccy |
N |
Transaction_DerivNotionalChange | Text | .../New/Tx/DerivNtnlChng | N |
PriceType | Text | In Tx/Pric/Pric: If MntryVal exists: "MonetaryValue" If Pctg exists: "Percentage" If Yld exists: "Yield" If BsisPts exists: "BasisPoints" If NoPric exists: "NoPrice" |
N |
PriceAmount | Decimal | In Tx/Pric/Pric: If MntryVal exists: MntryVal If MntryVal/Sgn = True: -1 * MntryVal If Pctg exists: Pctg If Yld exists: Yld If BsisPts exists: BsisPts |
N |
PriceCurrency | Text | In Tx/Pric/Pric: If MntryVal/Amt/Ccy exists: MntryVal/Amt/Ccy If NoPric/Ccy exists: NoPric/Ccy |
N |
PriceStatus | Text | Tx/Pric/Pric/NoPric/Pdg | N |
NetAmount | Decimal | Tx/NetAmt | N |
TradeVenue | Text | Tx/TradVn | N |
CountryOfBranch | Text | Tx/CtryOfBrnch | N |
UpFrontPayment | Decimal | If Tx/UpFrntPmt/Sgn = True: -1 * Tx/UpFrntPmt/Amt else: Tx/UpFrntPmt/Amt |
N |
UpFrontPaymentCurrency | Text | Tx/UpFrntPmt/Amt/@Ccy | N |
TradePlaceMatchingId | Text | Tx/TradPlcMtchgId | N |
ComplexTradeComponentId | Text | Tx/CmplxTradCmpntId | N |
FinInstrId | Text | If FinInstrm/Id exists: FinInstrm/Id If FinInstrm/Othr exists: FinInstrm/Othr/FinInstrmGnlAttrbts/Id |
N |
FinInstrFullName | Text | FinInstrm/Othr/FinInstrmGnlAttrbts/FullNm | N |
FinInstrClassificationType | Text | FinInstrm/Othr/FinInstrmGnlAttrbts/ClssfctnTp | N |
FinInstrNotionalCurrency | Text | FinInstrm/Othr/FinInstrmGnlAttrbts/NtnlCcy | N |
DebtInstrAttrib_MaturityDate | Decimal | FinInstrm/Othr/DebtInstrmAttrbts/MtrtyDt | N |
DerivInstrAttrib_ExpiryDate | Date (E.g.: 2022-11-30) | FinInstrm/Othr/DerivInstrmAttrbts/XpryDt | N |
DerivInstrAttrib_PriceMultiplier | Decimal | FinInstrm/Othr/DerivInstrmAttrbts/PricMltplr | N |
DerivInstrAttrib_UnderInstrType | Text | In FinInstrm/Othr/DerivInstrmAttrbts/UndrlygInstrm/... : If .../Swp exists: "Swap" If .../Othr exists: "Other" |
N |
DerivInstrAttr_Undr_SwpIn_Type | Text | In FinInstrm/Othr/DerivInstrmAttrbts/UndrlygInstrm/... : If .../Swp/SwpIn/Sngl exists: "Single" If .../Swp/SwpIn/Bskt exists: "Basket" |
N |
SwpIn_ISIN | Text | If .../Swp/SwpIn/Sngl/ISIN exist: .../Swp/SwpIn/Sngl/ISIN For each .../Swp/SwpIn/Bskt/ISIN : .../Swp/SwpIn/Bskt/ISIN |
Y - for basket |
SwpIn_Indx_ISIN | Text | If .../Swp/SwpIn/Indx/ISIN exist: .../Swp/SwpIn/Sngl/Indx/ISIN For each .../Swp/SwpIn/Bskt : .../Swp/SwpIn/Bskt/Indx/ISIN |
Y - for basket |
SwpIn_Indx_Nm_RefRate_Indx | Text | If .../Swp/SwpIn/Sngl/Indx/Nm/RefRate/Indx exist: .../Swp/SwpIn/Sngl/Indx/Nm/RefRate/Indx For each .../Swp/SwpIn/Bskt/Indx/Nm/RefRate/Indx .../Nm/RefRate/Indx |
Y - for basket |
SwpIn_Indx_Nm_RefRate_Nm | Text | For each .../Swp/SwpIn/Bskt/Indx/Nm/RefRate/Indx .../Nm/RefRate/Nm |
Y - for basket |
SwpIn_Indx_Nm_Term_Unit | Text | For each .../Swp/SwpIn/Bskt/Indx/Nm/RefRate/Indx .../Nm/Term/Unit |
Y - for basket |
SwpIn_Indx_Nm_Term_Val | Text | For each .../Swp/SwpIn/Bskt/Indx/Nm/RefRate/Indx .../Nm/Term/Val |
Y - for basket |
DerivInstrAttr_Undr_SwpOut_Type | Text | In FinInstrm/Othr/DerivInstrmAttrbts/UndrlygInstrm/... : If .../Swp/SwpIn/Sngl exists: "Single" If .../Swp/SwpIn/Bskt exists: "Basket" |
N |
SwpOut_ISIN | Text | If .../Swp/SwpOut/Sngl/ISIN exist: .../Swp/SwpOut/Sngl/ISIN For each .../Swp/SwpOut/Bskt/ISIN : .../Swp/SwpOut/Bskt/ISIN |
Y - for basket |
SwpIn_Indx_ISIN | Text | If .../Swp/SwpOut/Indx/ISIN exist: .../Swp/SwpOut/Sngl/Indx/ISIN For each .../Swp/SwpOut/Bskt : .../Swp/SwpOut/Bskt/Indx/ISIN |
Y - for basket |
SwpOut_Indx_Nm_RefRate_Indx | Text | If .../Swp/SwpOut/Sngl/Indx/Nm/RefRate/Indx exist: .../Swp/SwpOut/Sngl/Indx/Nm/RefRate/Indx For each .../Swp/SwpOut/Bskt/Indx/Nm/RefRate/Indx .../Nm/RefRate/Indx |
Y - for basket |
SwpOut_Indx_Nm_RefRate_Nm | Text | For each .../Swp/SwpOut/Bskt/Indx/Nm/RefRate/Indx .../Nm/RefRate/Nm |
Y - for basket |
SwpOut_Indx_Nm_Term_Unit | Text | For each .../Swp/SwpOut/Bskt/Indx/Nm/RefRate/Indx .../Nm/Term/Unit |
Y - for basket |
SwpOut_Indx_Nm_Term_Val | Text | For each .../Swp/SwpOut/Bskt/Indx/Nm/RefRate/Indx .../Nm/Term/Val |
Y - for basket |
DerivInstrAttr_Undr_Othr_Type | Text | In FinInstrm/Othr/DerivInstrmAttrbts/UndrlygInstrm/... : If .../Othr/Sngl exists: "Single" If .../Othr/Bskt exists: "Basket" |
N |
Othr_ISIN | Text | If .../Othr/Sngl/ISIN exist: .../Othr/Sngl/ISIN For each .../Othr/Bskt/ISIN : .../Othr/Bskt/ISIN |
Y - for basket |
Othr_Indx_ISIN | Text | If .../Othr/Indx/ISIN exist: .../Othr/Sngl/Indx/ISIN For each .../Othr/Bskt : .../Othr/Bskt/Indx/ISIN |
Y - for basket |
Othr_Indx_Nm_RefRate_Indx | Text | If .../Othr/Sngl/Indx/Nm/RefRate/Indx exist: .../Othr/Sngl/Indx/Nm/RefRate/Indx For each .../Othr/Bskt/Indx/Nm/RefRate/Indx .../Nm/RefRate/Indx |
Y - for basket |
Othr_Indx_Nm_RefRate_Nm | Text | For each .../Othr/Bskt/Indx/Nm/RefRate/Indx .../Nm/RefRate/Nm |
Y - for basket |
Othr_Indx_Nm_Term_Unit | Text | For each .../Othr/Bskt/Indx/Nm/RefRate/Indx .../Nm/Term/Unit |
Y - for basket |
Othr_Indx_Nm_Term_Val | Text | For each .../Othr/Bskt/Indx/Nm/RefRate/Indx .../Nm/Term/Val |
Y - for basket |
DerivInstrAttrib_OptionType | Text | FinInstrm/Othr/DerivInstrmAttrbts/OptnTp | N |
DerivInstrAttrib_StrikePriceType | Text | In FinInstrm/Othr/DerivInstrmAttrbts/StrkPric: If MntryVal exists: "MonetaryValue" If Pctg exists: "Percentage" If Yld exists: "Yield" If BsisPts exists: "BasisPoints" If NoPric exists: "NoPrice" |
N |
DerivInstrAttrib_StrikePriceAmt | Decimal | In FinInstrm/Othr/DerivInstrmAttrbts/StrkPric: If MntryVal exists: MntryVal If MntryVal/Sgn = True: -1 * MntryVal If Pctg exists: Pctg If Yld exists: Yld If BsisPts exists: BsisPts |
N |
DerivInstrAttrib_StrikePriceCcy | Text | In FinInstrm/Othr/DerivInstrmAttrbts/StrkPric: If MntryVal/Amt/Ccy exists: MntryVal/Amt/Ccy If NoPric/Ccy exists: NoPric/Ccy |
N |
DerivInstrAttrib_StrikePriceStat | Text | FinInstrm/Othr/DerivInstrmAttrbts/StrkPric/NoPric/Pdg | N |
DerivInstrAttrib_OptExercStyle | Text | FinInstrm/Othr/DerivInstrmAttrbts/OptnExrcStyle | N |
DerivInstrAttrib_DeliveryType | Text | FinInstrm/Othr/DerivInstrmAttrbts/DlvryTp | N |
DerivInstrAttrib_AssetClassType | Text | In FinInstrm/Othr/DerivInstrmAttrbts/AsstClssSpcfcAttrbts/... : If .../Intrst exists: Interest If .../FX exists: FX |
N |
DerivInstrAttrib_OtherNotionCcy | Text | In FinInstrm/Othr/DerivInstrmAttrbts/AsstClssSpcfcAttrbts/... : If .../Intrst exists: Intrst/OthrNtnlCcy If .../FX exists: FX/OthrNtnlCcy |
N |
InvstmtDcsnPrsn_Type | Text | If .../InvstmtDcsnPrsn/Prsn exists: "Person" If .../InvstmtDcsnPrsn/Algo exists: "Algorithm" |
N |
InvstmtDcsnPrsn_Algorithm | Text | .../InvstmtDcsnPrsn/Algo | N |
InvstmtDcsnPrsn_CtryOfBrnch | Text | .../InvstmtDcsnPrsn/Prsn/CtryOfBrnch | N |
InvstmtDcsnPrsn_Id | Text | .../InvstmtDcsnPrsn/Prsn/Othr/Id | N |
InvstmtDcsnPrsn_Id_SchmeNm_Cd | Text | .../InvstmtDcsnPrsn/Prsn/Othr/SchmeNm/Cd | N |
InvstmtDcsnPrsn_Id_SchmeNm_Prtry | Text | .../InvstmtDcsnPrsn/Prsn/Othr/SchmeNm/Prtry | N |
ExecutingPerson_Type | Text | If ExctgPrsn/Prsn exist: "Person" If ExctgPrsn/Algo exist: "Algorithm" If ExctgPrsn/Clnt exist: "Client" |
N |
ExecutingPerson_Algorithm | Text | .../ExctgPrsn/Algo | N |
ExecutingPerson_CtryOfBrnch | Text | .../ExctgPrsn/Prsn/CtryOfBrnch | N |
ExecutingPerson_Id | Text | .../ExctgPrsn/Prsn/Othr/Id | N |
ExecutingPerson_Id_SchmeNm_Cd | Text | .../ExctgPrsn/Prsn/Othr/SchmeNm/Cd | N |
ExecutingPerson_Id_SchmeNm_Prtry | Text | .../ExctgPrsn/Prsn/Othr/SchmeNm/Prtry | N |
ExecutingPerson_Client | Text | .../ExctgPrsn/Clnt | N |
AddAttribs_WaiverIndicator | Text | AddtlAttrbts/WvrInd: Join with "/" | N |
AddAttribs_ShortSellingInd | Text | AddtlAttrbts/ShrtSellgInd | N |
AddAttribs_OTCPostTradeIndicator | Text | AddtlAttrbts/OTCPstTradInd: Join with "/" | N |
AddAttribs_RiskReducingTrans | Boolean | AddtlAttrbts/RskRdcgTx | N |
AddAttribs_SecFinTransInd | Text | AddtlAttrbts/SctiesFincgTxInd | N |
Feedback_Status | Text | Feedback/Sts | N |
Feedback_VldtnRule_Id | Text | Feedback/VldtnRule/Id | Y |
Feedback_VldtnRule_Desc | Text | Feedback/VldtnRule/Desc | Y |
Feedback_VldtnRule_SchmeNm_Cd | Text | Feedback/VldtnRule/SchmeNm/Cd | Y |
Feedback_VldtnRule_SchmeNm_Prtry | Text | Feedback/VldtnRule/SchmeNm/Prtry | Y |
Feedback_VldtnRule_SchmeNm_Issr | Text | Feedback/VldtnRule/SchmeNm/Issr | Y |
Notes:
- AcctOwnr: when multiple values are present, they will appear in the CSV output as pipe-separated list of values.
- DcsnMakr: when multiple values are present, they will appear in the CSV output as pipe-separated list of values.
- AcctOwnr ID: Duco assumes that LEI, MIC, Intl, and Prsn will not appear more than once.