semt: Securities management
semt.002 Securities Balance Custody Report
Written and maintained by ZagTrader. Last reviewed . How this page is sourced and checked
The semt.002 is the ISO 20022 custody statement of holdings: an account servicer such as a CSD or custodian reports to the account owner the securities it holds on a safekeeping account at a point in time, instrument by instrument, with aggregate, available and unavailable balances and sub-balances. It is the counterpart of the MT535 custody statement and is the holdings statement T2S sends to its participants.
- Message
- SecuritiesBalanceCustodyReport
- Root element
- SctiesBalCtdyRpt
- Common version
- semt.002.001.11
- MT equivalent
- MT535
When semt.002 is used
The account servicer (a CSD, sub-custodian or global custodian) sends the semt.002 to the account owner or a party acting for it. It reports one safekeeping account, or a set of sub-accounts, as at the date and time in StmtGnlDtls/StmtDtTm. It is used for daily or intraday position reconciliation, as an answer to a statement request, and to show what is available to deliver.
Like the MT535 it states its frequency (Frqcy), whether it is complete or a delta (UpdTp with COMP or DELT) and its basis (StmtBsis with SETT settled, TRAD traded or CONT contractual positions). Unlike the MT535 it is a custody statement only: valuation statements have their own message, semt.003 (Securities Balance Accounting Report), so there is no statement-type indicator.
Each instrument is one BalForAcct block with the identifier in FinInstrmId, the total position in AggtBal, and optionally AvlblBal and NotAvlblBal. Every balance states its direction in a ShrtLngInd (LONG or SHOR) element instead of the MT sign. Sub-balances go in BalBrkdwn (for example AWAS, PEND, PENR, BLOK, PLED, LOAN, BLCA) and AddtlBalBrkdwn (classifications such as COLA, NOMI, UNRG), positions per place of safekeeping in BalAtSfkpgPlc, and lots in QtyBrkdwn.
When SubAcctInd is true, positions are reported per sub-account in SubAcctDtls, each with its own account and BalForSubAcct blocks, which corresponds to an MT535 with :17B::CONS//Y. Prices and values are optional: PricDtls gives the price and AcctBaseCcyAmts or InstrmCcyAmts the holding value in the account base currency or the instrument currency, with statement totals in AcctBaseCcyTtlAmts.
Movements between two statements are reported in semt.017, and pending instructions in semt.018. See the guide to reading a custody statement and reconciliation breaks, which apply equally to semt.002.
Versions in common use
| Version | Where it is used |
|---|---|
| semt.002.001.11 | Version used by T2S from its June 2026 release (R2026.JUN), when T2S moved its messages to ISO 20022 maintenance release 2024. The element tree below is from this version. |
| semt.002.001.12 | Approved for T2S release R2026.NOV (November 2026) under T2S change request CR-0841, aligning with ISO maintenance release 2025. |
semt.002 key elements
Paths are relative to Document/SctiesBalCtdyRpt. Occurrence is from the base message (semt.002.001.11); market practice such as CBPR+ or a CSD’s rules can make an optional element mandatory or forbid it.
| Element | Occurs | Meaning |
|---|---|---|
| PgntnPagination | [1..1] | Page number and last page indicator. A long statement is split over several messages. |
| PgNbPage Number | [1..1] | Number of this page. |
| LastPgIndLast Page Indicator | [0..1] | true on the last page. Equivalent of LAST or ONLY in MT field 28E. |
| StmtGnlDtlsStatement General Details | [1..1] | What the statement covers and how it was built. |
| RptNbReport Number | [0..1] | Sequential statement number (Shrt for three characters, Lng for five), as in MT 13a::STAT. |
| QryRefQuery Reference | [0..1] | Reference of the request this statement answers. |
| StmtIdStatement Identification | [0..1] | The servicer’s identification of the statement. |
| StmtDtTmStatement Date Time | [1..1] | The date (Dt) or date and time (DtTm) at which the positions are stated. |
| FrqcyFrequency | [1..1] | How often the statement is sent, for example DAIL, INDA, WEEK, MNTH or ADHO. |
| UpdTpUpdate Type | [1..1] | COMP for all positions, DELT for changes only. |
| StmtBsisStatement Basis | [1..1] | SETT settled, TRAD traded or CONT contractual positions. |
| ActvtyIndActivity Indicator | [0..1] | false when there are no holdings to report. |
| SubAcctIndSub Account Indicator | [0..1] | true when positions are reported per sub-account in SubAcctDtls. |
| AcctOwnrAccount Owner | [0..1] | The owner of the account, by BIC (AnyBIC) or proprietary identification, optionally with an LEI. |
| AcctSvcrAccount Servicer | [0..1] | The custodian or CSD that keeps the account. |
| SfkpgAcctSafekeeping Account | [0..1] | The securities account reported. |
| IdIdentification | [1..1] | The account number. Reconcile on account plus ISIN. |
| BlckChainAdrOrWlltBlock Chain Address Or Wallet | [0..1] | A blockchain address or wallet, for holdings recorded on a distributed ledger. |
| BalForAcctBalance For Account | [0..n] | One block per instrument held. Equivalent of MT535 sequence B1. |
| FinInstrmIdFinancial Instrument Identification | [1..1] | The instrument: ISIN, other identifiers (OthrId) and a description (Desc). |
| ISINISIN | [0..1] | The ISIN of the instrument. |
| FinInstrmAttrbtsFinancial Instrument Attributes | [0..1] | Static data such as denomination currency, maturity date, coupon rate and pool factors. |
| AggtBalAggregate Balance | [1..1] | The total position. Equivalent of 93B::AGGR. |
| ShrtLngIndShort Long Indicator | [1..1] | LONG or SHOR: the sign of the position, which in MT is an N before the quantity. |
| QtyQuantity | [1..1] | The quantity as Unit, FaceAmt or AmtsdVal (nested as Qty/Qty/...), or both face and amortised value. |
| AvlblBalAvailable Balance | [0..1] | Quantity free to be delivered. Equivalent of 93B::AVAI. |
| NotAvlblBalNot Available Balance | [0..1] | Quantity not free. Equivalent of 93B::NAVL. |
| SfkpgPlcSafekeeping Place | [0..1] | Where the instrument is held, for example NCSD, ICSD, CUST or SHHE with an identifier. |
| PricDtlsPrice Details | [0..n] | Price type (MRKT, INDC...), value as an amount or a rate, value type, source and quotation date. |
| FXDtlsForeign Exchange Details | [0..n] | Exchange rate used to value the holding in another currency. |
| AcctBaseCcyAmtsAccount Base Currency Amounts | [0..1] | Values in the account base currency: holding value, previous holding value, book value, eligible collateral value and accrued interest. |
| HldgValHolding Value | [0..1] | Value of the position. Equivalent of 19A::HOLD. |
| InstrmCcyAmtsInstrument Currency Amounts | [0..1] | The same values expressed in the instrument currency. |
| QtyBrkdwnQuantity Breakdown | [0..n] | Lots of the position with lot number, quantity, date and price. Equivalent of MT535 B1c. |
| BalBrkdwnBalance Breakdown | [0..n] | Sub-balances by status. Equivalent of MT535 B1b. |
| SubBalTpSub Balance Type | [1..1] | The sub-balance code, for example AWAS, PEND, PENR, BLOK, BLCA, PLED, LOAN, BORR, COLI, COLO, RSTR. |
| AddtlBalBrkdwnAdditional Balance Breakdown | [0..n] | Further classifications of the position, for example COLA (eligible for collateral), NOMI (registered), UNRG (unregistered), CLEN, DIRT. |
| BalAtSfkpgPlcBalance At Safekeeping Place | [0..n] | The position split by place of safekeeping, each with its own aggregate and sub-balances. Equivalent of an MT535 B1b with AGGR and 94a::SAFE. |
| SubAcctDtlsSub Account Details | [0..n] | Positions per sub-account when SubAcctInd is true. Equivalent of repeated MT535 sequence B with CONS Y. |
| SfkpgAcctSafekeeping Account | [0..1] | The sub-account reported. |
| ActvtyIndActivity Indicator | [0..1] | false when the sub-account holds nothing. |
| BalForSubAcctBalance For Sub Account | [0..n] | One block per instrument in the sub-account, with the same content as BalForAcct. |
| AcctBaseCcyTtlAmtsAccount Base Currency Total Amounts | [0..1] | Totals of the page and statement in the account base currency. |
| TtlHldgsValOfStmtTotal Holdings Value Of Statement | [1..1] | Total value of all holdings. Equivalent of 19A::HOLS. |
Rules worth knowing
- The Document carries no message identification of its own: on Swift and in T2S the message reference travels in the Business Application Header (
BizMsgIdr), which corresponds to MT field 20C::SEME. - Every aggregate balance needs
ShrtLngInd. Quantities are written as plain decimals with a dot (150000,12.5), not with the MT comma. - Choices must be filled with exactly one option: for example
StmtDtTmtakes eitherDtorDtTm, andFrqcy,UpdTpandStmtBsistake either a code (Cd) or a proprietary value (Prtry).
semt.002 XML example
The same statement as in the MT535 example: ZagTrader Test Bank (ZAGTAEADXXX), as custodian, reports account ZAG-SAFE-0001 of the asset manager FUNDGB2LXXX as at 22 October 2026 18:00 (Dubai time). Three instruments: 150,000 shares with 10,000 earmarked for a pending delivery, 50,000 shares, and a sukuk held in face amount. Values add up to AED 3,290,000.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:semt.002.001.11">
<SctiesBalCtdyRpt>
<Pgntn>
<PgNb>1</PgNb>
<LastPgInd>true</LastPgInd>
</Pgntn>
<StmtGnlDtls>
<RptNb>
<Shrt>112</Shrt>
</RptNb>
<StmtId>ZT535S2610220001</StmtId>
<StmtDtTm>
<DtTm>2026-10-22T18:00:00+04:00</DtTm>
</StmtDtTm>
<Frqcy>
<Cd>DAIL</Cd>
</Frqcy>
<UpdTp>
<Cd>COMP</Cd>
</UpdTp>
<StmtBsis>
<Cd>SETT</Cd>
</StmtBsis>
<ActvtyInd>true</ActvtyInd>
<SubAcctInd>false</SubAcctInd>
</StmtGnlDtls>
<AcctOwnr>
<Id>
<AnyBIC>FUNDGB2LXXX</AnyBIC>
</Id>
</AcctOwnr>
<AcctSvcr>
<Id>
<AnyBIC>ZAGTAEADXXX</AnyBIC>
</Id>
</AcctSvcr>
<SfkpgAcct>
<Id>ZAG-SAFE-0001</Id>
</SfkpgAcct>
<BalForAcct>
<FinInstrmId>
<ISIN>AEZAGT000016</ISIN>
<Desc>ZAG TEST HOLDINGS PJSC ORD</Desc>
</FinInstrmId>
<AggtBal>
<ShrtLngInd>LONG</ShrtLngInd>
<Qty>
<Qty>
<Qty>
<Unit>150000</Unit>
</Qty>
</Qty>
</Qty>
</AggtBal>
<AvlblBal>
<Qty>
<Qty>
<Unit>140000</Unit>
</Qty>
</Qty>
</AvlblBal>
<NotAvlblBal>
<Qty>
<Unit>10000</Unit>
</Qty>
</NotAvlblBal>
<PricDtls>
<Tp>
<Cd>MRKT</Cd>
</Tp>
<Val>
<Amt Ccy="AED">12.5</Amt>
</Val>
<ValTp>
<Yldd>false</Yldd>
</ValTp>
<QtnDt>
<Dt>2026-10-22</Dt>
</QtnDt>
</PricDtls>
<AcctBaseCcyAmts>
<HldgVal>
<Amt Ccy="AED">1875000</Amt>
</HldgVal>
</AcctBaseCcyAmts>
<BalBrkdwn>
<SubBalTp>
<Cd>AWAS</Cd>
</SubBalTp>
<Qty>
<Qty>
<Qty>
<Unit>140000</Unit>
</Qty>
</Qty>
</Qty>
</BalBrkdwn>
<BalBrkdwn>
<SubBalTp>
<Cd>PEND</Cd>
</SubBalTp>
<Qty>
<Qty>
<Qty>
<Unit>10000</Unit>
</Qty>
</Qty>
</Qty>
</BalBrkdwn>
</BalForAcct>
<BalForAcct>
<FinInstrmId>
<ISIN>AEZAGT000024</ISIN>
<Desc>ZAG TEST CEMENT PJSC ORD</Desc>
</FinInstrmId>
<AggtBal>
<ShrtLngInd>LONG</ShrtLngInd>
<Qty>
<Qty>
<Qty>
<Unit>50000</Unit>
</Qty>
</Qty>
</Qty>
</AggtBal>
<AvlblBal>
<Qty>
<Qty>
<Unit>50000</Unit>
</Qty>
</Qty>
</AvlblBal>
<PricDtls>
<Tp>
<Cd>MRKT</Cd>
</Tp>
<Val>
<Amt Ccy="AED">8.4</Amt>
</Val>
<ValTp>
<Yldd>false</Yldd>
</ValTp>
<QtnDt>
<Dt>2026-10-22</Dt>
</QtnDt>
</PricDtls>
<AcctBaseCcyAmts>
<HldgVal>
<Amt Ccy="AED">420000</Amt>
</HldgVal>
</AcctBaseCcyAmts>
</BalForAcct>
<BalForAcct>
<FinInstrmId>
<ISIN>AEZAGT000032</ISIN>
<Desc>ZAG TEST SUKUK 5.25 2031</Desc>
</FinInstrmId>
<FinInstrmAttrbts>
<DnmtnCcy>AED</DnmtnCcy>
<MtrtyDt>2031-04-15</MtrtyDt>
<IntrstRate>5.25</IntrstRate>
</FinInstrmAttrbts>
<AggtBal>
<ShrtLngInd>LONG</ShrtLngInd>
<Qty>
<Qty>
<Qty>
<FaceAmt>1000000</FaceAmt>
</Qty>
</Qty>
</Qty>
</AggtBal>
<PricDtls>
<Tp>
<Cd>MRKT</Cd>
</Tp>
<Val>
<Rate>99.5</Rate>
</Val>
<ValTp>
<Yldd>false</Yldd>
</ValTp>
<QtnDt>
<Dt>2026-10-22</Dt>
</QtnDt>
</PricDtls>
<AcctBaseCcyAmts>
<HldgVal>
<Amt Ccy="AED">995000</Amt>
</HldgVal>
</AcctBaseCcyAmts>
</BalForAcct>
<AcctBaseCcyTtlAmts>
<TtlHldgsValOfStmt>
<Amt Ccy="AED">3290000</Amt>
</TtlHldgsValOfStmt>
</AcctBaseCcyTtlAmts>
</SctiesBalCtdyRpt>
</Document>Decode this example in the parserDocument only, without a Business Application Header. All BICs, ISINs and names are made up; the ISINs carry valid check digits.
The nested Qty/Qty/Qty in AggtBal is not a typo: the outer level chooses between a quantity and a proprietary balance, the middle level between a single quantity and original-and-current face, the inner level between units, face amount and amortised value.
The share price is an amount (Val/Amt), the sukuk price a percentage rate (Val/Rate), as 90B ACTU and 90A PRCT in the MT535.
semt.002 and its MT equivalent
semt.002 is the counterpart of the custody form of the MT535 (:22F::STTY//CUST). The accounting form (STTY//ACCT) maps to semt.003. Most MT535 fields have a direct element, and the MX adds structured identifiers such as LEIs, explicit long/short indicators and holding values in two currencies.
Category 5 messages were not part of the November 2025 payments deadline, so custodians still send MT535 on FIN alongside semt.002. See ISO 20022 migration in securities versus payments.
| ISO 20022 element | MT field | Note |
|---|---|---|
Pgntn/PgNb, Pgntn/LastPgInd | 28E | MORE corresponds to LastPgInd false. |
StmtGnlDtls/RptNb | 13a::STAT | |
StmtGnlDtls/StmtDtTm | 98a::STAT | |
StmtGnlDtls/Frqcy/Cd | 22F::SFRE | |
StmtGnlDtls/UpdTp/Cd | 22F::CODE | |
StmtGnlDtls/StmtBsis/Cd | 22F::STBA | |
(no element: custody only) | 22F::STTY | ACCT statements map to semt.003. |
StmtGnlDtls/ActvtyInd | 17B::ACTI | |
StmtGnlDtls/SubAcctInd | 17B::CONS | |
AcctOwnr | 95a::ACOW | |
SfkpgAcct/Id | 97a::SAFE (sequence A) | |
SubAcctDtls | Sequence B with 97a::SAFE and 17B::ACTI | When the statement is consolidated. |
BalForAcct/FinInstrmId | 35B | |
BalForAcct/FinInstrmAttrbts | Sequence B1a | |
BalForAcct/AggtBal | 93B::AGGR | |
BalForAcct/AvlblBal | 93B::AVAI | |
BalForAcct/NotAvlblBal | 93B::NAVL | |
BalForAcct/PricDtls | 90a::MRKT or INDC, 94B::PRIC, 98a::PRIC | |
BalForAcct/AcctBaseCcyAmts/HldgVal | 19A::HOLD | |
BalForAcct/AcctBaseCcyAmts/BookVal | 19A::BOOK | |
BalForAcct/AcctBaseCcyAmts/AcrdIntrstAmt | 19A::ACRU | |
BalForAcct/FXDtls | 92B::EXCH | |
BalForAcct/BalBrkdwn, AddtlBalBrkdwn | Sequence B1b (sub-balance qualifier in 93a) | |
BalForAcct/BalAtSfkpgPlc | Sequence B1b with 93B::AGGR and 94a::SAFE | |
BalForAcct/QtyBrkdwn | Sequence B1c | |
AcctBaseCcyTtlAmts/TtlHldgsValOfStmt | 19A::HOLS |
Common errors and rejects
Positions do not reconcile
The same checks as for the MT535 apply: compare the statement basis (
How to fix itStmtBsis) with your books, check the statement time, collect every page up toLastPgIndtrue, and treat aDELTstatement as changes only.Schema error after a T2S or custodian release
A version change alters the namespace (for example semt.002.001.11 to semt.002.001.12). Parsers that check the namespace strictly reject the new version until they are updated. Track your servicer’s release calendar.
Short positions read as long
The quantity itself is never negative: the direction is in
ShrtLngInd. A loader that ignores it will report short positions as holdings.Valuation statement expected, custody report received
semt.002 has no statement type: valuations with book values are sent as
semt.003. Ask your custodian which of the two it sends, and do not expect prices on every line of a semt.002.Sub-account positions missing
When
SubAcctIndis true the positions sit underSubAcctDtls/BalForSubAcct, not underBalForAcct. A loader that reads only BalForAcct sees an empty statement.
semt.002 questions
- What is semt.002?
- The ISO 20022 Securities Balance Custody Report: a statement of the securities a custodian or CSD holds for a client on one account at a given time. It is the counterpart of the custody MT535.
- What is the difference between semt.002 and semt.003?
- semt.002 is the custody statement for position reconciliation.
semt.003is the accounting statement with valuations. The MT535 does both, switched by:22F::STTY. - What is the difference between semt.002 and semt.017?
- semt.002 gives the holdings at a point in time. semt.017 gives the movements booked during a period, with opening and closing balances per instrument.
- Which semt.002 version does T2S use?
- From the June 2026 release T2S uses semt.002.001.11; release R2026.NOV moves it to semt.002.001.12. Check your CSD’s documentation for its exact go-live dates.
- Where is the message reference in a semt.002?
- Not in the Document. The Business Application Header carries it in
BizMsgIdr;StmtGnlDtls/StmtIdidentifies the statement itself.
All ISO 20022 messages · MT messages · MT to ISO 20022 migration