semt.041.001.01
SCOPE
An account servicer, such as a custodian, central securities depository or international central securities depository, sends the SecuritiesBalanceTransparencyReport message to provide holdings information for the accounts that it services, to disclose underlying details of holdings on an omnibus account that the sender owns or operates at the receiver. The receiver may also be a custodian, central securities depository, international central securities depository, and the ultimate receiver may be a registrar, transfer agent, fund company, official agent of the reported instrument(s) and/or other parties.
The SecuritiesBalanceTransparencyReport message provides transparency of holdings through layers of custody chains in a consolidated statement, to allow for an efficient gathering of investor data, which, in turn, may be used to measure marketing effectiveness, validation of compliance with prospectuses and regulatory requirements, and the calculation of trailer fees and other retrocessions.
USAGE
The SecuritiesBalanceTransparencyReport message is used to provide aggregated holdings information and a breakdown of holdings information.
A sender of the SecuritiesBalanceTransparencyReport message will identify its own safekeeping account (for example, an omnibus account in the ledger of the receiver) and holdings information at the level of account(s) for which the sender is the account servicer (that is, in the ledger of the sender). When relevant, the sender will aggregate its holdings information with holdings information of one or more sub levels and sub-sub levels of accounts, that is, with holdings information the sender has received from the owner(s) of the account(s) for which the sender is the account servicer.
When the receiver of the SecuritiesBalanceTransparencyReport message is also an account servicer, it may, in turn, send a statement back to the sender of the first statement, enriched with data of its own. Ultimately, the statement reaches the relevant fund company, for example, the transfer agent, that may use it for obtaining information about the custodians, distributors and commercial agreement references associated with holdings on an omnibus account in the shareholder register.
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 %% SecuritiesBalanceTransparencyReportV01 recursion level 0 with max 0 SecuritiesBalanceTransparencyReportV01 *-- "1..1" MessageIdentification1 : MessageIdentification SecuritiesBalanceTransparencyReportV01 *-- "1..1" PartyIdentification100 : SenderIdentification SecuritiesBalanceTransparencyReportV01 *-- "0..1" PartyIdentification100 : ReceiverIdentification SecuritiesBalanceTransparencyReportV01 *-- "1..1" Pagination : Pagination SecuritiesBalanceTransparencyReportV01 *-- "1..1" Statement37 : StatementGeneralDetails SecuritiesBalanceTransparencyReportV01 *-- "1..1" SafekeepingAccount5 : SafekeepingAccountAndHoldings SecuritiesBalanceTransparencyReportV01 *-- "0..1" SupplementaryData1 : SupplementaryData
Now, we will zero-in one-by-one on each of these building blocks.
MessageIdentification building block
Unique and unambiguous identification of the message. When the report has multiple pages, one message equals one page. Therefore, the MessageIdentification uniquely identifies the page. Identifies a message by a unique identifier and the date and time when the message was created by the sender. For comparison, see the ISO20022 official specification
classDiagram direction tb %% MessageIdentification1 recursion level 0 with max 1 class MessageIdentification1{ Identification IsoMax35Text CreationDateTime IsoISODateTime }
MessageIdentification1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Identification | Identification of the message. | IsoMax35Text - Required 1..1 |
CreationDateTime | Date of creation of the message. | IsoISODateTime - Required 1..1 |
SenderIdentification building block
Identification of the party that is the sender of the message. Identification of the party. For comparison, see the ISO20022 official specification
classDiagram direction tb %% PartyIdentification100 recursion level 0 with max 1 class PartyIdentification100{ LEI IsoLEIIdentifier } PartyIdentification100 *-- "1..1" IPartyIdentification71Choice : Identification %% IPartyIdentification71Choice recursion level 1 with max 1
PartyIdentification100 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Identification | Unique identification of the party. | IPartyIdentification71Choice - Required 1..1 |
LEI | Legal entity identification as an alternate identification for a party. | IsoLEIIdentifier - Optional 0..1 |
ReceiverIdentification building block
Identification of the party that is the receiver of the message. Identification of the party. For comparison, see the ISO20022 official specification
classDiagram direction tb %% PartyIdentification100 recursion level 0 with max 1 class PartyIdentification100{ LEI IsoLEIIdentifier } PartyIdentification100 *-- "1..1" IPartyIdentification71Choice : Identification %% IPartyIdentification71Choice recursion level 1 with max 1
PartyIdentification100 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Identification | Unique identification of the party. | IPartyIdentification71Choice - Required 1..1 |
LEI | Legal entity identification as an alternate identification for a party. | IsoLEIIdentifier - Optional 0..1 |
Pagination building block
Page number of the message (within a statement) and continuation indicator to indicate that the statement is to continue or that the message is the last page of the statement. Number used to sequence pages when it is not possible for data to be conveyed in a single message and the data has to be split across several pages (messages). For comparison, see the ISO20022 official specification
classDiagram direction tb %% Pagination recursion level 0 with max 1 class Pagination{ PageNumber IsoMax5NumericText LastPageIndicator IsoYesNoIndicator }
Pagination members
Member name | Description | Data Type / Multiplicity |
---|---|---|
PageNumber | Page number. | IsoMax5NumericText - Required 1..1 |
LastPageIndicator | Indicates the last page. | IsoYesNoIndicator - Required 1..1 |
StatementGeneralDetails building block
Provides general information on the statement. General characteristics related to a statement which reports information for a precise date. For comparison, see the ISO20022 official specification
classDiagram direction tb %% Statement37 recursion level 0 with max 1 class Statement37{ QueryReference IsoMax35Text StatementIdentification IsoMax35Text FrequencyGranularity FrequencyGranularityType1Code ActivityIndicator IsoYesNoIndicator } Statement37 *-- "0..1" INumber3Choice : StatementNumber Statement37 *-- "1..1" IDateAndDateTimeChoice : StatementDateTime Statement37 *-- "1..1" IDatePeriod1Choice : StatementPeriod Statement37 *-- "0..1" IFrequency22Choice : Frequency Statement37 *-- "0..1" IUpdateType4Choice : UpdateType %% INumber3Choice recursion level 1 with max 1 %% IDateAndDateTimeChoice recursion level 1 with max 1 %% IDatePeriod1Choice recursion level 1 with max 1 %% IFrequency22Choice recursion level 1 with max 1 %% IUpdateType4Choice recursion level 1 with max 1
Statement37 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
StatementNumber | Sequential number of the report. | INumber3Choice - Optional 0..1 |
QueryReference | Identification of the query message sent to request this statement. | IsoMax35Text - Optional 0..1 |
StatementIdentification | Reference common to all pages of the statement. | IsoMax35Text - Required 1..1 |
StatementDateTime | Date and time when the statement was created. | IDateAndDateTimeChoice - Required 1..1 |
StatementPeriod | Date period for which the statement was created. | IDatePeriod1Choice - Required 1..1 |
Frequency | Frequency of the statement. | IFrequency22Choice - Optional 0..1 |
FrequencyGranularity | Granularity of the frequency used for the reporting. | FrequencyGranularityType1Code - Optional 0..1 |
UpdateType | Specifies whether the statement is complete or contains changes only. | IUpdateType4Choice - Optional 0..1 |
ActivityIndicator | Indicates whether there is activity or updated information reported in the statement. | IsoYesNoIndicator - Required 1..1 |
SafekeepingAccountAndHoldings building block
Details of the account, account sub-levels and the holdings. Account on which a securities entry is made. For comparison, see the ISO20022 official specification
classDiagram direction tb %% SafekeepingAccount5 recursion level 0 with max 1 SafekeepingAccount5 *-- "1..1" SecuritiesAccount19 : AccountIdentification SafekeepingAccount5 *-- "1..1" PartyIdentification100 : AccountOwner SafekeepingAccount5 *-- "1..1" PartyIdentification100 : AccountServicer SafekeepingAccount5 *-- "0..0" BeneficialOwner2 : BeneficialOwner SafekeepingAccount5 *-- "0..0" AggregateHoldingBalance1 : BalanceForAccount SafekeepingAccount5 *-- "0..1" Intermediary28 : Agent SafekeepingAccount5 *-- "0..0" AccountSubLevel1 : AccountSubLevel1 SafekeepingAccount5 *-- "0..0" AggregateHoldingBalance2 : AccountSubLevel1Difference %% SecuritiesAccount19 recursion level 1 with max 1 class SecuritiesAccount19{ Identification IsoMax35Text Name IsoMax70Text } SecuritiesAccount19 *-- "0..1" GenericIdentification30 : Type %% PartyIdentification100 recursion level 1 with max 1 class PartyIdentification100{ LEI IsoLEIIdentifier } PartyIdentification100 *-- "1..1" IPartyIdentification71Choice : Identification %% PartyIdentification100 recursion level 1 with max 1 class PartyIdentification100{ LEI IsoLEIIdentifier } PartyIdentification100 *-- "1..1" IPartyIdentification71Choice : Identification %% BeneficialOwner2 recursion level 1 with max 1 class BeneficialOwner2{ Nationality CountryCode DomicileCountry CountryCode NonDomicileCountry CountryCode CertificationIndicator IsoYesNoIndicator DeclarationDetails IsoMax350Text } BeneficialOwner2 *-- "1..1" PartyIdentification100 : BeneficialOwnerIdentification BeneficialOwner2 *-- "0..1" AlternateIdentification4 : AdditionalIdentification BeneficialOwner2 *-- "0..1" IBeneficiaryCertificationType9Choice : CertificationType %% AggregateHoldingBalance1 recursion level 1 with max 1 class AggregateHoldingBalance1{ HoldingForm FormOfSecurity1Code HoldingPhysicalType PhysicalTransferType1Code } AggregateHoldingBalance1 *-- "1..1" SecurityIdentification19 : FinancialInstrumentIdentification AggregateHoldingBalance1 *-- "1..0" FinancialInstrumentAggregateBalance1 : BalanceForFinancialInstrument AggregateHoldingBalance1 *-- "0..0" SupplementaryData1 : SupplementaryData %% Intermediary28 recursion level 1 with max 1 Intermediary28 *-- "1..1" PartyIdentification100 : Identification Intermediary28 *-- "1..1" IRole5Choice : Role %% AccountSubLevel1 recursion level 1 with max 1 AccountSubLevel1 *-- "1..1" SecuritiesAccount19 : AccountIdentification AccountSubLevel1 *-- "1..1" PartyIdentification100 : AccountOwner AccountSubLevel1 *-- "1..1" PartyIdentification100 : AccountServicer AccountSubLevel1 *-- "0..0" BeneficialOwner2 : BeneficialOwner AccountSubLevel1 *-- "0..0" AggregateHoldingBalance1 : BalanceForAccount AccountSubLevel1 *-- "0..0" AccountSubLevel2 : AccountSubLevel2 AccountSubLevel1 *-- "0..0" AggregateHoldingBalance2 : AccountSubLevel2Difference AccountSubLevel1 *-- "0..0" Intermediary29 : Agent AccountSubLevel1 *-- "0..0" SupplementaryData1 : SupplementaryData %% AggregateHoldingBalance2 recursion level 1 with max 1 AggregateHoldingBalance2 *-- "1..1" SecurityIdentification19 : FinancialInstrumentIdentification AggregateHoldingBalance2 *-- "1..0" FinancialInstrumentAggregateBalance1 : BalanceForFinancialInstrument AggregateHoldingBalance2 *-- "0..0" SupplementaryData1 : SupplementaryData
SafekeepingAccount5 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
AccountIdentification | Unique and unambiguous identification for the account between the account owner and the account servicer. | SecuritiesAccount19 - Required 1..1 |
AccountOwner | Party that legally owns the account. | PartyIdentification100 - Required 1..1 |
AccountServicer | Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account. | PartyIdentification100 - Required 1..1 |
BeneficialOwner | Individual or entity that is ultimately entitled to the benefit of income and rights in a financial instrument, as opposed to a nominal or legal owner. | BeneficialOwner2 - Unknown 0..0 |
BalanceForAccount | Report on the net position of a financial instrument, on the account, for a certain date. | AggregateHoldingBalance1 - Unknown 0..0 |
Agent | Agent of the financial instrument, for example, the transfer agent. | Intermediary28 - Optional 0..1 |
AccountSubLevel1 | Holdings of level 1. | AccountSubLevel1 - Unknown 0..0 |
AccountSubLevel1Difference | Difference in holdings between the safekeeping account and the sub-accounts of level 1. | AggregateHoldingBalance2 - Unknown 0..0 |
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 SecuritiesBalanceTransparencyReportV01 implementation follows a specific implementaiton pattern. First of all, SecuritiesBalanceTransparencyReportV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, SecuritiesBalanceTransparencyReportV01Document implements IOuterDocument. Because SecuritiesBalanceTransparencyReportV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type SecuritiesBalanceTransparencyReportV01.
classDiagram class IOuterRecord SecuritiesBalanceTransparencyReportV01 --|> IOuterRecord : Implements SecuritiesBalanceTransparencyReportV01Document --|> IOuterDocument~SecuritiesBalanceTransparencyReportV01~ : Implements class IOuterDocument~SecuritiesBalanceTransparencyReportV01~ { SecuritiesBalanceTransparencyReportV01 Message }
Document wrapper for serialization
The only real purpose SecuritiesBalanceTransparencyReportV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:semt.041.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using SecuritiesBalanceTransparencyReportV01.ToDocument() method. The returned SecuritiesBalanceTransparencyReportV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram SecuritiesBalanceTransparencyReportV01Document *-- SecuritiesBalanceTransparencyReportV01 : 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:semt.041.001.01">
<SctiesBalTrnsprncyRpt>
<MsgId>
<!-- MessageIdentification inner content -->
</MsgId>
<SndrId>
<!-- SenderIdentification inner content -->
</SndrId>
<RcvrId>
<!-- ReceiverIdentification inner content -->
</RcvrId>
<Pgntn>
<!-- Pagination inner content -->
</Pgntn>
<StmtGnlDtls>
<!-- StatementGeneralDetails inner content -->
</StmtGnlDtls>
<SfkpgAcctAndHldgs>
<!-- SafekeepingAccountAndHoldings inner content -->
</SfkpgAcctAndHldgs>
<SplmtryData>
<!-- SupplementaryData inner content -->
</SplmtryData>
</SctiesBalTrnsprncyRpt>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_xPhF4Ig7EeO9_8n7Pjtlag"
nextVersions="_LMa20VTQEeatgN-VQ0eFlQ"
name="SecuritiesBalanceTransparencyReportV01"
definition="SCOPE

An account servicer, such as a custodian, central securities depository or international central securities depository, sends the SecuritiesBalanceTransparencyReport message to provide holdings information for the accounts that it services, to disclose underlying details of holdings on an omnibus account that the sender owns or operates at the receiver. The receiver may also be a custodian, central securities depository, international central securities depository, and the ultimate receiver may be a registrar, transfer agent, fund company, official agent of the reported instrument(s) and/or other parties.

The SecuritiesBalanceTransparencyReport message provides transparency of holdings through layers of custody chains in a consolidated statement, to allow for an efficient gathering of investor data, which, in turn, may be used to measure marketing effectiveness, validation of compliance with prospectuses and regulatory requirements, and the calculation of trailer fees and other retrocessions.

USAGE

The SecuritiesBalanceTransparencyReport message is used to provide aggregated holdings information and a breakdown of holdings information.

A sender of the SecuritiesBalanceTransparencyReport message will identify its own safekeeping account (for example, an omnibus account in the ledger of the receiver) and holdings information at the level of account(s) for which the sender is the account servicer (that is, in the ledger of the sender). When relevant, the sender will aggregate its holdings information with holdings information of one or more sub levels and sub-sub levels of accounts, that is, with holdings information the sender has received from the owner(s) of the account(s) for which the sender is the account servicer. 

When the receiver of the SecuritiesBalanceTransparencyReport message is also an account servicer, it may, in turn, send a statement back to the sender of the first statement, enriched with data of its own.
Ultimately, the statement reaches the relevant fund company, for example, the transfer agent, that may use it for obtaining information about the custodians, distributors and commercial agreement references associated with holdings on an omnibus account in the shareholder register."
registrationStatus="Registered"
messageSet="_xlruBOSqEeauk5I89sEP4g"
xmlTag="SctiesBalTrnsprncyRpt"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_tOXzJYjUEeONZKAAW4pOaQ"
nextVersions="_LMa201TQEeatgN-VQ0eFlQ"
name="MessageIdentification"
definition="Unique and unambiguous identification of the message. When the report has multiple pages, one message equals one page. Therefore, the MessageIdentification uniquely identifies the page."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="MsgId"
complexType="_Q7pG5Np-Ed-ak6NoX_4Aeg_-967008570" />
<messageBuildingBlock
xmi:id="_tOXzJojUEeONZKAAW4pOaQ"
nextVersions="_LMa21VTQEeatgN-VQ0eFlQ"
name="SenderIdentification"
definition="Identification of the party that is the sender of the message."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="SndrId"
complexType="_QgqFw2wfEeWLq_lbZ2Mhyw" />
<messageBuildingBlock
xmi:id="_tOXzJ4jUEeONZKAAW4pOaQ"
nextVersions="_LMa211TQEeatgN-VQ0eFlQ"
name="ReceiverIdentification"
definition="Identification of the party that is the receiver of the message."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="RcvrId"
complexType="_QgqFw2wfEeWLq_lbZ2Mhyw" />
<messageBuildingBlock
xmi:id="_7HiiYIjUEeONZKAAW4pOaQ"
nextVersions="_LMa22VTQEeatgN-VQ0eFlQ"
name="Pagination"
definition="Page number of the message (within a statement) and continuation indicator to indicate that the statement is to continue or that the message is the last page of the statement."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Pgntn"
complexType="_Q65gBdp-Ed-ak6NoX_4Aeg_-21330104" />
<messageBuildingBlock
xmi:id="_tOXzKIjUEeONZKAAW4pOaQ"
nextVersions="_LMa221TQEeatgN-VQ0eFlQ"
name="StatementGeneralDetails"
definition="Provides general information on the statement."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="StmtGnlDtls"
complexType="_JbLJ45rhEeOu4p9bQU8tNA" />
<messageBuildingBlock
xmi:id="_tOXzKYjUEeONZKAAW4pOaQ"
nextVersions="_LMa23VTQEeatgN-VQ0eFlQ"
name="SafekeepingAccountAndHoldings"
definition="Details of the account, account sub-levels and the holdings."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="SfkpgAcctAndHldgs"
complexType="_0mLLh4jyEeONZKAAW4pOaQ" />
<messageBuildingBlock
xmi:id="_JnQCkVLbEeSGm-QRrvBvYg"
nextVersions="_LMa231TQEeatgN-VQ0eFlQ"
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="semt"
messageFunctionality="041"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.