swift_mt_message/messages/
mt111.rs

1use crate::fields::*;
2use serde::{Deserialize, Serialize};
3use swift_mt_message_macros::{SwiftMessage, serde_swift_fields};
4
5/// MT111: Stop Payment of a Cheque
6///
7/// ## Purpose
8/// Used to request the stop payment of a previously issued cheque from the account holder to their bank.
9/// This message provides precise identification of the cheque to be stopped and includes supporting information
10/// for immediate processing to prevent unauthorized or problematic cheque payments.
11///
12/// ## Scope
13/// This message is:
14/// - Used for stop payment requests from account holders to their financial institutions
15/// - Applicable for preventing payment of specific cheques before clearing
16/// - Designed for urgent processing to halt cheque payment authorization
17/// - Compatible with both domestic and international cheque clearing systems
18/// - Subject to validation rules for proper cheque identification
19/// - Integrated with fraud prevention and account security systems
20///
21/// ## Key Features
22/// - **Precise Cheque Identification**: Complete cheque details for accurate identification
23/// - **Immediate Stop Payment Control**: Urgent processing to prevent cheque payment
24/// - **Reference Tracking System**: Links to original cheque issue and account references
25/// - **Reason Code Support**: Optional information about why stop payment is requested
26/// - **Payee Information**: Optional payee details for additional verification
27/// - **Bank Integration**: Seamless integration with bank's cheque processing systems
28///
29/// ## Common Use Cases
30/// - Stolen or lost cheque stop payment requests
31/// - Fraudulent cheque prevention and security measures
32/// - Duplicate cheque issuance corrections
33/// - Post-dated cheque cancellation requests
34/// - Dispute resolution for unauthorized cheque issuance
35/// - Account closure preparation with outstanding cheques
36/// - Emergency stop payments for financial protection
37///
38/// ## Message Structure
39/// - **Field 20**: Transaction Reference (mandatory) - Unique stop payment request identifier
40/// - **Field 21**: Cheque Number (mandatory) - Specific cheque number to be stopped
41/// - **Field 30**: Date of Issue (mandatory) - Date when cheque was originally issued (YYMMDD)
42/// - **Field 32**: Currency/Amount (mandatory) - Original cheque amount and currency
43/// - **Field 52**: Drawer Bank (optional) - Bank on which the cheque was drawn
44/// - **Field 59**: Payee (optional) - Name and address of cheque payee (no account number)
45/// - **Field 75**: Queries (optional) - Additional information or reason for stop payment
46///
47/// ## Network Validation Rules
48/// - **Reference Format**: Transaction reference must not start/end with '/' or contain '//'
49/// - **Cheque Number Format**: Cheque number must not contain '/' or '//' characters
50/// - **Date Validation**: Date of issue must be in valid YYMMDD format
51/// - **Payee Information**: Payee field must not contain account number information
52/// - **Amount Validation**: Currency and amount must match original cheque details
53/// - **Bank Identification**: Proper validation of drawer bank information when present
54/// - **Query Information**: Proper formatting of reason codes and additional information
55///
56/// ## SRG2025 Status
57/// - **Structural Changes**: None - MT111 format remains stable for stop payment processing
58/// - **Validation Updates**: Enhanced validation for fraud prevention and security
59/// - **Processing Improvements**: Improved handling of urgent stop payment requests
60/// - **Compliance Notes**: Maintained compatibility with regulatory requirements for stop payments
61///
62/// ## Integration Considerations
63/// - **Banking Systems**: Compatible with cheque processing and fraud prevention systems
64/// - **API Integration**: RESTful API support for modern digital banking platforms
65/// - **Processing Requirements**: Supports urgent processing with immediate effect
66/// - **Compliance Integration**: Built-in validation for regulatory stop payment requirements
67///
68/// ## Relationship to Other Messages
69/// - **Triggers**: Often triggered by customer requests through digital banking or branch systems
70/// - **Responses**: Generates MT112 status response messages for stop payment confirmation
71/// - **Related**: Works with cheque processing systems and account management platforms
72/// - **Alternatives**: Electronic payment cancellation messages for digital transactions
73/// - **Status Updates**: May receive status updates about stop payment effectiveness
74#[serde_swift_fields]
75#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, SwiftMessage)]
76pub struct MT111 {
77    #[field("20")]
78    pub field_20: Field20,
79
80    #[field("21")]
81    pub field_21: Field21NoOption,
82
83    #[field("30")]
84    pub field_30: Field30,
85
86    #[field("32")]
87    pub field_32: Field32,
88
89    #[field("52")]
90    pub field_52: Option<Field52DrawerBank>,
91
92    #[field("59")]
93    pub field_59: Option<Field59NoOption>,
94
95    #[field("75")]
96    pub field_75: Option<Field75>,
97}