ZagTrader

Category 5: Securities markets

MT509 Trade Status Message

Written and maintained by ZagTrader. Last reviewed . How this page is sourced and checked

The MT509 reports the status of a trade-side message: whether an order (MT502) was accepted, rejected, cancelled or replaced, or whether a confirmation (MT515, MT518) was matched, affirmed or rejected. Brokers send it to their clients, clients and electronic trade confirmation (ETC) providers send it back to brokers, and fund platforms use it to acknowledge fund orders.

Message type
MT509
Category
5
Structure
7 sequences, 29 fields listed

When MT509 is used

The MT509 is the status message of the trade initiation and confirmation flow, the counterpart of what the MT548 is for settlement instructions. In the order direction, the executing party (broker, transfer agent) tells the instructing party what happened to its MT502: received and accepted, rejected with a reason, cancellation done or denied, replacement done. In the confirmation direction, the client (or an ETC service provider acting for it) tells the broker that an MT515 was rejected or is not affirmed, and why. Positive affirmation itself is sent with an MT517. The standard also lets an instructing party send an MT509 to its custodian to update the trade status behind a settlement instruction it sent earlier.

23G says what the status is about. INST reports on an instruction (an order or a confirmation), CAST on a cancellation request, REST on a replacement request. Sequence A1 (LINK) carries the reference of the message being reported on, normally 20C::RELA with the SEME of that message and 13A::LINK with its type (for example 502 or 515).

Sequence A2 (STAT) holds the status in field 25D, and the qualifier says which kind of status it is: IPRC (instruction processing: PACK accepted, REJT rejected, REPR in repair), CPRC (cancellation processing: CAND cancelled, CANP pending, DEND denied, PARF partially filled with the rest cancelled), RPRC (replacement processing: REPL done, PEND, DEND, REJT), MTCH (matching: MACH or NMAT) and AFFM (affirmation: AFFI affirmed or NAFI unaffirmed). Several A2 occurrences can report several statuses at once.

Reasons go in sequence A2a (REAS) inside the status, as 24B with a qualifier that follows the status: REJT for a rejection, NMAT for unmatched, NAFI for unaffirmed and REPR for repair. Typical reason codes are DSEC (financial instrument), SAFE (account), BUSE (type of order), DDAT (settlement date), DQUA (quantity), DDEA (deal price), DMON (settlement amount), EXEC (commission), ULNK (unknown linked reference), REFE (duplicate reference), LATE (market deadline missed) and NARR, with the text in 70D::REAS.

Sequence B (TRADE) can repeat the trade so that the receiver can identify it without the original: direction (22H::BUSE), payment type (22H::PAYM), the security (35B), and quantities or amounts such as the quantity ordered (36B::ORDR), executed so far (PREX), remaining or cancelled (CANC, AFCA) and the related amounts in 19A.

Fund platforms use the MT509 to acknowledge or reject fund subscriptions and redemptions and to report on cancellation requests. A fund order router may also use it to report whether an incoming message passed its own validation.

MT509 format: sequences and fields

Sequence AGeneral InformationMandatory

Identifies the status message. A2 (status) is mandatory inside A.

TagQualifierNameStatusFormatMeaning
16RStart of blockMGENLOpens the General Information block.
20CSEMESender's Message ReferenceM:4!c//16xYour unique reference for this status message. The reference of the message being reported on goes in A1, not here.
23GFunction of the MessageM4!c[/4!c]INST (status of an instruction such as an order or confirmation), CAST (status of a cancellation request) or REST (status of a replacement request). COPY, DUPL or CODU as subfunction mark a copy or duplicate.
98aPREPPreparation Date/TimeOA: :4!c//8!n C: :4!c//8!n6!n E: :4!c//8!n6!n[,3n][/[N]2!n[2!n]]When the status message was created.
16SEnd of blockMGENLCloses the General Information block.

Sequence A1LinkagesOptional, repeatable

References of the message being reported on. Field 20C is mandatory in every A1, one qualifier per occurrence. Newer releases also allow an option U for this reference. Common qualifiers only.

TagQualifierNameStatusFormatMeaning
16RStart of blockMLINKOpens the Linkages block.
13aLINKLinked MessageOA: :4!c//3!c B: :4!c/[8c]/30xType of the message reported on in option A, for example :13A::LINK//502 for an order or 515 for a confirmation.
20CRELARelated Message ReferenceM:4!c//16xThe SEME of the message this status reports on. Without a correct RELA the receiver cannot attach the status to its order or confirmation.
20CPREVPrevious Message ReferenceM:4!c//16xReference of a previous message, for example the original order when the status is about a cancellation.
20CMASTMaster ReferenceM:4!c//16xA grouping reference, for example of a block or a fund switch. BASK, INDX, LIST, PROG, TRRF (deal), COMM (common), BMRB (block matching) and ALMR (allocation matching) are the other references.
16SEnd of blockMLINKCloses the Linkages block.

Sequence A2StatusMandatory, repeatable

One status per occurrence; at least one occurrence. 25D is mandatory; the qualifier names the kind of status.

TagQualifierNameStatusFormatMeaning
16RStart of blockMSTATOpens the Status block.
25DIPRCInstruction Processing StatusM:4!c/[8c]/4!cStatus of the order or confirmation: PACK (accepted for processing), REJT (rejected) or REPR (in repair). The code list also has values that report the progress of an order at the exchange or intermediary.
25DCPRCCancellation Processing StatusM:4!c/[8c]/4!cStatus of a cancellation request: PACK (accepted), CAND (cancellation completed), CANP (pending), DEND (denied, for example the order was already executed), PARF (partly filled, the rest cancelled), REJT or REPR.
25DRPRCReplacement Processing StatusM:4!c/[8c]/4!cStatus of a replacement request (an MT502 with REPL): REPL (replacement completed), PACK, PEND, PART (partly filled, replacement accepted for the rest), DEND, REJT or REPR.
25DMTCHMatching StatusM:4!c/[8c]/4!cWhether a confirmation matched the counterparty’s data: MACH or NMAT.
25DAFFMAffirmation StatusM:4!c/[8c]/4!cWhether a confirmation was affirmed: AFFI (affirmed) or NAFI (unaffirmed, with the reason in A2a).
16SEnd of blockMSTATCloses the Status block.

Sequence A2aReasonOptional, repeatable

Reason for the status in the enclosing A2, one per occurrence. The 24B qualifier follows the status.

TagQualifierNameStatusFormatMeaning
16RStart of blockMREASOpens the Reason block.
24BREJTRejection ReasonM:4!c/[8c]/4!cWhy the order, confirmation or request was rejected, for example DSEC (instrument), SAFE (account), BUSE (type of order), DDAT (settlement date), DQUA (quantity), ULNK (unknown linked reference), REFE (duplicate reference), LATE (after the market deadline) or NARR.
24BNMATUnmatched ReasonM:4!c/[8c]/4!cWhich data did not match, for example DDEA (deal price), DQUA (quantity), DMON (settlement amount), DTRD (trade date), DDAT (settlement date), EXEC (commission), ACRU (accrued interest) or CMIS (no matching data found).
24BNAFIUnaffirmed ReasonM:4!c/[8c]/4!cWhy a confirmation is not affirmed.
24BREPRRepair ReasonM:4!c/[8c]/4!cWhat is being repaired, with the same kind of codes as for rejections.
70DREASReason NarrativeO:4!c//6*35xFree text explaining the reason, required in practice when the reason code is NARR.
16SEnd of blockMREASCloses the Reason block.

Sequence BTrade DetailsOptional

Repeats the trade being reported on. When B is present, 22H::BUSE, 22H::PAYM and 35B are mandatory. The quantity and amount qualifiers are conditional: which ones fit depends on the status reported. Common qualifiers only.

TagQualifierNameStatusFormatMeaning
16RStart of blockMTRADEOpens the Trade Details block.
98aTRADTrade Date/TimeOA: :4!c//8!n B: :4!c/[8c]/4!c C: :4!c//8!n6!nTrade date, when known. Fund platforms can show a provisional trade date here.
98aSETTSettlement Date/TimeOA: :4!c//8!n B: :4!c/[8c]/4!c C: :4!c//8!n6!nSettlement date, when known or provisional. XCDT gives the date a confirmation is expected.
22HBUSEBuy/Sell IndicatorM:4!c//4!cDirection of the trade or order: BUYI, SELL, or SUBS, REDM, SWIF, SWIT for funds.
22HPAYMPayment IndicatorM:4!c//4!cAPMT (against payment) or FREE.
97aSAFESafekeeping AccountOA: :4!c//35x B: :4!c/[8c]/4!c/35xThe account the order or trade is for. 95a::ACOW names the account owner.
19AORDROriginal Ordered AmountC:4!c//[N]3!a15dAmount ordered, for orders given as an amount. Other qualifiers: PREX (executed), CANC (to be cancelled), AFCA (cancelled), REPL and REMA (replacement), DBAM (debit blocked amount).
90aDEALDeal PriceRepeatableOA: :4!c//4!c/[N]15d B: :4!c//4!c/3!a15dPrice, for example of an executed part.
36BORDROriginal Ordered QuantityRepeatableC:4!c//4!c/15dQuantity ordered. Other qualifiers: PREX (executed so far), CANC (to be cancelled), AFCA (cancelled), REPL and REMA (replacement).
35BIdentification of the Financial InstrumentM[ISIN1!e12!c] [4*35x]The security of the order or trade, ISIN first.
16SEnd of blockMTRADECloses the Trade Details block.

Sequence B1Trading PartiesOptional, repeatable

Trading parties of the order or trade, one per occurrence. Common qualifiers only.

TagQualifierNameStatusFormatMeaning
16RStart of blockMTRADPRTYOpens the Trading Parties block.
95aBUYRBuyerMP: :4!c//4!a2!a2!c[3!c] Q: :4!c//4*35x R: :4!c/8c/34xThe buyer. SELL, INVE, CLBR, STBR, INBR, BRCR, RQBR, DEAG and REAG are the other qualifiers.
20CPROCProcessing ReferenceO:4!c//16xThe party’s own reference.
16SEnd of blockMTRADPRTYCloses the Trading Parties block.

Sequence CAdditional InformationOptional

Originator and final recipient when the status is relayed by an intermediary.

TagQualifierNameStatusFormatMeaning
16RStart of blockMADDINFOOpens the Additional Information block.
95aMEOROriginator of MessageOP: :4!c//4!a2!a2!c[3!c] Q: :4!c//4*35x R: :4!c/8c/34xThe party that originated the status, for example the transfer agent behind a fund order router. MERE is the recipient.
16SEnd of blockMADDINFOCloses the Additional Information block.

Format notation: n digits, a upper-case letters, c upper-case letters and digits, x any character of the Swift character set, d a decimal number with a comma, ! fixed length, [ ] optional, 4*35x up to 4 lines of 35 characters. M mandatory, O optional, C conditional (a rule decides).

Rules worth knowing

  • Sequence A with at least one A2 is mandatory. A1, A2a, B, B1 and C are optional; if B is present it must contain 22H::BUSE, 22H::PAYM and 35B.
  • Use the 24B qualifier that fits the status in the same A2: REJT reasons with a rejection, NMAT with unmatched, NAFI with unaffirmed, REPR with repair.
  • The quantities and amounts in sequence B are conditional under network rules: which ones may appear depends on the status reported. Search for the error code your interface reports, since rule numbers differ between releases.
  • A rejection is final: the rejected order or confirmation is not processed. Send a corrected message with a new reference rather than a cancellation of the rejected one.

MT509 example

The broker (BRKRAEADXXX) acknowledges the MT502 buy order NW502261020007 of Northwind Asset Management (FUNDGB2LXXX) for 40,000 shares: the order is accepted for execution.

{1:F01BRKRAEADAXXX0000000000}{2:I509FUNDGB2LXXXXN}{4:
:16R:GENL
:20C::SEME//BRK509261020014
:23G:INST
:98C::PREP//20261020083215
:16R:LINK
:13A::LINK//502
:20C::RELA//NW502261020007
:16S:LINK
:16R:STAT
:25D::IPRC//PACK
:16S:STAT
:16S:GENL
:16R:TRADE
:22H::BUSE//BUYI
:22H::PAYM//APMT
:36B::ORDR//UNIT/40000,
:35B:ISIN AEZAGT000016
ZAGTRADER DEMO PJSC
:16S:TRADE
-}
Decode this example in the parser

Line by line

LineWhat it says
{1:F01BRKRAEADAXXX0000000000}{2:I509FUNDGB2LXXXXN}{4:Sender BRKRAEADXXX (the broker), receiver FUNDGB2LXXX (the manager).
:16R:GENL
:20C::SEME//BRK509261020014
:23G:INSTStatus of an instruction (the order).
:98C::PREP//20261020083215
:16R:LINK
:13A::LINK//502The message reported on is an MT502.
:20C::RELA//NW502261020007Its reference (the manager’s SEME).
:16S:LINK
:16R:STAT
:25D::IPRC//PACKAccepted for processing.
:16S:STAT
:16S:GENL
:16R:TRADE
:22H::BUSE//BUYI
:22H::PAYM//APMT
:36B::ORDR//UNIT/40000,Quantity ordered.
:35B:ISIN AEZAGT000016
ZAGTRADER DEMO PJSC
:16S:TRADE
-}

A rejection would carry :25D::IPRC//REJT and, inside the STAT block, a REAS block such as :24B::REJT//DSEC (unknown instrument).

When the manager rejects a confirmation, the direction reverses: the manager sends the MT509 to the broker with :13A::LINK//515, the broker’s SEME in 20C::RELA and a reason such as :24B::REJT//EXEC for a commission it does not accept.

All BICs and the ISIN are made up. The ISIN carries a valid check digit.

Common errors and rejects

  1. Status cannot be attached to an order (wrong RELA)

    If 20C::RELA does not carry the exact SEME of the order or confirmation, the receiver’s system cannot link the status and it lands in an exception queue. Always quote the reference exactly as received, and add 13A::LINK with the type.

  2. Rejection without a usable reason

    A REJT with only NARR and no 70D text, or a reason qualifier that does not fit the status, leaves the other side guessing. Use the most specific 24B code and add 70D only where it adds facts.

  3. Cancellation denied (DEND) after execution

    A cancellation request for an order that has already been executed comes back with 25D::CPRC//DEND. The trade will be confirmed with an MT515; if it must be undone, a new opposite order is needed.

  4. Confirmation not affirmed for a commission or amount difference

    A client that disagrees with the commission, fees or settlement amount of an MT515 reports NAFI or a rejection with reasons EXEC, CHAR or DMON. The broker must agree the figures and resend the confirmation (cancel and new).

  5. MT509 confused with MT548

    The MT509 reports on orders and confirmations; the status of a settlement instruction (MT540 to MT543) comes in an MT548 from the custodian. A settlement problem such as LACK is never reported in an MT509.

    How to fix it

MT509 in ISO 20022

For investment funds, Swift’s MT and MX equivalence table (8 May 2024) maps the MT509 funds template to setr.016 (OrderInstructionStatusReport) and setr.017 (OrderCancellationStatusReport). Clearstream’s Vestima user guide pairs MT509 INST with setr.016, MT509 CAST with setr.017, and also uses setr.057 (order confirmation status report) and semt.001 (securities message rejection) where an MT509 was used before.

For other trade status reporting the table lists no ISO 20022 equivalent of the MT509, and it remains in use on FIN.

MT509 questions

What is an MT509 message?
A Swift trade status message. It reports whether an order, a cancellation or replacement request, or a trade confirmation was accepted, rejected, cancelled, matched or affirmed, with reason codes when something is wrong.
What is the difference between MT509 and MT548?
The MT509 reports on trade-side messages (orders and confirmations: MT502, MT515, MT518). The MT548 reports on settlement instructions (MT540 to MT543) and comes from the custodian.
Who sends an MT509?
Both sides. The broker or transfer agent sends it to the client about orders; the client or its ETC service provider sends it to the broker about confirmations it rejects or has not affirmed.
Does an MT509 affirm a trade?
It can report an affirmation status (25D::AFFM//AFFI), but positive affirmation of a confirmation is normally sent with an MT517. The MT509 is mostly used for rejections and for the status of orders and requests.
What is the ISO 20022 equivalent of MT509?
For fund orders, setr.016 (order instruction status report) and setr.017 (order cancellation status report). For other trade status there is no equivalent in Swift’s equivalence table.

All MT messages · Category 5 messages · ISO 20022 messages · Codes · Troubleshooting