pub struct MT204 {
pub field_20: Field20,
pub field_19: Field19,
pub field_30: Field30,
pub field_57_seq_a: Option<Field57DebtInstitution>,
pub field_58: Option<Field58>,
pub field_72_seq_a: Option<Field72>,
pub transactions: Vec<MT204Transaction>,
}
Expand description
MT204: Financial Markets Direct Debit Message
§Purpose
Used for direct debit transactions in financial markets, particularly for settlement of trades and market-related obligations. This message enables efficient collection of funds from multiple debtors in financial market transactions, supporting both single and bulk debit operations.
§Scope
This message is:
- Used between financial institutions for market-related direct debits
- Designed for settlement of securities trades and derivatives transactions
- Applicable for margin calls and collateral management
- Used for collecting clearing house obligations
- Compatible with central counterparty (CCP) settlement systems
- Limited to a maximum of 10 transactions per message
§Key Features
- Two-Sequence Structure: Common reimbursement details and individual transaction details
- Bulk Processing: Processes up to 10 direct debit transactions in one message
- Sum Validation: Built-in validation that sum of transactions equals total amount
- Currency Consistency: All transactions must use the same currency
- Efficient Settlement: Optimized for financial markets settlement processes
- Reimbursement Focus: Streamlined for financial institution reimbursements
§Common Use Cases
- Securities trade settlement collections
- Derivatives margin call collections
- Clearing house member collections
- Central securities depository (CSD) fee collections
- Exchange membership fee collections
- Market maker obligation settlements
- Cross-border financial market settlements
§Message Structure
§Sequence A (Common Elements - Reimbursement Details - Mandatory, Single)
- Field 20: Transaction Reference Number (mandatory) - Unique message identifier
- Field 19: Sum of Amounts (mandatory) - Total amount to be collected
- Field 30: Value Date (mandatory) - Settlement date for all transactions
- Field 57: Account With Institution (optional) - Institution holding the account
- Field 58: Beneficiary Institution (optional) - Final beneficiary institution
- Field 72: Sender to Receiver Information (optional) - Additional instructions
§Sequence B (Transaction Details - Mandatory, Repetitive, Max 10)
- Field 20: Transaction Reference Number (mandatory) - Individual transaction reference
- Field 21: Related Reference (optional) - Reference to related transaction/trade
- Field 32B: Transaction Amount (mandatory) - Individual debit amount
- Field 53: Debit Institution (mandatory) - Institution to be debited
- Field 72: Sender to Receiver Information (optional) - Transaction-specific instructions
§Network Validation Rules
- C1: Field 19 amount must equal sum of all Field 32B amounts
- C2: Currency in all Field 32B occurrences must be identical
- C3: Maximum 10 occurrences of Sequence B allowed (T10 error if exceeded)
§Integration Considerations
- Trading Systems: Direct integration with trading and settlement platforms
- CCP Systems: Compatible with central counterparty clearing systems
- Risk Management: Integration with margin and collateral management systems
- Regulatory Reporting: Supports transaction reporting requirements
§Relationship to Other Messages
- Triggers: Often triggered by trade confirmations or margin calculations
- Related: Works with MT202 for cover payments and MT210 for pre-notifications
- Confirmations: May generate MT900 (debit) confirmations
- Status: May receive MT296 for cancellation responses
- Reporting: Reflected in MT940/MT950 account statements
Fields§
§field_20: Field20
§field_19: Field19
§field_30: Field30
§field_57_seq_a: Option<Field57DebtInstitution>
§field_58: Option<Field58>
§field_72_seq_a: Option<Field72>
§transactions: Vec<MT204Transaction>
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for MT204
impl<'de> Deserialize<'de> for MT204
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl SwiftMessageBody for MT204
impl SwiftMessageBody for MT204
Source§fn message_type() -> &'static str
fn message_type() -> &'static str
Get the message type identifier (e.g., “103”, “202”)
Source§fn from_fields(
fields: HashMap<String, Vec<(String, usize)>>,
) -> SwiftResult<Self>
fn from_fields( fields: HashMap<String, Vec<(String, usize)>>, ) -> SwiftResult<Self>
Create from field map with sequential consumption tracking
Source§fn from_fields_with_config(
fields: HashMap<String, Vec<(String, usize)>>,
config: &ParserConfig,
) -> Result<ParseResult<Self>, ParseError>
fn from_fields_with_config( fields: HashMap<String, Vec<(String, usize)>>, config: &ParserConfig, ) -> Result<ParseResult<Self>, ParseError>
Create from field map with configuration for error collection
Source§fn required_fields() -> Vec<&'static str>
fn required_fields() -> Vec<&'static str>
Get required field tags for this message type
Source§fn optional_fields() -> Vec<&'static str>
fn optional_fields() -> Vec<&'static str>
Get optional field tags for this message type
impl StructuralPartialEq for MT204
Auto Trait Implementations§
impl Freeze for MT204
impl RefUnwindSafe for MT204
impl Send for MT204
impl Sync for MT204
impl Unpin for MT204
impl UnwindSafe for MT204
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more