-
Messaging
FIN
Error CodesThis reference guide lists the error codes and abort
notifications returned by FIN in case of message validation errors
orother conditions such as protocol violations or delivery
issues.22 July 2011
-
Table of Contents
Preface………………………………………………………………………………………………………………………………….
4About this document
……………………………………………………………………………………………………………
4Audience
……………………………………………………………………………………………………………………………
4Significant
changes……………………………………………………………………………………………………………..
4Chapter 1 Introduction
…………………………………………………………………………………………………………….
6Chapter 2 Numeric Codes
……………………………………………………………………………………………………….
72.1 General
………………………………………………………………………………………………………………………..
72.2 Logout/Quit Acknowledgement Errors
………………………………………………………………………………
72.3 Re-Login Request Errors
………………………………………………………………………………………………..
72.4 Retrieval Errors
……………………………………………………………………………………………………………..
82.5 Message Status
…………………………………………………………………………………………………………..
102.6 Abort Reasons
…………………………………………………………………………………………………………….
122.7 FIN and General Purpose Application Session
Termination……………………………………………….
132.8 Report Errors
………………………………………………………………………………………………………………
142.9 Bulk Retrieval Errors
Codes…………………………………………………………………………………………..
15Chapter 3 Alphanumeric
Codes………………………………………………………………………………………………
163.1 General
………………………………………………………………………………………………………………………
163.2 A Codes — Re-select Error Codes
…………………………………………………………………………………..
163.3 B Codes — Copy Service
Errors………………………………………………………………………………………
163.4 C, D, and E Codes — Conditional Semantic Error Codes
…………………………………………………… 173.5 G Codes — Service-specific
Validation……………………………………………………………………………
1563.6 H Codes — Basic Header and Application Header Validation
……………………………………………. 1583.7 K Codes — Code Words Validation in Generic Fields
……………………………………………………….
1593.8 L Codes — LOGIN Errors
……………………………………………………………………………………………..
1603.9 M Codes — Message Errors
………………………………………………………………………………………….
1603.10 P Codes — Protocol Errors
………………………………………………………………………………………….
1613.11 R Codes — Re-login/Re-select Errors
…………………………………………………………………………..
1623.12 S Codes — System-initiated Abort Errors
………………………………………………………………………
1623.13 S Codes — Select Errors
…………………………………………………………………………………………….
1633.14 T Codes — Text Validation
………………………………………………………………………………………….
1653.15 U Codes — User Header
Validation………………………………………………………………………………
1803.16 V Codes — System Message Errors and Message Block Format
Errors …………………………… 1803.17 X Codes — FINCopy Message Validation (01 — 27) and Delayed
NAK Error Codes (30 — 99) . 183FIN
2 Error Codes
-
3.18 Y Codes — UNK Error Codes
………………………………………………………………………………………
1853.19 Z Codes — Trailer Validation
……………………………………………………………………………………….
185Chapter 4 FIN
Errors……………………………………………………………………………………………………………
1864.1 Introduction
……………………………………………………………………………………………………………….
1864.2 Abort Codes
………………………………………………………………………………………………………………
1864.3 Diagnostic Codes for
SS100………………………………………………………………………………………..
1884.4 Diagnostic Codes for
SA100………………………………………………………………………………………..
190Legal Notices
……………………………………………………………………………………………………………………..
194Table of Contents
22 July 2011 3
-
Preface
About this documentThis reference guide lists the error codes
and abort notifications returned by FIN in case of message
validationerrors or other conditions such as protocol violations or
delivery issues.AudienceThis book describes the FIN Error Codes. It should be
read by:users who wish to gain an understanding of the FIN service
developers who need background information on elements of
FINThe reader is expected to have an understanding of FIN
messaging, which is described in the FIN ServiceDescription and the
FIN Operations Guide.Significant changesThe following tables list all significant
changes to the content of the FIN Error Codes since the 23 July
2010edition. These tables do not include editorial changes that
SWIFT makes to improve the usability andcomprehension of the
document.New information Location
Addition of MTs 670 in error codes C05, D08, D09,D11, D12, D13,
D14, D15, E23, E84, T19, T73, T85,and T86Error codes C05, D08, D09, D11, D12, D13, D14,D15, E23, E84,
T19, T73, T85, and T86Addition of MTs 380 and 381 in error code D13 Error code D13
Addition of message status 29 Section 2.5, Message Status
Addition of abort reason code 29 Section 2.6, Abort Reasons
Explanation regarding code S1 Section 2.6, Abort Reasons
Addition of report errors 006, 007, 008, 009, and 016 Section
2.8, Report ErrorsAddition of error codes M78, M79, M80, and M81 Section 3.9, M
Codes — Message ErrorsNew FIN errors chapter Chapter 4, FIN Errors
Updated information Location
Update text of message statuses 31, 32, 33, 34, 35,37, 38
Section 2.5, Message Status
FIN
4 Error Codes
-
Updated information Location
Update text of error codes B03, C28, C59, C71, E06,E08, E09,
E22, E62, E77, E78, E80, E83, E87, E98,M73, T14, T39, T62, T73, and
U03Section 3.3, B Codes — Copy Service Errors
Section 3.4.1, C Error Codes
Section 3.4.3, E Error Codes
Section 3.9, M Codes — Message Errors
Section 3.14, T Codes — Text Validation
Section 3.15, U Codes — User Header Validation
Error codes D87, D88, D89, D90, D91, D94, D95,E63, E75, E88,
E89, E98, and V26 again available Section 3.4.2, D Error CodesSection 3.4.3, E Error Codes
Section 3.16, V Codes — System Message Errorsand Message Block
Format ErrorsDeleted information Location
Deletion of references to MTs 405, 528, 529, 582,584, 587, 588,
and 589Changes apply throughout the document
Deletion of section 3.2 A Codes — Abort atApplication Interface
Level following thedeimplementation of Application Interface in
FINChapter 3, Alphanumeric Codes
Deletion of section 3.17 U Codes — User Abort Codes Chapter 3,
Alphanumeric CodesPreface
22 July 2011 5
-
Chapter 1 IntroductionThe FIN error codes are divided into the
following groups:Validation error codes
Conditional semantic error codes
Abort error codes
All input messages are validated for syntax and semantic errors
by the system. If there is an error, a validationerror code is
returned in the logical (negative) acknowledgement or in an MT 019
Abort Notification.Abort error codes give the reason why an application or the
logical connection has been discontinued. Theyare generated
following the recognition of a certain condition and not
necessarily due to errors in a message.Abort error codes can come
from the system or from a user’s terminal.For reference purposes, the error codes have been placed in two
chapters. Chapter 2, Numeric Codes,contains all the errors that are
represented by two- or three-digit codes. Error codes in Chapter
3,Alphanumeric Codes, have the following format:where is a letter designating the error type and identifies the
particular error.FIN
6 Error Codes
-
Chapter 2 Numeric Codes
2.1 GeneralNumeric codes are used for:
Logout/Quit Acknowledgement errors (field 401)
Re-Login Request errors (fields 280, 331 and 333)
Retrieval errors (field 421)
Message status (field 431)
Abort reasons (field 432)
FIN and General Purpose Application session termination (field
443)Report errors (field 461)
2.2 Logout/Quit Acknowledgement ErrorsThe following error codes
are returned in field 401 of Logout and Quit acknowledgements.
Logout and QuitCommands are always positively acknowledged and the
session (General Purpose Application or FIN) closed.However, one of
the following error codes can be included in the
acknowledgement.01 Incorrect time/dayThe Logout Command can include the time/day
inhibitor which prevents the next Loginoccurring before the
time/day specified. The time/day in the format DDHHMM cannot be
morethan 7 days after the current date.02 Training trailer missingThe trailer block is only present if
the message is sent by a training logical terminal. If the
LogoutCommand is sent from a training logical terminal, it must
contain a Training trailer.03 Input sequence number errorEach message sent from a logical
terminal has an input sequence number. The first messagesent in the
General Purpose Application will always have an input sequence
number of 000001,whereas the first message sent in FIN will have an
input sequence number value of the lastinput sequence number+1 sent
from that logical terminal. This error will be returned in
theacknowledgement of a Logout or Quit Command when the input
sequence number of thatcommand is incorrect.2.3 Re-Login Request ErrorsThe following error codes are
returned in fields 280, 331, and 333 of acknowledgements, session
historyreports, and daily check reports:010 Re-Login Request received while logical terminal is active
on the Logical Terminal ControlassociationChapter 2 Numeric Codes
22 July 2011 7
-
011 Logical Terminal Control state error, unable to recover the
logical terminal session012 Re-Login Request authentication failed
013 Re-Login Request semantic error
014 Re-Login Request format error
015 Re-Login Request login request number is incorrect
016 Multiple Re-Logins from user
017 Re-Login Request received while the logical terminal is in
unrecoverable state019 Re-Login Request, session recovery information: incorrect
General Purpose Application sessionnumber020 Re-Login Request, session recovery information: incorrect
input sequence number021 Re-Login Request, session recovery information: input
sequence number-ACK greater thaninput sequence number022 Re-Login Request, session recovery information: input
sequence number-ACK less than thelower bound023 Re-Login Request, session recovery information: incorrect
output sequence number024 Re-Login Request, session recovery information: incorrect
window size026 Re-Login Request, login and re-login protocol versions are
not the same027 Re-Login Request, logical terminal does not belong to Sign
Distinguished Name (DN)organisation028 Re-Login Request, the Live destination that owns the Test
and Training destination does notbelong to Sign Distinguished Name
(DN) organisation2.4 Retrieval ErrorsThe following codes are returned in field
421 of message retrievals:000 Message has no text block
002 Message was encrypted and no key or the wrong key was
supplied by the userFIN
8 Error Codes
-
003 Empty report (no messages found)
004 Logical terminal is not authorised to retrieve the message,
that is the requester is neither thesender nor the receiver of the
original message005 Text lost due to Slice Processor recovery
006 History lost due to Slice Processor recovery
007 Target message is a retrieval report (MTs 021 or 023)
010 Invalid MT received by Slice Processor pseudo logical
terminal (system)011 Invalid received by Slice Processor pseudo logical terminal
(system)012 Invalid date in retrieval criteria tag (system)
013 Invalid time in retrieval criteria tag (system)
014 End daytime before start daytime
015 Target message older than 124 days (for range retrieval,
daytime used)016 is not ‘XXX’
018 Invalid destination for report (tag 102). The logical
terminal must have the same destination asthe sender of the
retrieval request or be a SWIFT logical terminal, and must be
enabled for theapplication in which the retrieval message is to be
sent019 Invalid input retrieval by receiver or output retrieval by
sender (only single message inputreference/message output reference
allowed)020 Invalid synonym retrieval (synonym is not sender or receiver
of message)021 Unknown target logical terminal
022 Request received at wrong Slice Processor (system)
023 Could not retrieve message input reference in message output
reference retrieval (system)032 No delivery attempt in message input reference retrieval by
receiver033 On-line text read error (system)
034 On-line history read error (system)
Chapter 2 Numeric Codes
22 July 2011 9
-
035 Text read error from archival (system)
036 History read error from archival (system)
037 Partial report — major system recovery in progress
038 Unable to retrieve text and history from archival because of
system problems040 The limits for group retrieval (99 messages in one request)
have been exceeded041 Message could not be decrypted (system)
043 The logical terminals in the beginning message input
reference/message output reference andthe ending message input
reference/message output reference in a range retrieval request
arenot the same, in tag 252 (message input reference range) or 254
(message output referencerange)044 Illogical use of field 152 or field 153 . input sequence
number or outputsequence number already included as component in
message input reference(s) or messageoutput reference(s)045 Message text not retrievable (message not successfully
delivered)046 Off-line retrieval not allowed for Test and Training
messages047 The text of local test mode messages is not retrievable
048 Retrieval message too long
049 Retrieval period specified exceeds 10 days
099 Retrieval report problem. Contact your Customer Support
Centre2.5 Message StatusThe message status is returned in field 431 of
non-delivery warnings, undelivered message reports, andretrieved
messages.01 Delivered
02 Rejected by destinee
04 Aborted
FIN
10 Error Codes
-
07 No delivery attempt
08 One or more unsuccessful attempts
10 Message not delivered (that is no delivery history) for one
of the following reasons:Message negatively acknowledged on input
Message is Login, Select, Quit or Logout Request
Message was sent in local test mode (not deliverable)
Message is MT 097 (processed directly by Slice Processor and
never delivered to anylogical terminal, and so does not have a
delivery history)12 Intercepted
29 Message held for approval prior to Bypass mode and
aborted31 Authorised by the copy service or Sanctions Screening over
SWIFT service subscriber anddelivered32 Not authorised by the copy service or Sanctions Screening
over SWIFT service subscriber andaborted by the system33 Copy message is aborted and not delivered to the copy
service34 Authorised by the copy service or Sanctions Screening over
SWIFT service subscriber butaborted by the system35 Not yet authorised/refused by the copy service or Sanctions
Screening over SWIFT servicesubscriber37 Authorised by the copy service or Sanctions Screening over
SWIFT service subscriber but nodelivery attempted38 Authorised by the copy service or Sanctions Screening over
SWIFT service subscriber but oneor more unsuccessful delivery
attempts41 Copy service bypassed and message delivered
44 Copy service bypassed but message aborted by the system
47 Copy service bypassed but no delivery attempted
48 Copy service bypassed but one or more unsuccessful delivery
attempts49 Refused by central institution. Abort notification MT 019
contains an alphanumeric abort codeChapter 2 Numeric Codes
22 July 2011 11
-
50-99 These codes are specific to each FINCopy service. Contact
your respective service provider forthe meaning of each code within
the range 50-99.For Euro Banking Association (EBA) Processing, only the
following codes are used:70 Refusal from the Clearing Computer, and delivery aborted; the
Sender of thepayment message should also receive an MT 998 / SMT
n75 Error Message fromthe Clearing Computer giving further reasons
for the refusal.71 Refusal from the Clearing Computer because of a message
format error thatprevented normal processing, and delivery
aborted.99 System error
2.6 Abort ReasonsThe following codes are returned in field 432
of abort notifications and, for the FINCopy service,
MessageRefusals:01 Message too old (remained undelivered for n days)
02 Too many unsuccessful delivery attempts
03 Destination disabled
04 Operator aborted
05 Message could not be recovered after a major system failure
because it was user encrypted06 Message type incompatible with computer-based terminal
mode11 Message is too old, but was authorised
12 Too many delivery attempts, but message was authorised
13 Destination is disabled, but message was authorised
14 Message is too long, but was authorised
21 Message is too old and was bypassed
22 Too many delivery attempts and the message was bypassed
23 Destination is disabled and the message was bypassed
24 Message is too long and was bypassed
FIN
12 Error Codes
-
Note:
29 Message held for approval prior to Bypass mode and
aborted32 Message is too old and was not authorised
33 Copy message to the copy service server was aborted
35 FINCopy service parameter(s) incorrectly defined in FIN
50-ZZ 99 is pre-defined as ‘system error’.All other alphanumeric
codes (combination of 0-9 and A-Z) are specific to each
FINCopyservice. Contact your respective service provider for the
meaning of each code.Code S1 is used by the Sanctions screening service to indicate
that the message has beenaborted on request of the subscribing
user.All undefined numeric codes are reserved for use by FIN.
2.7 FIN and General Purpose Application Session TerminationThe
following codes are returned in field 443 of Service Message 14
(for further details see the FIN SystemMessages):000 Normal termination
001 Application Control or Logical Terminal Control has
aborted002 Application Control or Logical Terminal Control has
terminated normally004 System timed out message output reference ACK
006 QUIT or LOGOUT received while outstanding input messages
007 Input message/Service message after reception of a QUIT or
LOGOUT008 Input window violation (more outstanding input messages than
window size)009 System timed out on association establishment
010 Reception of a SELECT from a logical terminal that already
has a FIN session011 Association establishment request failed authentication
014 Message output reference ACK Basic Header error
015 Too many messages input in a session. Maximum is 500000.
Chapter 2 Numeric Codes
22 July 2011 13
-
016 Too many messages output in a session. Maximum is
500000.020 Message output reference ACK from wrong synonym
025 As for 052 but due to receipt of a Re-Login Request, rather
than a Login Request051 As for 052 but on a different Regional Processor
052 Reception of a login from a logical terminal for which the
system has already processed a logintransmitted over a different
Logical Terminal Control on the same Regional Processor.
Theexisting session is aborted and the new session established.053 SELECT with bad text block
054 AP ABORT REQUEST with bad text block
2.8 Report ErrorsThe following codes are returned in field 461
of Delivery Subset Status Reports, Undelivered MessageReports, and
Undelivered SSI Update Notification Reports:001 Empty report
002 End of undelivered report
003 System undergoing major recovery or system not completely
synchronised yet004 Too many undelivered messages
005 User on fall back Regional Processor, cannot generate
report006 The message referenced in the request could not be
found.007 Invalid destination for report. The sender of the request
must be the same as the sender of themessage referenced in the
request.008 No MTs 671 were found for the referenced MT 670.
009 Requesting logical terminal in invalid state
016 Branch code is not «XXX’
099 System internal problems, contact your Customer Support
CentreFIN
14 Error Codes
-
2.9 Bulk Retrieval Errors CodesThe following codes are returned
in field 144 of Bulk Retrieval Responses (MT 025):03 Retrieval only partially complete
11 Invalid
12 Invalid
13 Invalid retrieval time range
14 Retrieval aborted due to system error
15 Retrieval aborted due to communication error
16 Retrieval aborted by SWIFT
19 Retrieval completeThe text of messages that were sent to the
retrieving BIC more than 124 days ago cannot beretrieved. If those
messages were received by the retrieving BIC less than 124 days
ago, the filecontains the message output reference of the history
and the message input reference of thetext.20 Retrieval aborted due to system error (Test and Training
destination — attempt to use tape)21 Retrieval aborted due to system error (FIN/FIN Bridge key
error)22 Retrieval aborted due to system error (missing master
BIC)Chapter 2 Numeric Codes
22 July 2011 15
-
Note:
Note:
Chapter 3 Alphanumeric Codes
3.1 GeneralThis chapter contains the codes for the following
error types:Code Error Type Code Error Type
A Abort at Application Interface Level Errors R
Re-login/Re-select ErrorsA Re-select Errors S System-initiated Abort Errors
B Copy Service Errors S Select Errors
C Dialout Errors T Text validation (Block 4) Errors
C, Dand E
Conditional Semantic Errors U User Header Validation Errors
G Service-specific Validation Errors U User Abort Errors
H Basic Header and Application HeaderValidation Errors
V System Message or Message BlockFormat Errors
K Code Words Errors in Generic Fields X Delayed NAK Errors and
FINCopyService Message RefusalsL LOGIN Errors Y User Negative Acknowledgement Errors
M Message Errors Z Trailer Validation Errors
P Protocol Errors
Similar error codes are used by other SWIFT services, such as
Accord, or Processing forEuro Banking Association (EBA), and can
have different meanings. The error codes used byeach of the
services are described in the respective service documentation.3.2 A Codes — Re-select Error CodesA56 Re-select NAK error code
(in field tag 503) to indicate that the logical terminal is not in
arecoverable state. The computer-based terminal should execute a
fresh select procedure.3.3 B Codes — Copy Service ErrorsSimilar error codes are used by
other SWIFT services, such as Accord, or Processing forEuro Banking Association (EBA), and can have different meanings.
The error codes used byeach of the services are described in the
respective service documentation.B01 Message contains Value-Added Service server id but sender or
receiver, or both, are notmembers of the service.B02 Available.
FIN
16 Error Codes
-
B03 103:TPS is present in the message but the sender is not a
member of TPS, or the message isnot allowed for TPS.B04 Available.
B05 Either a system error has occurred, in which case, the user
should contact its local CustomerSupport Centre for further
information or it was not possible to generate a copy message
asnone of the fields to be copied were present in the original
message.3.4 C, D, and E Codes — Conditional Semantic Error CodesNote
Where a natural language expression would be too difficult to
synthesise or too long, amatrix is provided. The row and column
headers identify the elements involved (forexample, field tags,
code words, letter options). Matrices should be read from left
toright and from top to bottom. The following abbreviations are
used:M = Mandatory (must be present)
O = Optional (may be present)
U = Unauthorised (must not be present)
Y = Yes (is present)
N = No (is not present)
NA = Not applicable
3.4.1 C Error Codes
C00 Not used.
C01 MTs 102, 102+, 104, and 107If field 19 is present in
sequence C, then it must equal the sum of the amounts in all
occurrencesof field 32B in sequence B.MTs 201, 203, 204, and 559The amount in field 19 must equal the
sum of the amounts in all occurrences of field 32B or 34A.MT 256If field 19 is present in sequence C, then it must equal
the sum of the amounts in all occurrencesof field 32J in sequence
B.MT 824Field 19 at the completion of each outer repetitive
sequence must equal the sum of the productsof subfields 1 and 3 in
all occurrences of field 68A from its respective inner
repetitivesequence(s).Chapter 3 Alphanumeric Codes
22 July 2011 17
-
C02 The currency code must be the same for all occurrences of
indicated fields in the entiremessage. See the SWIFT Standards
Category volumes for the indicated fields in eachmessage.Examples:
The following list explains how Error code C02 is applied in
specific message types:MT 321. The currency code in the amount fields (fields 19A in
sequence B) must be thesame for all occurrences of this field in
the message.MTs 320 and 330. The currency code in the amount fields, except
for fields 33B and 33E insequence G, must be the same for all
occurrences of these fields in the message.MT 350. The currency code in the amount fields 32B and 34B in
sequence B must be thesame.Special Cases:
The following MTs apply Error code C02 in an exceptional manner
(for example, either based onthe presence of another field OR
individually to separate groups of fields within the MT):MTs 103 and 103+. If field 71G is present, the currency code in
the fields 71G and 32Amust be the same.MTs 104 and 107. The currency code in fields 32B and 71 G in
sequences B and C must bethe same for all occurrences of these
fields in the message. The currency code in field 71Fin sequences B
and C must be the same for all occurrences of this field in the
message.MT 320. The currency codes in the amount fields 32B, 32H, and
34E in sequence B, andfield 71F in sequence H, must be the
same.MT 620. If field 32H is present, then the currency code must be
the same as the currencycode in field 32B.C03 The number of decimal digits in the amount component is
checked against the maximumallowed for the corresponding currency.
This check is mostly applied to fields containing boththe amount
and the currency code components.Examples:
field 32A in MT 103, and in MT 256, sequence C
field 32B in MTs 104 and 107, sequences B and C
This check also applies, among others, to:
field 19 in MTs 102, 104, 107, 201, 203, 204, and 559 where the
corresponding currency isthe one used in field 32B or 34Afield 19 in MT 824 where the corresponding currency is the one
used in correspondingoccurrences of field 68Afield 32J in sequence B, and to field 19 in sequence C, in MT
256 where the correspondingcurrency is the one used in field
32Afield 33B in MT 103, and in MTs 104 and 107, sequence B
field 71F in MT 103, and in MTs 104 and 107, sequences B and
Cfield 71G in MT 103, and in MTs 104 and 107, sequences B and
Cfield 72 Reject/Return in MT 103, and in MTs 104 and 107,
sequence AFIN
18 Error Codes
-
Note:
Note:
Error code C03 should be applied only to field 68A in MT 824 if
subfield 5 ispresent.C04 MTs 503, 504, and 506In sequence B, if field :19B::TEXA is
not present, then field :19B::TCRL is mandatory; otherwisefield
:19B::TCRL is optional.Sequence B
If field :19B::TEXA is … Then field :19B::TCRL is …
Not present Mandatory
Present Optional
C05 Identifier Code must be a financial institution BIC. This
error code applies to all types of BICsreferenced in a FIN message,
including SWIFT BICs, Non-SWIFT BICs, Masters, Synonyms,Live
destinations and Test & Training destinations.See the table below for the list of MTs affected.
MT Field Sequence(s) Qualifier Comments
52A A, B
56A B
101
57A B
52A A, B
53A C
54A C
102
57A B
The same validation applies to thegeneric MT 102 without tag
119,and the MT 102+52A
53A
54A
55A
56A
103
57A
The same validation applies to thegeneric MT 103 without tag
119,and other variants, such as the MT103 REMIT and the MT 103+52A A, B
53A C
104
57A B
The same validation applies to thegeneric MT 104 without tag
119,and the MT 104 RFDDFor sequence C, seeError code C96.
52A A, B
53A C
107
57A B
Chapter 3 Alphanumeric Codes
22 July 2011 19
-
MT Field Sequence(s) Qualifier Comments
52A
53A
110
54A
111,112
52A
56A200,201
57A
52A
53A
54A
56A
57A
202,203
58A
52A A
53A A
54A A
56A A
57A A
58A A
52A B
56A B
202COV
57A B
53A B
57A A
204
58A A
52A
53A
56A
57A
205
58A
FIN
20 Error Codes
-
MT Field Sequence(s) Qualifier Comments
52A A
53A A
56A A
57A A
58A A
52A B
56A B
205COV
57A B
51A A
52A A
52G A
56A B
57A B
207
58A B
52A210
56A
256 57A C
53AJ B1, B2, D
56AJ B1, B2, D
300
57AJ B1, B2, D
53AJ D1, D2, D3
56AJ D1, D2, D3
303
57AJ D1, D2, D3
53AJ B, E
56AJ B, E
304
57AJ B, E
53A
56A
305
57A
Chapter 3 Alphanumeric Codes
22 July 2011 21
-
MT Field Sequence(s) Qualifier Comments
53AJ C, E, J
56AJ C, E, J
57AJ C, E, J
84AJ B
306
86AJ C, E, J
95P B3a CDEA INTE ACCW307
95P D1 CDEA INTE ACCW
53AJ C, D, E, F, I
56AJ C, D, E, F, I
57AJ C, D, E, F, I
320
86AJ C, D, E, F, I
321 95P C1 CDEA INT2 INTEACCW
53AJ C, D, E, F
56AJ C, D, E, F
57AJ C, D, E, F
330
86AJ C, D, E, F
53AJ C, D, F
56AJ C, D, F
57AJ C, D, F
340
86AJ C, D, F
53AJ C
56AJ C
57AJ C
341,350
86AJ C
53A D, G, L, M
56A D, G, L, M
57A D, G, L, M
360
86A D, G, L, M
FIN
22 Error Codes
-
MT Field Sequence(s) Qualifier Comments
53A D, G, J, K, L,M
56A D, G, J, K, L,M
57A D, G, J, K, L,M
361
86A D, G, J, K, L,M
53A C, E
56A C, E
57A C, E
362
86A C, E
53A L, M
56A L, M
57A L, M
364
86A L, M
53A J, K, L, M
56A J, K, L, M
57A J, K, L, M
365
86A J, K, L, M
52A
53A
54A
57A
400
58A
416 53A A
450,455,456
52A
502 95P C2 ACCW PAYE
504 95P C2a1, E1 ACCW PAYE
505 95P B2a1, D1 ACCW PAYE
507 95P B1b1 ACCW PAYE
513 95P D2 ACCW PAYE
514 95P C2 ACCW PAYE
Chapter 3 Alphanumeric Codes
22 July 2011 23
-
MT Field Sequence(s) Qualifier Comments
515 95P D2 ACCW PAYE
516 57A B
518 95P C2 ACCW PAYE
540,541,542,543,544,545,546,547
95P E2 ACCW PAYE
559 57A
566 95P D2a ACCW
578 95P E2 ACCW PAYE
53A B
56A B, C
57A B, C
86A B, C
600
87A B, C
53A
56A
601
57A
56A
86A
604
87A
86A605
87A
606 87A
607 87A
53AJ C, D, E, F
56AJ C, D, E, F
57AJ C, D, E, F
620
86AJ C, D, E, F
643 57A B, C
644 57A B
646 57A C
FIN
24 Error Codes
-
MT Field Sequence(s) Qualifier Comments
670 95P B1 ACCW INT1 INT2
41A
42A
51A
53A
700
57A
41A705
57A
707 52A
41A
42A
51A
52A
53A
710
57A
41A
42A
52A
720
57A
730,734
57A
41A
42A
740
58A
52A
57A
742
58A
750 57A
53A752
54A
53A
57A
754
58A
Chapter 3 Alphanumeric Codes
22 July 2011 25
-
MT Field Sequence(s) Qualifier Comments
53A756
54A
768,769
57A
51A
52A
53A
800
54A
801 51A
52A
53A
802
54A
824 51A
900 52A
52A910
56A
985 57A
n90 52A
52An91
57A
C06 MT 210Either field 50a or field 52a, but not both, must be
present in a repetitive sequence.MTs 710 and 720Either field 52a or field 50B, but not both, must
be present.If field 52a is … Then field 50B is …
Present Not allowed
Not present Mandatory
MT 910Either field 50a or field 52a, but not both, must be
present.C07 MT 516Either field 35A or 35N must be present.
C08 Available.
FIN
26 Error Codes
-
C09 MT 430In each occurrence of sequence A, if field 33a is
present, then field 32a must be present.C10 MT 422At least one of the fields 72, 75 or 76 must be
present.C11 MT 400If field 57a is present, fields 53a and 54a must be
present.C12 MTs 707 and 747When field 32B or 33B is present, field 34B
must be present. Conversely, when field 34B ispresent, either field
32B or field 33B must be present.C13 MT 750If any of fields 33B, 71B or 73 is present, field 34B
must be present.C14 MTs 559 and 754Either field 53a or 57a, but not both, may be
present.C15 MT 747At least one of the fields 31E, 32B, 33B, 34B, 39A,
39B, 39C, 72 or 77A must be present.C16 MT 707If field 23 is present, field 52a must be present.
C17 MT 734If field 73 is present, field 33a must be present.
C18 MT 752If fields 32B and 71B are present, field 33a must be
present.C19 MT 754Either field 72 or field 77A, but not both, may be
present.C20 MT 601Field 53a may be present only if field 34P is
present.C21 MT 506If sequence C is not present, then sequence D is
mandatory. If one or more occurrence ofsequence C is/are present,
then sequence D is optional.If sequence C is … Then sequence D is …
Not present Mandatory
Chapter 3 Alphanumeric Codes
22 July 2011 27
-
Note:
If sequence C is … Then sequence D is …
Present (once or more) Optional
C22 MT 920If field 12 contains 942, field 34F must be present in
the same repetitive sequence.C23 MTs 920 and 942When only one field 34F is present, subfield
2 must not be used. When both fields 34F arepresent, subfield 2 of
the first 34F must contain D, and subfield 2 of the second 34F
mustcontain C.In MT 920, this applies to each repetitive sequence.
C24 MT 940If field 86 is present in any occurrence of the
repetitive sequence, it must be preceded by a field61.C25 MT n92Field 79 or a copy of at least any fields of the
original message or both must be present.If field 79 is … Then copy of any field(s) of originalmessage
is …Present Optional
Not present Mandatory (that is, minimum one field, anyfield)
SWIFT does not validate the relationship between the copied
fields and theoriginal message, hence, any valid field is correct.
The system will negativelyacknowledge the MT n92 with Error code
C25 if there is no more field after field11S.C26 MT 430At least one of the optional fields 32a or 74 must be
present.C27 MTs 940, 941, 942, 950, 970, and 972The first two characters
of the three-character currency code in fields 60F, 60M, 62F, 62M,
64,65, 90C and 90D, in MTs 940, 941, 942, 950, 970 and 972, and
field 34F in MT 942 must be thesame for all occurrences of these
fields.C28 MT 541, 543, 578A value date must only be provided for
cash/securities split settlement. That is, in anyoccurrence of
subsequence E3, if value date field :98a::VALU is present, then in
sequence Efield :22F::STCO//SPST must be present, and settlement
amount field :19A::SETT must bepresent in the same subsequence
E3.FIN
28 Error Codes
-
Note:
Note:
In any occurrence ofsubsequence E3
if field :98a::VALU is …
Sequence Ethen field
:22F::STCO//SPST (withDSS not present)
In the same occurrence ofsubsequence E3
and field :19A::SETT is …
Present Mandatory Mandatory
Not present Optional Optional
MT 544, 545, 546, 547A value date must only be provided with an
effective settlement amount, that is, in anyoccurrence of
subsequence E3, if value date field :98a::VALU is present, then
settled amountfield :19A::ESTT must be present in the same
subsequence.Subsequence E3if field :98a::VALU is …
Subsequence E3then field :19A::ESTT is …
Present Mandatory
Not present Optional
MTs 544, 545, 546, and 547, see Network Validated Rule 287
(Error codeE87).MTs 545 and 547, see Network Validated Rule 292 (Error code
E92).MT 586A value date must only be provided for cash/securities
split settlement. That is, in anyoccurrence of subsequence B5b, if
value date field :98a::VALU is present, then in subsequenceB5 field
:22F::STCO//SPST must be present, and settlement amount field
:19A::SETT must bepresent in the same subsequence B5b.In any occurrence ofsubsequence B5b
if field :98a::VALU is …
Subsequence B5then field
:22F::STCO//SPST (withDSS not present) is …
In the same occurrence ofsubsequence B5b
and field :19A::SETT is …
Present Mandatory Mandatory
Not present Optional Optional
C29 Available.
C30 MT 707At least one of the fields 31E, 32B, 33B, 34B, 39A,
39B, 39C, 44A, 44E, 44F, 44B, 44C, 44D, 79or 72 must be
present.C31 MTs n95 and n96Either field 79 or a ‘copy of any field(s) of
the original message to which this message relates’,but not both,
may be present.SWIFT does not validate the relationship between the copied
fields and theoriginal message; hence any valid fields other than
79 are accepted.Chapter 3 Alphanumeric Codes
22 July 2011 29
-
C32 MTs 300, 303, 304, 306, 320, 330, 340, 350, 360, 361, 362,
364, 365, 600, 620, and 643An optional sequence of fields was used.
However, a field that is required (that is, indicated byan ‘OR’) or
a field that is mandatory (that is, indicated by ‘Mandatory in
…’) within this sequenceis missing.C33 MTs 768 and 769If field 71B is present, field 32a must be
present.C34 MT 769Either field 33B or 39C, but not both, must be
present.C35 MTs 643, 644, 646, and 649Either field 21 or 29B must be
present.C36 MTs 643 and 646Subfield 2 () of field 31F must be present in
each occurrence of sequence B.C37 MT 577Subfield 2 () of field 67A must not be present.
C38 Available.
C39 Available.
C40 MT 920The currency code must be the same for each occurrence
of the indicated fields within eachrepetitive sequence.C41 Available.
C42 MT 824The currency code in each of the fields 68A of a
sequence of fields 68A preceding a field 19must be the same.C43 MT 646Either field 32N or 33N must be present.
C44 MT 646If fields 32N and 33N are present in sequence C, field
34a must be present in sequence C.C45 MT 646If field 23 contains REPRINC or PREPRINC, field 32N
must be present in sequence C.FIN
30 Error Codes
-
C46 MT 646If field 23 contains INT, field 33N must be present in
sequence C.C47 MT 643If field 23 contains LOAN/DRAWDOWN or FINARR/DRAWDOWN,
sequence B must not bepresent.C48 MT 643If field 23 contains LOAN/RENEWAL or FINARR/RENEWAL,
sequence B must be present.C49 MT 456If field 71B is present, the values in fields 32a and
33D must be different.C50 MTs 540, 541, 542, and 543If field 36B is present in minimum
one occurrence of sequence A1, then the type of
settlementtransaction must be a pair-off or a turn-around, that is,
sequence E field :22F::SETR//PAIR or:22F::SETR//TURN must be
present.In sequence A1if field :36B: is …
Then in sequence Efield :22F::SETR must be …
Present :22F::SETR//PAIR and DSS must not
bepresentor:22F::SETR//TURN and DSS must not bepresentNot present NA
C51 MT 643If field 23 contains LOAN/DRAWDOWN or LOAN/RENEWAL,
field 31R must be present.C52 Available.
C53 MT 643If field 71C is present in any sequence B, field 34a
must be present in the same sequence.C54 MT 644Either field 36 or field 37(A-F) must be present in
any sequence B.C55 MT 644In any sequence B, the currency code in fields 33B and
34a must be the same.C56 Available.
Chapter 3 Alphanumeric Codes
22 July 2011 31
-
C57 MT 646If field 34N is present in any sequence B, field 31F
in the same sequence B and field 33N insequence C must be
present.C58 MT 300In field 77D of sequence A, if the code /VALD/ is
present, then it must appear in the first 6characters of the first
line and in no other place, and it must be followed by a date
expressed asYYYYMMDD and the «end_of_line» separator, that is,
«:77D:/VALD/»YYYMMDD»CrLf».See rule 59.
MT 304In field 72 of sequence C, if the code /VALD/ is present,
then it must appear in the first 6characters of the first line and
in no other place, and it must be followed by a date expressed
asYYYYMMDD and the «end_of_line» separator, that is
«:72:/VALD/»YYYMMDD»CrLf».See rule 59.
MT 646If field 34N is present in any sequence B, the total
amount given in field 33N must equal the totalamount of all
occurrences of field 34N amounts in sequence B.C59 MT 300In sequence A, if field 77D is present and if the
first six (6) characters of the first line are equal to/VALD/, then
the second line must be present and it must contain «/SETC/» in the
first 6characters, followed by a valid ISO 4217 currency code and
the end of line separator, that is,»/SETC/»»CrLf».Conversely, in sequence A, if field 77D is present, and the
second line is present, and the firstsix (6) characters of the
second line are equal to /SETC/, then the first six (6) characters
of thefirst line must be equal to /VALD/.The code «/SETC/» is not allowed in other places than the first
6 characters of the second line.See rule 58.
MT 304In sequence C, if field 72 is present, and the first six
(6) characters of the second line are equalto /SETC/, then the
first six (6) characters of the first line must be equal to /VALD/
and /SETC/must be followed by a valid ISO 4217 currency code and
the end of line separator, that is,»/SETC/»»CrLf».The code «/SETC/» is not allowed in other places than the first
6 characters of the second line.See rule 58.
MT 321In sequence B, the presence of field 19A and of the Next
Interest Due Date (field :98A::INTR)depends on the Type of
Loan/Deposit Event (field :22H::TLDE) in sequence A as follows:In sequenceA
if field:22H::TLDE
Indicatoris …
Sequence Bthen field
:98A::INTRis …
Sequence Band field
:19A::SETTis …
Sequence Band field
:19A::RODIis …
Sequence Band field
:19A::CINTis …
SequenceB
and field:19A::NINT
is …
CONF Mandatory Not allowed Not allowed Not allowed Mandatory
ROLL Mandatory Mandatory Optional Optional Mandatory
FIN
32 Error Codes
-
In sequenceA
if field:22H::TLDE
Indicatoris …
Sequence Bthen field
:98A::INTRis …
Sequence Band field
:19A::SETTis …
Sequence Band field
:19A::RODIis …
Sequence Band field
:19A::CINTis …
SequenceB
and field:19A::NINT
is …
MATU Not allowed Mandatory Not allowed Optional Not allowed
MT 800The amounts in fields 34B and 32A must be the same.
C60 MT 307In sequence A, the presence of field :22H::APER and
the presence of field :22H::NEGR dependon the field :22H::CRTR as
follows:In sequence Aif field :22H::CRTR Indicator
is …
Sequence Athen field :22H::APER is …
Sequence Aand field :22H::NEGR is …
ASET Not allowed Optional
AFWD Mandatory Mandatory
MT 321In sequence A, the presence of field :99B:: depends on the
presence of field :22H::BLOC asfollows:In sequence Aif field :22H::BLOC is …
Sequence Athen field :99B:: is …
Present Mandatory
Not present Not allowed
MT 643In each sequence B, the currency code in fields 32P, 33a
and 34a must be the same.C61 MT 307In sequence A, the presence of field :22H::PAFI
depends on field :22H::APER as follows:In sequence Aif field :22H::APER
Indicator is …
Sequence Athen field :22H::PAFI is …
OPEF Not allowed
NOPE Mandatory
Field :22H::APER not present Not allowed
MT 321In sequence B, the presence of field :98A::LDFP depends on
the value of field :22H::TLDE asfollows:Chapter 3 Alphanumeric Codes
22 July 2011 33
-
In sequence Aif field :22H::TLDE
Indicator is …
Sequence Bthen field :98A::LDFP
is …
MATU Not allowed
Not MATU Optional
MT 643In each sequence C, the currency code in fields 32B and
33B must be the same.C62 MT 307The presence of sequence C depends on field :22H::APER
as follows:In sequence Aif field :22H::APER
Indicator is …
Thensequence C
is …
OPEF Not allowed
NOPE Mandatory
Field :22H::APER not present Not allowed
MT 321In sequence B, the presence of field :99B::DAAC depends on
the presence of field :98A::LDFPas follows:In sequence Bif field :98A::LDFP
is …
Sequence Bthen field :99B::DAAC
is …
Present Mandatory
Not present Not allowed
C63 MT 307In sequence A, the presence of the qualifier UNKN in
field :22H::NEGR//UNKN depends on thecontent of field :22H::CRTR,
of field :22H::APER and of field :22H::PAFI as follows:In sequence Aif field :22H::
is …
Then field:22H::NEGR//UNKN
is …
CRTR//ASET Not allowed
CRTR//AFWD and APER//OPEF Optional
CRTR//AFWD and APER//NOPE andPAFI//PAIN
Optional
CRTR//AFWD and APER//NOPE andPAFI//FINA
Not allowed
MT 321In sequence A, if field 99B is present, then all
qualifiers must be present.FIN
34 Error Codes
-
C64 MT 307The presence of sequence D depends on the value of
field 22H as follows:In sequence A
If field:22H::CRTR
is …
And field:22H::APER
is …
And field:22H::PAFI
is …
And field:22H::NEGR
is …
Thensequence D
is …
ASET NA per rule 60 NA per rule 61 NETC Optional
ASET NA per rule 60 NA per rule 61 GRSC Not allowed
ASET NA per rule 60 NA per rule 61 Not present Not allowed
AFWD OPEF NA per rule 61 NETC or GRSCor UNKN
Not allowed
AFWD NOPE PAIN NETC or GRSCor UNKN
Not allowed
AFWD NOPE FINA NETC Mandatory
AFWD NOPE FINA GRSC Not allowed
C65 MT 567If the message is a cancellation request status
(:23G::CAST), then, in every occurrence ofsequence A2 Status, a
cancellation processing status must be reported
(:25D::CPRC…).If the message is an instruction status (:23G::INST) then, in
every occurrence of sequence A2Status, an instruction processing
status (:25D::IPRC…) must be reported.If the message is corporate action event processing status
(:23G::EVST), then, in everyoccurrence of sequence A2 Status, an
event status (:25D::EPRC…) must be reported.In sequence Aif field 23G is …
Then, in every occurrence of sequence A2Status,
field :25D must be …
CAST :25D::CPRC…
INST :25D::IPRC…
EVST :25D::EPRC…
C66 MT 643The number of occurrences of sequence C must be equal
to or greater than the number ofoccurrences of sequence B.C67 MT 516In sequence A, either field 83C or 87a but not both,
may be present.C68 MTs 202 COV and 205 COVIn sequence B, if field 56a is
present, then field 57a must also be present.Chapter 3 Alphanumeric Codes
22 July 2011 35
-
Note:
C69 MT 507In each occurrence of sequence B, if present, if
subsequence B1 is present, the presence ofsubsequences B1a and B1b
depends on the value of field :22H::COLL in sequence B
asfollows:In each occurrence of sequence B
If subsequence B1is …
And in sequence Bfield
:22H::COLL//Statusis …
Then subsequenceB1a is …
And subsequenceB1b is …
CCOL Not allowed Mandatory
SCOL Mandatory Not allowed
Present
BCOL(NA see Error code
C70)
NA NA
Not present NA NA NA
Rule C70 takes precedence over rule C69.
C70 MT 507In each occurrence of sequence B, the presence of
subsequence B1 depends on the value offields :25D::COLL// and
:22H::COLL// as follows:In each occurrence of sequence B
If field :25D::COLL/[8c]/4!c Data Source
Scheme [8c] is …
And field:25D::COLL/[8c]/4!c
is …
And field:22H::COLL//4!c is …
Then subsequenceB1 is …
:25D::COLL//ACCT BCOL Not allowed
:25D::COLL//ACCT CCOL Mandatory [1]
:25D::COLL//ACCT SCOL Mandatory [1]
Not present
:25D::COLL//REJT NA Not allowed
BCOL Not allowed
CCOL Optional [1]
Present NA
SCOL Optional [1]
[1] See Error code C69 for additional checks. Rule C70 takes
precedence over rule C69.C71 MT 535In each occurrence of subsequence B1, field 93B::AGGR
cannot appear more than twice(maximum 2 occurrences). When
repeated, one occurrence must have Quantity Type CodeFAMT and the
other occurrence must have Quantity Type Code AMOR.FIN
36 Error Codes
-
Subsequence B1if field :93B::AGGR is …
Then one occurrence of:93B:AGGR must be …
And the other occurrenceof :93B::AGGR must be …
Repeated :93B::AGGR//FAMT and DSSmust not be present
:93B::AGGR//AMOR andDSS must not be present
Not repeated NA NA
MT 536In each occurrence of subsequence B1a2, field 36B::PSTA
cannot appear more than twice(maximum 2 occurrences). When
repeated, one occurrence must have Quantity Type CodeFAMT and the
other occurrence must have Quantity Type Code AMOR.Subsequence B1a2if field :36B::PSTA is …
Then one occurrence of:36B::PSTA must be …
And the other occurrenceof :36B::PSTA must be …
Repeated :36B::PSTA//FAMT :36B::PSTA//AMOR
Not repeated NA NA
MT 537In each occurrence of subsequence B2b, field 36B::PSTA
cannot appear more than twice(maximum 2 occurrences). When
repeated, one occurrence must have Quantity Type CodeFAMT and the
other occurrence must have Quantity Type Code AMOR.Subsequence B2bif field :36B::PSTA is …
Then one occurrence of:36B::PSTA must be …
And the other occurrenceof :36B::PSTA must be …
Repeated :36B::PSTA//FAMT :36B::PSTA//AMOR
Not repeated NA NA
MTs 540, 541, 542, and 543In sequence C, field 36B::SETT cannot
appear more than twice (maximum 2 occurrences).When repeated, one
occurrence must have Quantity Type Code FAMT and the
otheroccurrence must have Quantity Type Code AMOR.Sequence Cif field :36B::SETT is …
Then one occurrence of:36B::SETT must be …
And the other occurrenceof :36B::SETT must be …
Repeated :36B::SETT//FAMT :36B::SETT//AMOR
Not repeated NA NA
MTs 544, 545, 546, and 547In sequence C, field 36B::ESTT cannot
appear more than twice (maximum 2 occurrences).When repeated, one
occurrence must have Quantity Type Code FAMT and the
otheroccurrence must have Quantity Type Code AMOR.Sequence Cif field :36B::SETT is …
Then one occurrence of:36B::ESTT must be …
And the other occurrenceof :36B::ESTT must be …
Repeated :36B::ESTT//FAMT :36B::ESTT//AMOR
Not repeated NA NA
MT 548In sequence. B, field 36B::SETT cannot appear more than
twice (maximum 2 occurrences).When repeated, one occurrence must
have Quantity Type Code FAMT and the otheroccurrence must have
Quantity Type Code AMOR.Chapter 3 Alphanumeric Codes
22 July 2011 37
-
Sequence Bif field :36B::SETT is …
Then one occurrence of:36B::SETT must be …
And the other occurrenceof :36B::SETT must be …
Repeated :36B::SETT//FAMT :36B::SETT//AMOR
Not repeated NA NA
MT 564In each occurrence of subsequence B2, field 93B::ELIG
cannot appear more than twice(maximum 2 occurrences). When
repeated, one occurrence must have Quantity Type CodeFAMT and the
other occurrence must have Quantity Type Code AMOR.Subsequence B2if field :93B::ELIG is …
Then one occurrence of:93B:ELIG must be …
And the other occurrenceof :93B::ELIG must be …
Repeated :93B::ELIG//FAMT and DSSmust not be present
:93B::ELIG//AMOR and DSSmust not be present
Not repeated NA NA
MT 565In subsequence B2, field 93B::ELIG cannot appear more than
twice (maximum 2 occurrences).When repeated, one occurrence must
have Quantity Type Code FAMT and the otheroccurrence must have
Quantity Type Code AMOR.Subsequence B2if field :93B::ELIG is …
Then one occurrence of:93B::ELIG must be …
And the other occurrenceof :93B::ELIG must be …
Repeated :93B::ELIG//FAMT and DSSmust not be present
:93B::ELIG//AMOR and DSSmust not be present
Not repeated NA NA
MT 566In sequence B, field 93B::ELIG cannot appear more than
twice (maximum 2 occurrences).When repeated, one occurrence must
have Quantity Type Code FAMT and the otheroccurrence must have
Quantity Type Code AMOR.Sequence Bif field :93B::ELIG is …
Then one occurrence of:93B:ELIG must be …
And the other occurrenceof :93B::ELIG must be …
Repeated :93B::ELIG//FAMT and DSSmust not be present
:93B::ELIG//AMOR and DSSmust not be present
Not repeated NA NA
MT 567In sequence B, field 36B::STAQ or QREC cannot appear more
than twice (maximum 2occurrences). When repeated, one occurrence
must have Quantity Type Code FAMT and theother occurrence must have
Quantity Type Code AMOR.Sequence Bif field :36B::STAQ or QREC
is …
Then one occurrence of:36B:STAQ or QREC must
be …
And the other occurrenceof :36B::STAQ or QRECmust be …
:36B::STAQ//FAMT or :36B::STAQ//AMORRepeated
:36B::QREC//FAMT :36B::QREC//AMOR
Not repeated NA NA
FIN
38 Error Codes
-
MT 568In sequence B, field 93B::ELIG cannot appear more than
twice (maximum 2 occurrences).When repeated, one occurrence must
have Quantity Type Code FAMT and the otheroccurrence must have
Quantity Type Code AMOR.Sequence Bif field :93B::ELIG is …
Then one occurrence of:93B:ELIG must be …
And the other occurrenceof :93B::ELIG must be …
Repeated :93B::ELIG//FAMT and DSSmust not be present
:93B::ELIG//AMOR and DSSmust not be present
Not repeated NA NA
MT 707If field 79 is present, it cannot appear more than twice
(maximum 2 occurrences).C72 MT 537In each occurrence of subsequence C2, field 36B::PSTA
cannot appear more than twice(maximum 2 occurrences). When
repeated, one occurrence must have Quantity Type CodeFAMT and the
other occurrence must have Quantity Type Code AMOR.Subsequence C2if field :36B::PSTA is …
Then one occurrence of:36B::PSTA must be …
And the other occurrenceof :36B::PSTA must be …
Repeated :36B::PSTA//FAMT :36B::PSTA//AMOR
Not repeated NA NA
MT 564In each occurrence of subsequence E1, field 36B::ENTL
cannot appear more than twice(maximum 2 occurrences). When
repeated, one occurrence must have Quantity Type CodeFAMT and the
other occurrence must have Quantity Type Code AMOR.Subsequence E1if field :36B::ENTL is …
Then one occurrence of:36B::ENTL must be …
And the other occurrenceof :36B::ENTL must be …
Repeated :36B::ENTL//FAMT :36B::ENTL//AMOR
Not repeated NA NA
MT 565In sequence. D, field 36B::QINS or QREC cannot appear more
than twice (maximum 2occurrences). When repeated, one occurrence
must have Quantity Type Code FAMT and theother occurrence must have
Quantity Type Code AMOR. When used with format option C,
thequalifiers QINS and QREC cannot be repeated.Sequenceif field :36B::QINS or QREC
is …
Then one occurrence of:36B::QINS or QREC must
be …
And the other occurrenceof :36B::QINS or QRECmust be …
:36B::QINS//FAMT :36B::QINS//AMORRepeated
:36B::QREC//FAMT :36B::QREC//FAMT
Not repeated NA NA
Chapter 3 Alphanumeric Codes
22 July 2011 39
-
Note: Therefore the only valid repetitions are:
:36B::QINS//FAMT
:36B::QINS//AMOR
or
:36B::QREC//FAMT
:36B::QREC//AMOR
MT 566In each occurrence of subsequence D1, field 36B::PSTA
cannot appear more than twice(maximum 2 occurrences). When
repeated, one occurrence must have Quantity Type CodeFAMT and the
other occurrence must have Quantity Type Code AMOR.Subsequence D1if field :36B::PSTA is …
Then one occurrence of:36B::PSTA must be …
And the other occurrenceof :36B::PSTA must be …
Repeated :36B::PSTA//FAMT :36B::PSTA//AMOR
Not repeated NA NA
C73 MT 536A reference to the previously received message must be
specified for each transaction reported,that is, in each occurrence
of subsequence B1a Transaction, field 20C::RELA must be presentin
one and only one occurrence of subsequence B1a1 Linkages; field
20C::RELA is not allowedin all other occurrences of subsequence
B1a1.MT 537A reference to the previously received message must be
specified for each transaction reported,that is, in each occurrence
of subsequence B2 Transaction, field 20C::RELA must be present
inone and only one occurrence of subsequence B2a Linkages; field
20C::RELA is not allowed inall other occurrences of subsequence
B2a.MTs 544, 545, 546, 547, and 548A reference to the previously
received message must be specified, that is, field 20C::RELA mustbe
present in one and only one occurrence of subsequence A1 Linkages;
field 20C::RELA is notallowed in all other occurrences of
subsequence A1.C74 MT 537A reference to the previously received message must be
specified for each transaction reported,that is, in each occurrence
of sequence C Transaction, field 20C::RELA must be present in
oneand only one occurrence of subsequence C1 Linkages; field
20C::RELA is not allowed in allother occurrences of subsequence
C1.C75 MT 104The presence of field 23E in sequence B, depends on
the presence and content of field 23E insequence A as follows:If field 23E is present in sequence A and contains RFDD, then
field 23E must be present inall occurrences of sequence B.If field 23E is present in sequence A and does not contain RFDD,
then field 23E must notbe present in any occurrence of sequence
B.FIN
40 Error Codes
-
Note:
If field 23E is not present in sequence A, then field 23E must
be present in all occurrencesof sequence B.Sequence Aif field 23E is …
Sequence Bif field 23E is …
Present and = RFDD Mandatory in all occurrences
Present and not = RFDD Not allowed
Not present Mandatory in all occurrences
See Error codes C94 and C96.
C76 MT 104Field 50a (option A or K) must be present either in
sequence A or in each occurrence ofsequence B, but must never be
present in both sequences, nor absent from both sequences.Sequence Aif field 50a (option A or K) is …
In every occurrence of sequence B,then field 50 (option A or K)
is …Present Not allowed
Not present Mandatory
C77 MTs 730, 768, and 769Either field 25 or field 57a, but not
both, may be present.C78 MTs 730, 768, and 769Either field 32D or field 57a, but not
both, may be present.C79 MTs 305 and 601Field 31C may be present only if subfield 3
of field 23 contains A.C80 MT 608The commodity code must be the same for all
occurrences of the indicated fields in the entiremessage.C81 MTs 103, 103+, 202, 202 COV (sequence A), 203, 205, and 205
COV (sequence A)If field 56a is present, then field 57a must also
be present.C82 MTs 104 and 107In sequence A, if field 23E is present and
contains RTND, then field 72 must be present. In allother cases
(that is field 23E is not present, or field 23E does not contain
RTND), field 72 is notallowed.Sequence A
If field 23E is … Then field 72 is …
Present and = RTND Mandatory
Present and not = RTND Not allowed
Chapter 3 Alphanumeric Codes
22 July 2011 41
-
Sequence A
If field 23E is … Then field 72 is …
Not present Not allowed
C83 MT 935Either field 23 or field 25, but not both, must be
present in any repetitive sequence.C84 MT 303In sequence A, the presence of field 21 depends on
field 22A as follows:Sequence A
If field 22A is … Then field 21 is …
AMNA Mandatory
AMND Mandatory
CANC Mandatory
DUPL Optional
NEWT Optional
C85 MT 609Field 68B must be present when the immediately
preceding field 23 contains SPOTS orFORWARDS.C86 MT 609Field 68C must be present when the immediately
preceding field 23 contains OPTIONS.C87 Available.
C88 MT 305The currency code in subfield 4 of field 23 must be
the same as the currency code in field 32B.C89 MTs 600, 601, 604, 605, 606, 607, 608, and 609A maximum of 6
decimal digits is permitted in the following: field 32F in MTs 600,
601, 604, 605,606 and 607; fields 60F, 60M, 61, 62F, 62M, 64 and 65
in MT 608; and subfield 6 of fields 68Band 68C in MT 609.MT 620A maximum of 6 decimal digits is permitted in the
subfields «amount» of sequence B: field 32F,index 18, field 32R,
index 19, field 34J, index 21, and of sequence G: field 33J, index
52, andfield 33J, index 54.C90 MTs 700, 710, 720, and 740If field 42a is used, the only
combinations that are allowed are field 42M (on its own) or field
42P(on its own) or both fields 42C and 42(A or D).FIN
42 Error Codes
-
Note:
Note:
C91 MT 608Subfield 4 of field 61 must not be present.
C92 MT 303Sequences B and C are mutually exclusive. Field 94A in
sequence A specifies which type oftransaction is allocated and thus
which one of the two sequences must be present:Sequence Aif field 94A is …
Then sequence B is … Then sequence C is …
FORX Mandatory Not allowed
FXOP Not allowed Mandatory
C93 MT 600Either sequence B or C, but not both, must be
present.C94 MT 104If field 23E in sequence A is present and contains
RFDD, then field 119 of the User Headermust be present and contain
RFDD. If field 23E in sequence A is not present or does not
containRFDD, then field 119 of the User Header must not be
present.Sequence Aif field 23E is …
User Headerthen field 119 is …
Present and = RFDD Mandatory and must contain RFDD
Present and not = RFDD Not allowed
Not present Not allowed
This error code takes precedence over Error codes C75 and
C96.MTs 503, 504, 505, 506, and 507The User Header is mandatory and
must contain a field 119 with a valid code that is identical tothat
contained in subfield 2 of field :22a::COLA//4!c in sequence A.The rule 94 must be applied even if the DSS is present in field
:22F::COLA.C95 MT 303In sequence C, the presence of field 30X depends on
field 23B as follows:Sequence C
If field 23B is … Then field 30X is …
CLAM or PTAM Mandatory
CLEU or PTEU Not allowed
C96 MT 104If field 23E is present in sequence A and contains
RFDD, then:field 21R in sequence A is optional
fields 21E, 50a (option A or K), 52a, 71F and 71G must not be
present in sequence BChapter 3 Alphanumeric Codes
22 July 2011 43
-
Note:
Note:
sequence C must not be present
Otherwise, that is in sequence A, field 23E does not contain
RFDD or field 23E is not present:in sequence A, field 21R must not be present
and in sequence B, the fields 21E, 50a (option A or K), 52a, 71F
and 71G are optionaland sequence C must be present
Sequence A Sequence B
If field 23E is … Then field 21R is … And fields 21E,
50a(option A or K), 52a,71F and 71G are …And sequence C is…
Present and = RFDD Optional Not allowed Not allowed
Present and not =RFDD
Not allowed Optional Mandatory
Not present Not allowed Optional Mandatory
1. See Error codes D75, C94 and D80.
2. Error code C96 takes precedence over Error code D80.
C97 MT 303The presence of sequence D depends on the value of
field 22A in sequence A as follows:Sequence Aif field 22A is …
Then sequence D is …
AMNA, AMND, DUPL or NEWT Mandatory
CANC Optional
MT 504The presence of sequence D is mandatory when in any
occurrence of sequence C,subsequence C1 is present and subsequence
C1a is not present:In sequence(s) C Then sequence D is …
If in one or more occurrence(s) of sequenceC:subsequence C1 is
present andan internal subsequence C1a is not presentMandatory
See Error code D49.MT 505The presence of sequence C is mandatory
when in any occurrence of sequence B,subsequence B1 is present and
subsequence B1a is not present:In sequence(s) B Then sequence C is …
If in one or more occurrence(s) of sequenceB:subsequence B1 is
present andan internal subsequence B1a is not presentMandatory
FIN
44 Error Codes
-
Note:
Note:
Note:
See Error code D49.
C98 MTs 306, 320, 330 , 340, and 620In a sequence, field 15a may
not be the only field, that is if field 15a is present, then at
least oneother field in the sequence must be present.The following lists the sequences per message type:
Message type Sequence
306 I
320, 330 H
340 E
620 H
C99 MT 303In each occurrence of sequence D, the presence of
subsequence D3 depends on field 94A ofsequence A as follows:Sequence Aif field 94A is …
Then subsequence D3 is …
FORX Not allowed
FXOP Mandatory
MT 504Sequence E is mandatory when in any occurrence of sequence
C, subsequence C2 is presentand subsequence C2a is not present.In sequence(s) C Then sequence E is …
If in one or more occurrence(s) of sequenceC:subsequence C2 is
present and an internalsubsequence C2a is not presentMandatory
See Error code D50.MT 505Sequence D is mandatory when in any
occurrence of sequence B, subsequence B2 is presentand subsequence
B2a is not present.In sequence(s) B Then sequence D is …
If in one or more occurrence(s) of sequenceB:subsequence B2 is
present and an internalsubsequence B2a is not presentMandatory
See Error code D50.
Chapter 3 Alphanumeric Codes
22 July 2011 45
-
3.4.2 D Error CodesNote
Similar error codes are used by other SWIFT services, such as
Accord, or Processingfor Euro Banking Association (EBA), and can
have different meanings. The error codesused by each of the
services are described in the respective service documentation.D00 Not used.
D01 MT 303If subfield 1 of field 39P contains CURR, the number
of decimal digits in subfield 3 is checkedagainst the maximum
allowed for the corresponding currency in subfield 2.D02 MTs 304, 360, 361, 362, 364, and 365In sequence A, the
presence of field 21 depends on field 22A as follows:Sequence A
If field 22A is … Then field 21 is …
AMND Mandatory
CANC Mandatory
DUPL Optional
NEWT Optional
MTs 306 and 340In sequence A, the presence of field 21 depends
on field 22A as follows:Sequence A
If field 22A is … Then field 21 is …
AMND Mandatory
CANC Mandatory
NEWT Optional
MT 341In sequence A, the presence of field 21 depends on field
22A as follows:Sequence A
If field 22A is … Then field 21 is …
AMND Mandatory
CANC Mandatory
SETT Optional
FIN
46 Error Codes
-
Note:
Note:
MT 350In sequence A, if field 22A contains ADVC, then field 21
is optional; otherwise field 21 ismandatory:Sequence A
If field 22A is … Then field 21 is …
ADVC Optional
Not = ADVC Mandatory
D03 MT 304In sequence A, the presence of fields 17O and 17N
depend on field 94A as follows:Sequence A
If field 94A is … Then field 17O is … Then field 17N is
…ASET Not allowed Not allowed
AFWD Mandatory Mandatory
See also Error codes D04 and D29.MT 535If field :94a:: is
present in sequence B, then fields :93B::AGGR and :94a::SAFE are
not allowedin any occurrence of subsequence B1b:Sequence Bif field :94a: is …
Then in any occurrence(s) of subsequenceB1b, field :93B::AGGR
and field:94a::SAFE are …
Present Not allowed
Not present Optional
D04 MT 304In sequence A, the presence of field 17F depends on
field 17O as follows:Sequence A
If field 17O is … Then field 17F is …
Y Not allowed
N Mandatory
Not present Not allowed
See also Error codes D03 and D29.MT 535If field :93B::AGGR is
present in subsequence B1b, then :field 94a::SAFE must be present
in thesame subsequence B1b:Sequence B1bif field :93B::AGGR is …
Then in same subsequence B1b,field :94a::SAFE is …
Present Mandatory
Not present Optional
Chapter 3 Alphanumeric Codes
22 July 2011 47
-
D05 MT 535In each occurrence of subsequence B1b, if field
:93B::AVAI or/and :93B::NAVL is/are present,then :field :93B::AGGR
must be present in the same occurrence of subsequence B1b.MTs 700, 705, 707, 710, 720, 740, and 747Either field 39A or
field 39B, but not both, may be present.D06 MTs 700, 705, 707, 710, and 720Either field 44C or 44D but
not both, may be present.D07 Available.
D08 MT 670In subsequence A2, either field :95P::SSIR or field
:94C::SSIR or field :22H::SSIR must bepresent:Subsequence A2if field :95P::SSIR is …
Subsequence A2then field :94C::SSIR is …
Subsequence A2 then field:22H::SSIR is …
Present Not allowed Not allowed
Present Not allowedNot present
Not present Mandatory
D09 MT 670In sequence A, field :95P::SUBM must specify the same
BIC as the Sender in the basic header.If the branch code of the
Sender’s BIC is XXX, then the branch code is not required in
field:95P::SUBM. If the branch code of the Sender’s BIC is not XXX,
then the branch code in field:95P::SUBM must be the same. If the
branch code of :95P:SUBM is present, then the branchcode of the
Sender’s BIC must be the same.In addition, if the Sender’s BIC is a Test and Training BIC then
it’s owning master’s registeredBIC with or without a branch code
could also be specified in field :95P::SUBM Submitting Party.D10 Available.
D11 MT 670In each occurrence of sequence B, if subsequence B1
contains field :95a::INT2 then :95a::INT1must be present in another
subsequence B1:Within each occurrence of sequence Bin subsequence B1
if field :95a::INT1 is …
In the same occurrence of sequence Bthen in another subsequence
B1field :95a::INT2 is …
Present Optional
Not present Not allowed
D12 MT 670In each occurrence of sequence B, in subsequence B1,
field :95P::BENM or :95Q::BENM or:95R::BENM must be present. All
three may be present but once only.FIN
48 Error Codes
-
D13 MTs 380 and 381In sequence C, fields 16R and 16S may not be
the only fields present. If both fields 16R and16S are present,
then at least one of the other fields of the sequence C must be
present.MTs 503, 504, and 506In subsequence B1, fields 16R and 16S may
not be the only fields present. If both fields 16Rand 16S are
present, then at least one other field of the same subsequence must
be present.MT 670In subsequence B2, fields 16R and 16S may not be the only
fields present. If both fields 16Rand 16S are present, then at
least one of the other fields of the same subsequence B2 must
bepresent.In sequence C, fields 16R and 16S may not be the only fields
present. If both fields 16R and16S are present, then at least one
of the other fields of the sequence C must be present.D14 MT 670In subsequence A2, if field :95P::SSIR is not present,
then in subsequence B2 and sequence C,field :22F:PMTH must not be
present. In sequence C, field :22F::PMTH is only allowed
whensubsequence B2, field :22F::PMTH is not present:Subsequence A2if field is …:95P::SSIR
Subsequence B2then field :22F::PMTH is …
Sequence Cthen field :22F::PMTH is …
Present Present Not allowed
Present Not present Optional
Not present Not allowed Not allowed
D15 MT 670In each occurrence of subsequence B1, fields
:95P::ACCW, :95Q::ACCW and :95R::ACCW mayall be present but once
only.In each occurrence of subsequence B1, fields :95P::INT1,
:95Q::INT1 and :95R::INT1 may all bepresent but once only.In each occurrence of subsequence B1, fields :95P::INT2,
:95Q::INT2 and :95R::INT2 may all bepresent but once only.D16 MT 306The presence of subsequence B1 and of sequence C
depends on the values of Type of Event(subfield 1 of field 22K) in
sequence A as follows:Sequence Aif subfield 1 of field 22K is
…
Then subsequence B1is …
And sequence Cis …
CLST Optional Optional
CONF Mandatory Mandatory
KNIN Not allowed Not allowed
KNOT Not allowed Not allowed
OTHR Optional Optional
TRIG Not allowed Not allowed
Chapter 3 Alphanumeric Codes
22 July 2011 49
-
D17 MTs 102 and 102+Field 50a must be present either in sequence
A or in each occurrence of sequence B, but itmust never be present
in both sequences, nor be absent from both sequences.D18 MT 102 (not 102+)If a field 52a, 26T or 77B is present in
sequence A, then that field must not be present in anyoccurrence of
sequence B. When a field 52a, 26T or 77B is present in any
occurrences ofsequence B, that field must not be present in
sequence A.Sequence Aif field 52a is …
In each occurrence ofsequence B
then field 52a is …
Present Not allowed
Not present Optional
Sequence Aif field 26T is …
In each occurrence ofsequence B
then field 26T is …
Present Not allowed
Not present Optional
Sequence Aif field 77B is …
In each occurrence ofsequence B
then field 77B is …
Present Not allowed
Not present Optional
MT 102+If a field 52A, 26T or 77B is present in sequence A, then
that field must not be present in anyoccurrence of sequence B. When
a field 52A, 26T or 77B is in any occurrence of sequence B,that
field must not be present in sequence A.Sequence Aif field 52A is …
In each occurrence ofsequence B
then field 52A is …
Present Not allowed
Not present Optional
Sequence Aif field 26T is …
In each occurrence ofsequence B
then field 26T is …
Present Not allowed
Not present Optional
Sequence Aif field 77B is …
In each occurrence ofsequence B
then field 77B is …
Present Not allowed
FIN
50 Error Codes
-
Note:
Sequence Aif field 77B is …
In each occurrence ofsequence B
then field 77B is …
Not present Optional
D19 MT 102+If in the transaction headers the country codes of
both the Sender’s and Receiver’s BIC arepresent in the list D19_CC
(see note 2), then in each occurrence of sequence B the
followingapply:If field 57A is not present, then the IBAN format (ISO-13616,
see note 1) is mandatory insubfield_1 Account of field 59a in this
occurrence of sequence B.If field 57A is present and the country code of the BIC in 57A
(note) is present in the listD19_CC, then the IBAN format is
mandatory in subfield_1 Account of field 59a in thisoccurrence of
sequence B.In all other cases, the presence of the IBAN format is optional
and its format is not validated insubfield_1 Account of field
59a.1. format special validation.
2. D19_CC list of country codes : AD, AT, BE, BG, BV, CH, CY,
CZ, DE, DK, EE,ES, FI, FR, GB, GF, GI, GP, GR, HU, IE, IS, IT, LI,
LT, LU, LV, MC, MQ, MT,NL, NO, PL, PM, PT, RE, RO, SE, SI, SJ, SK,
SM, TF and VA.In transaction headers, In each occurrence of sequence B,
If country codeof Emitter’s BIC
present inD19_CC
And countrycode of
Receiver’s BICpresent inD19_CC
And field 57Apresent in this
occurrenceof sequence B
And countrycode
of field 57Ais present in
D19_CC
Then in thisoccurrence ofsequence B
in field 59a the
format insubfield_1
Account is …
Yes Yes No NA Mandatory
Yes No No NA Optional
No Yes No NA Optional
No No No NA Optional
Yes Yes Yes Yes Mandatory
Yes No Yes Yes Optional
No Yes Yes Yes Optional
No No Yes Yes Optional
Yes Yes Yes No Optional
Yes No Yes No Optional
No Yes Yes No Optional
No No Yes No Optional
Chapter 3 Alphanumeric Codes
22 July 2011 51
-
Note:
Note:
Note:
This validation rule applies to all types of BICs that are
referenced in field57A: SWIFT BIC, NON-SWIFT BIC, Master, Synonym,
LIVE destination, Test andTraining destination.MT 103+If in the transaction headers the country codes of both
the Sender’s and Receiver’s BIC arepresent in the list D19_CC (see
note 2), then in each occurrence of sequence B the
followingapply:If field 57A is not present, then the IBAN format (ISO-13616,
see note 1) is mandatory insubfield_1 Account of field 59aIf field 57A is present and the country code of the BIC in 57A
(note) is present in the listD19_CC, then the IBAN format is
mandatory in subfield_1 Account of field 59aIn all other cases, the presence of the IBAN format is optional
and its format is not validated insubfield_1 Account of field
59a.1. format special validation.
2. D19_CC list of country codes : AD, AT, BE, BG, BV, CH, CY,
CZ, DE, DK, EE,ES, FI, FR, GB, GF, GI, GP, GR, HU, IE, IS, IT, LI,
LT, LU, LV, MC, MQ, MT,NL, NO, PL, PM, PT, RE, RO, SE, SI, SJ, SK,
SM, TF and VA.In transaction headers,
If country codeof Emitter’s BIC
present inD19_CC
and countrycode of
Receiver’s BICpresent inD19_CC
and field 57Apresent
and countrycode
of field 57Ais present in
D19_CC
then in field 59athe
format insubfield_1
Account is …
Yes Yes No NA Mandatory
Yes No No NA Optional
No Yes No NA Optional
No No No NA Optional
Yes Yes Yes Yes Mandatory
Yes No Yes Yes Optional
No Yes Yes Yes Optional
No No Yes Yes Optional
Yes Yes Yes No Optional
Yes No Yes No Optional
No Yes Yes No Optional
No No Yes No Optional
This validation rule applies to all types of BICs that are
referenced in field57A: SWIFT BIC, NON-SWIFT BIC, Master, Synonym,
LIVE destination, Test andTraining destination.FIN
52 Error Codes
-
Note:
D20 MTs 102 and 102+Field 71A must be present either in sequence
A or in each occurrence of sequence B, but itmust never be present
in both sequences, nor be absent from both sequences.This error code takes precedence over Error codes D50, E13 and
E15.D21 MTs 104 and 107In each occurrence of sequence B, if field
33B is present, then the currency code or the amount,or both, must
be different between fields 33B and 32B.D22 MT 102 and 102+Field 36 (sequence A or sequence B) must be
present in the message if there is any sequenceB which contains a
field 33B with a currency code different from the currency code in
field 32B;in all other cases field 36 is not allowed in the
message.When a field 36 (sequence A or sequence B) is required, EITHER
field 36 must be present insequence A and not in any sequence B, OR
it must be present in every sequence B whichcontains fields 32B and
33B with different currency codes and must not be present in
sequenceA or any other sequence B.In sequence A In sequence B
If field 36 is present Then in minimum one occurrence ofsequence
B field 33B must be present,and currency codes in fields 32B and
33Bmust be different.And field 36 is notallowed in anyoccurrence ofsequence B
In sequence A In each occurrence of sequence B
If field 33B is … And currency codesin fields 32B and
33B are …
Then field 36 is …
Equal Not allowedPresent
Not equal Mandatory
If field 36 is notpresent
Not present NA Not allowed
D23 MT 304The presence of sequence D depends on field 17O as
follows:Sequence Aif field 17O is …
Then sequence D is …
Y Not allowed
N Mandatory
Not present Not allowed
D24 MT 306In sequence A, if field 12F contains VANI, then at
least field 17A or field 17F must contain Y.Both fields may contain
Y.Chapter 3 Alphanumeric Codes
22 July 2011 53
-
Sequence A
If field 12F is … And field 17A is … And field 17F is …
Then thiscombination ofcodes is …
VANI N N Not allowed
VANI N Y Allowed
VANI Y N Allowed
VANI Y Y Allowed
Not = VANI NA NA Allowed
D25 Available.
D26 MT 306In sequence A, the values allowed for field 12E depend
on the value of field 12F as follows:Sequence A
If field 12F is … Then the allowed values for field 12E are
…BINA AMER, EURO
DIGI EURO
NOTO EURO
VANI AMER, BERM, EURO
D27 MT 306In sequence A, the allowed values for subfield 1 of
field 22K depend on fields 12F and 17A asfollows:Sequence A
If field 12F is … And field 17A is … Then the allowed values
forsubfield 1 of field 22K are …VANI N CONF, CLST, OTHR
VANI Y CONF, CLST, KNIN, KNOT,OTHR
Not = VANI N CONF, CLST, TRIG, OTHR
Not = VANI Y CONF, CLST, KNIN, KNOT,TRIG, OTHR
FIN
54 Error Codes
-
Note:
D28 MT 306In sequence A, the presence of fields 30U and 29H
depends on the value of subfield 1 of field22K as follows:Sequence A
If subfield 1 of field 22K is…
Then field 30U is … And field 29H is …
CONF or CLST Not allowed Not allowed
Any other value Mandatory Optional
D29 MT 304The presence of sequence E depends on fields 17F and
17N as follows:Sequence A
If field 17F is … And field 17N is …Then sequence E is
…Y Y Mandatory
Y N Not allowed
Y Not present Not allowed (this case is already
negativelyacknowledged, see Error codes D03 andD04)N Y or N Not allowed
N Not present Not allowed (this case is already
negativelyacknowledged, see Error codes D03 andD04)Not present Y or N Not allowed
Not present Not present Not allowed
See also Error codes D03 and D04.MT 507The presence of sequence
B depends on the value of field :25D::4!c// in sequence Aand the
value of field :13A::Link// in subsequence A2 as follows:Chapter 3 Alphanumeric Codes
22 July 2011 55
-
Note:
Sequence A
If field:25D::4!c/[8c]/4!c Qualifier is
…
And field:25D::REST/[8c]/4!c Data
SourceScheme [8c] is
…
And field:25D::REST/[8c]/
4!c is …
SubsequenceA2
and field:13A::LINK//3!c
is …Then sequence
B is …
:25D::REST//ACCP 503 Optional
:25D::REST//ACCT 503 Optional
:25D::REST//ACCP 504 Mandatory
:25D::REST//ACCT 504 Mandatory
:25D::REST//ACCP 505 Optional
:25D::REST//ACCT 505 Optional
:25D::REST//SUBR NA Optional
Not present
:25D::REST//REJT NA Not allowed
REST
Present NA NA Optional
CPRC NA NA NA Not allowed
IPRC NA NA NA Not allowed
See Error code D52.MT 567If the message is an instruction status
or a cancellation request status (:23G:INST or CAST),AND sequence B
is present, then sequence B should contain a CA option number and
code(:13A::CAON and :22a::CAOP are mandatory).In sequence Aif field :23G:
is …
and sequence B is…
then sequence B,field :13A::CAON is
…
and sequence B,field :22a::CAOP is
…
Present Mandatory MandatoryINST or CAST
Not present NA NA
EVST NA NA NA
D30 MT 306The presence of sequences D and G depends on the value
of field 12F in sequence A asfollows:Sequence Aif field 12F is …
Then sequence D is … And sequence G is …
VANI Mandatory Not allowed
Not = VANI Not allowed Mandatory
FIN
56 Error Codes
-
D31 MT 306If sequence D is present, that is if field 12F in
sequence A contains VANI (see Error code D30),then the presence of
fields 30P and 30Q depends on the value of field 12E in sequence A
asfollows:Sequence A Sequence D
If field 12E is … And field 12E is … Then field 30P is …
And field 30Q is …
Обработка ошибок
Обработка ошибок — это процесс реагирования на возникновение ошибок и восстановление после появления ошибок в программе. Swift предоставляет первоклассную поддержку при генерации, вылавливании и переносе ошибок, устранении ошибок во время выполнения программы.
Некоторые операции не всегда гарантируют полное выполнение или конечный результат. Опционалы используются для обозначения отсутствия значения, но когда случается сбой, важно понять, что вызвало сбой, для того, чтобы соответствующим образом изменить код.
В качестве примера, рассмотрим задачу считывания и обработки данных из файла на диске. Задача может провалиться по нескольким причинам, в том числе: файл не существует по указанному пути, или файл не имеет разрешение на чтение, или файл не закодирован в необходимом формате. Отличительные особенности этих различных ситуаций позволяют программе решать некоторые ошибки самостоятельно и сообщать пользователю какие ошибки она не может решить сама.
Отображение и генерация ошибок
В Swift ошибки отображаются значениями типов, которые соответствуют протоколу Error. Этот пустой протокол является индикатором того, что это перечисление может быть использовано для обработки ошибок.
Перечисления в Swift особенно хорошо подходят для группировки схожих между собой условий возникновения ошибок и соответствующих им значений, что позволяет получить дополнительную информацию о природе самой ошибки. Например, вот как отображаются условия ошибки работы торгового автомата внутри игры:
enum VendingMachineError: Error {
case invalidSelection
case insufficientFunds(coinsNeeded: Int)
case outOfStock
}
Генерация ошибки позволяет указать, что произошло что-то неожиданное и обычное выполнение программы не может продолжаться. Для того чтобы «сгенерировать» ошибку, вы используете инструкцию throw. Например, следующий код генерирует ошибку, указывая, что пять дополнительных монет нужны торговому автомату:
throw VendingMachineError.insufficientFunds(coinsNeeded: 5)
Обработка ошибок
Когда генерируется ошибка, то фрагмент кода, окружающий ошибку, должен быть ответственным за ее обработку: например, он должен исправить ее, или испробовать альтернативный подход, или просто информировать пользователя о неудачном исполнении кода.
В Swift существует четыре способа обработки ошибок. Вы можете передать (propagate) ошибку из функции в код, который вызывает саму эту функцию, обработать ошибку, используя инструкцию do-catch, обработать ошибку, как значение опционала, или можно поставить утверждение, что ошибка в данном случае исключена. Каждый вариант будет рассмотрен далее.
Когда функция генерирует ошибку, последовательность выполнения вашей программы меняется, поэтому важно сразу обнаружить место в коде, которое может генерировать ошибки. Для того, чтобы выяснить где именно это происходит, напишите ключевое слово try — или варианты try? или try!— до куска кода, вызывающего функцию, метод или инициализатор, который может генерировать ошибку. Эти ключевые слова описываются в следующем параграфе.
Заметка
Обработка ошибок в Swift напоминает обработку исключений (exceptions) в других языках, с использованием ключевых слов try, catch и throw. В отличие от обработки исключений во многих языках, в том числе и в Objective-C- обработка ошибок в Swift не включает разворачивание стека вызовов, то есть процесса, который может быть дорогим в вычислительном отношении. Таким образом, производительные характеристики инструкции throw сопоставимы с характеристиками оператора return.
Передача ошибки с помощью генерирующей функции
Чтобы указать, что функция, метод или инициализатор могут генерировать ошибку, вам нужно написать ключевое слово throws в реализации функции после ее параметров. Функция, отмеченная throws называется генерирующей функцией. Если у функции установлен возвращаемый тип, то вы пишете ключевое слово throws перед стрелкой возврата (->).
func canThrowErrors() throws -> String
func cannotThrowErrors() -> String
Генерирующая функция передает ошибки, которые возникают внутри нее в область вызова этой функции.
Заметка
Только генерирующая ошибку функция может передавать ошибки. Любые ошибки, сгенерированные внутри non-throwing функции, должны быть обработаны внутри самой функции.
В приведенном ниже примере VendingMachine класс имеет vend(itemNamed: ) метод, который генерирует соответствующую VendingMachineError, если запрошенный элемент недоступен, его нет в наличии, или имеет стоимость, превышающую текущий депозит:
struct Item {
var price: Int
var count: Int
}
class VendingMachine {
var inventory = [
"Candy Bar": Item(price: 12, count: 7),
"Chips": Item(price: 10, count: 4),
"Pretzels": Item(price: 7, count: 11)
]
var coinsDeposited = 0
func vend(itemNamed name: String) throws {
guard let item = inventory[name] else {
throw VendingMachineError.invalidSelection
}
guard item.count > 0 else {
throw VendingMachineError.outOfStock
}
guard item.price <= coinsDeposited else {
throw VendingMachineError.insufficientFunds(coinsNeeded: item.price - coinsDeposited)
}
coinsDeposited -= item.price
var newItem = item
newItem.count -= 1
inventory[name] = newItem
print("Dispensing (name)")
}
}
Реализация vend(itemNamed: ) метода использует оператор guard для раннего выхода из метода и генерации соответствующих ошибок, если какое-либо требование для приобретения закуски не будет выполнено. Потому что инструкция throw мгновенно изменяет управление программой, и выбранная позиция будет куплена, только если все эти требования будут выполнены.
Поскольку vend(itemNamed: ) метод передает все ошибки, которые он генерирует, вызывающему его коду, то они должны быть обработаны напрямую, используя оператор do-catch, try? или try!, или должны быть переданы дальше. Например, buyFavoriteSnack(person:vendingMachine: ) в примере ниже — это тоже генерирующая функция, и любые ошибки, которые генерирует метод vend(itemNamed: ), будут переноситься до точки, где будет вызываться функция buyFavoriteSnack(person:vendingMachine: ).
let favoriteSnacks = [
"Alice": "Chips",
"Bob": "Licorice",
"Eve": "Pretzels"
]
func buyFavoriteSnack(person: String, vendingMachine: VendingMachine) throws {
let snackName = favoriteSnacks[person] ?? "Candy Bar"
try vendingMachine.vend(itemNamed: snackName)
}
В этом примере, функция buyFavoriteSnack(person:vendingMachine: ) подбирает любимые закуски данного человека и пытается их купить, вызывая vend(itemNamed: ) метод. Поскольку метод vend(itemNamed: ) может сгенерировать ошибку, он вызывается с ключевым словом try перед ним.
Генерирующие ошибку инициализаторы могут распространять ошибки таким же образом, как генерирующие ошибку функции. Например, инициализатор структуры PurchasedSnack в списке ниже вызывает генерирующую ошибку функции как часть процесса инициализации, и он обрабатывает любые ошибки, с которыми сталкивается, путем распространения их до вызывающего его объекта.
struct PurchasedSnack {
let name: String
init(name: String, vendingMachine: VendingMachine) throws {
try vendingMachine.vend(itemNamed: name)
self.name = name
}
}
Обработка ошибок с использованием do-catch
Используйте инструкцию do-catch для обработки ошибок, запуская блок кода. Если выдается ошибка в коде условия do, она соотносится с условием catch для определения того, кто именно сможет обработать ошибку.
Вот общий вид условия do-catch:
do {
try выражение
выражение
} catch шаблон 1 {
выражение
} catch шаблон 2 where условие {
выражение
} catch шаблон 3, шаблон 4 where условие {
выражение
} catch {
выражение
}
Вы пишете шаблон после ключевого слова catch, чтобы указать какие ошибки могут обрабатываться данным пунктом этого обработчика. Если условие catch не имеет своего шаблона, то оно подходит под любые ошибки и связывает ошибки к локальной константе error. Более подробно о соответствии шаблону см. Шаблоны.
Например, следующий код обрабатывает все три случая в перечислении VendingMachineError, но все другие ошибки должны быть обработаны окружающей областью:
var vendingMachine = VendingMachine()
vendingMachine.coinsDeposited = 8
do {
try buyFavoriteSnack(person: "Alice", vendingMachine: vendingMachine)
} catch VendingMachineError.invalidSelection {
print("Ошибка выбора.")
} catch VendingMachineError.outOfStock {
print("Нет в наличии.")
} catch VendingMachineError.insufficientFunds(let coinsNeeded) {
print("Недостаточно средств. Пожалуйста вставьте еще (coinsNeeded) монетки.")
} catch {
print("Неожиданная ошибка: (error).")
}
// Выведет "Недостаточно средств. Пожалуйста вставьте еще 2 монетки.
В приведенном выше примере, buyFavoriteSnack(person:vendingMachine: ) функция вызывается в выражении try, потому что она может сгенерировать ошибку. Если генерируется ошибка, выполнение немедленно переносится в условия catch, которые принимают решение о продолжении передачи ошибки. Если ошибка не генерируется, остальные операторы do выполняются.
В условии catch не нужно обрабатывать все возможные ошибки, которые может вызвать код в условии do. Если ни одно из условий catch не обрабатывает ошибку, ошибка распространяется на окружающую область. Однако распространяемая ошибка должна обрабатываться некоторой внешней областью. В функции nonthrowing условие включения do-catch должно обрабатывать ошибку. В функции throwing либо включающая условие do-catch, либо вызывающая сторона должна обрабатывать ошибку. Если ошибка распространяется на область верхнего уровня без обработки, вы получите ошибку исполнения.
Например, приведенный ниже пример можно записать так, чтобы любая ошибка, которая не является VendingMachineError, вместо этого захватывалась вызывающей функцией:
func nourish(with item: String) throws {
do {
try vendingMachine.vend(itemNamed: item)
} catch is VendingMachineError {
print("Некорректный вывод, нет в наличии или недостаточно денег.")
}
}
do {
try nourish(with: "Beet-Flavored Chips")
} catch {
print("Unexpected non-vending-machine-related error: (error)")
}
// Выведет "Некорректный вывод, нет в наличии или недостаточно денег."
В nourish(with: ), если vend(itemNamed : ) выдает ошибку, которая является одним из кейсов перечисления VendingMachineError, nourish(with: ) обрабатывает ошибку, печатая сообщение. В противном случае, nourish(with: ) распространяет ошибку на свое место вызова. Ошибка затем попадает в общее условие catch.
Преобразование ошибок в опциональные значения
Вы можете использовать try? для обработки ошибки, преобразовав ее в опциональное значение. Если ошибка генерируется при условии try?, то значение выражения вычисляется как nil. Например, в следующем коде x и y имеют одинаковые значения и поведение:
func someThrowingFunction() throws -> Int {
// ...
}
let x = try? someThrowingFunction()
let y: Int?
do {
y = try someThrowingFunction()
} catch {
y = nil
}
Если someThrowingFunction() генерирует ошибку, значение x и y равно nil. В противном случае значение x и y — это возвращаемое значение функции. Обратите внимание, что x и y являются опциональными, независимо от того какой тип возвращает функция someThrowingFunction().
Использование try? позволяет написать краткий код обработки ошибок, если вы хотите обрабатывать все ошибки таким же образом. Например, следующий код использует несколько попыток для извлечения данных или возвращает nil, если попытки неудачные.
func fetchData() -> Data? {
if let data = try? fetchDataFromDisk() { return data }
if let data = try? fetchDataFromServer() { return data }
return nil
}
Запрет на передачу ошибок
Иногда вы знаете, что функции throw или методы не сгенерируют ошибку во время исполнения. В этих случаях, вы можете написать try! перед выражением для запрета передачи ошибки и завернуть вызов в утверждение того, что ошибка точно не будет сгенерирована. Если ошибка на самом деле сгенерирована, вы получите сообщение об ошибке исполнения.
Например, следующий код использует loadImage(atPath: ) функцию, которая загружает ресурс изображения по заданному пути или генерирует ошибку, если изображение не может быть загружено. В этом случае, поскольку изображение идет вместе с приложением, сообщение об ошибке не будет сгенерировано во время выполнения, поэтому целесообразно отключить передачу ошибки.
let photo = try! loadImage(atPath: "./Resources/John Appleseed.jpg")
Установка действий по очистке (Cleanup)
Вы используете оператор defer для выполнения набора инструкций перед тем как исполнение кода оставит текущий блок. Это позволяет сделать любую необходимую очистку, которая должна быть выполнена, независимо от того, как именно это произойдет — либо он покинет из-за сгенерированной ошибки или из-за оператора, такого как break или return. Например, вы можете использовать defer, чтобы удостовериться, что файл дескрипторов закрыт и выделенная память вручную освобождена.
Оператор defer откладывает выполнение, пока не происходит выход из текущей области. Этот оператор состоит из ключевого слова defer и выражений, которые должны быть выполнены позже. Отложенные выражения могут не содержать кода, изменяющего контроль исполнения изнутри наружу, при помощи таких операторов как break или return, или просто генерирующего ошибку. Отложенные действия выполняются в обратном порядке, как они указаны, то есть, код в первом операторе defer выполняется после кода второго, и так далее.
func processFile(filename: String) throws {
if exists(filename) {
let file = open(filename)
defer {
close(file)
}
while let line = try file.readline() {
// работаем с файлом.
}
// close(file) вызывается здесь, в конце зоны видимости.
}
}
Приведенный выше пример использует оператор defer, чтобы удостовериться, что функция open(_: ) имеет соответствующий вызов и для close(_: ).
Заметка
Вы можете использовать оператор defer, даже если не используете кода обработки ошибок.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
title | description | ms.custom | ms.date | ms.prod | ms.reviewer | ms.suite | ms.tgt_pltfrm | ms.topic | ms.assetid | caps.latest.revision | author | ms.author | manager |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SWIFT error codes in BizTalk Server | Microsoft Docs |
View the class and validation types for the SWIFT Accelerator in BizTalk Server |
08/16/2017 |
biztalk-server |
article |
03699986-965b-4a28-ab2e-09f110fb4db6 |
4 |
MandiOhlinger |
mandia |
anneta |
SWIFT defines many network-imposed validations against the set of financial (FIN) messages. Each validation relates to a type of check against the contents of the message, and is associated with a three-character error code. The first character of the error code implies the class of the problem detected, and is a letter. The remaining two characters denote the detail of the error (when combined with the class) and always appear as a two-digit code.
Class of errors
The following table lists the letter designations, validation type, rule change associated with each class of error, and whether or not the class of error is supported.
Class | Validation type and rule change | Supported? |
---|---|---|
C, D, E | Semantic validation rules 0-299 | Supported |
Knn | Invalid code word in field nn | Supported |
M50 | Message length exceeded | Unsupported |
M60 | Non-SWIFT character encountered | Supported |
T | Text validation error codes | Supported |
G | Specific error codes for message user group (MUG) Textval rules | Unsupported |
B | Special error codes for value-added services | Unsupported |
All SWIFT errors should be referenced in the SWIFT User Handbook. For more information and for a complete list of SWIFT error codes, refer to the Message Format Validation Rules volume of the SWIFT User Handbook. [!INCLUDEbtaA4SWIFT2.3abbrevnonumber] implements the rules in the September 2003 edition of this publication. You can access the SWIFT Web site at https://go.microsoft.com/fwlink/?LinkId=27885.
Validation errors
There are some codes which are defined by A4SWIFT. These error codes are used in the validation/network rules created and implemented by A4SWIFT, so there is no corresponding error code defined by SWIFT for such rules. Below table shows the error code and corresponding case in which the error is thrown. is the particular field which throws the error.
Error Code | Description |
---|---|
A4SWIFT001 | The first character of multiline field cannot be ‘:’ or ‘-‘ character for second and subsequent lines. |
A4SWIFT002 | Field contains invalid value. |
[!NOTE]
[!INCLUDEA4SWIFT_CurrentVersion_FirstRef] includes support for some legacy messages, because internal applications might use these messages. Therefore, A4SWIFT maintains the associated SWIFT rules and error codes.
More good info
Troubleshooting: Issues and Resolutions
Known Issues
Common terms and definitions