The acknowledge(ACK) or non-acknowledge(NAK) are service messages sent by the SWIFT interface to the user application to notify an outgoing message was accepted or not. The acceptance mainly depends on the message being standard compliant.
Note that receiving an ACK does not mean the message was effectively delivered to the receiver, it is just a notification indicating if the SWIFT interface accepted the message as valid and entered the message in the network.
ACK /NACK structure
The structure of a service message is similar to the structure of the regular user message, with a different service id and the block 4 composed of inner sub-blocks instead of fields in lines.
The following example is the basic structure of a an ACK message:
Field 451 in the system message indicates whether the message was acked (0) or nacked (1).
When NACK the field 405 will also contain a field indicating the error code talking about the reason for rejection .
Depending on the SWIFT interface, the file containing the notification can be different. However, in all cases it is composed of the service message plus some reference of the original message. This reference can be for the original message unique reference (MUR) or a full copy of the original message.
For Detailed Description of ack/nack in DOKA refer article ACK/NACK configuration in DOKA