Struct MT202

Source
pub struct MT202 {
Show 19 fields pub field_20: Field20, pub field_21: Field21, pub field_32a: Field32A, pub field_58a: Field58A, pub field_13c: Option<Vec<Field13C>>, pub field_52a: Option<Field52A>, pub field_53a: Option<Field53A>, pub field_54a: Option<Field54A>, pub field_56a: Option<Field56A>, pub field_57a: Option<Field57A>, pub field_72: Option<Field72>, pub field_50a: Option<Field50>, pub field_59a: Option<Field59A>, pub field_70: Option<Field70>, pub field_33b: Option<Field33B>, pub field_52a_seq_b: Option<Field52A>, pub field_56a_seq_b: Option<Field56A>, pub field_57a_seq_b: Option<Field57A>, pub field_72_seq_b: Option<Field72>,
}
Expand description

§MT202: General Financial Institution Transfer

§Overview

MT202 enables financial institutions to transfer funds between themselves for their own account or for the account of their customers. It serves as the backbone for correspondent banking relationships, facilitating both institutional transfers and cover payments for customer transactions. The MT202 supports various transfer scenarios including nostro/vostro account movements, liquidity management, and settlement processing.

§Message Type Specification

Message Type: 202
Category: Financial Institution Transfers (Category 2)
Usage: General Financial Institution Transfer
Processing: Real-time gross settlement (RTGS) and net settlement
Network: SWIFT FIN (Financial network)

§Message Variants

MT202        - Standard financial institution transfer
MT202.COV    - Cover message for customer credit transfers

§Message Structure

The MT202 message consists of mandatory and optional fields organized in specific sequences:

§Mandatory Fields (Core Requirements)

  • Field 20: Transaction Reference Number (sender’s unique reference)
  • Field 21: Related Reference (link to previous message or transaction)
  • Field 32A: Value Date/Currency/Amount (settlement details)
  • Field 58A: Beneficiary Institution (final receiving institution)

§Optional Fields (Enhanced Processing)

Field 13C   - Time Indication (processing timing)
Field 52A   - Ordering Institution (sender's bank)
Field 53A   - Sender's Correspondent (intermediate bank)
Field 54A   - Receiver's Correspondent (intermediate bank)
Field 56A   - Intermediary Institution (routing bank)
Field 57A   - Account With Institution (beneficiary's correspondent)
Field 72    - Sender to Receiver Information (processing instructions)

§MT202.COV Specific Fields (Cover Message)

When used as a cover message for customer transfers:

Field 50A   - Ordering Customer (ultimate originator)
Field 59A   - Beneficiary Customer (ultimate recipient)
Field 70    - Remittance Information (payment details)
Field 33B   - Currency/Instructed Amount (original amount)

§Business Applications

§Primary Use Cases

  • Nostro/Vostro movements: Account movements between correspondent banks
  • Liquidity management: Funding and cash management between institutions
  • Settlement processing: Final settlement of payment obligations
  • Cover payments: Cover for underlying customer credit transfers
  • Reimbursement: Institution-to-institution reimbursements
  • Treasury operations: Bank treasury funding and investment settlements

§Industry Sectors

  • Correspondent Banking: Managing correspondent account relationships
  • Central Banking: Central bank operations and monetary policy implementation
  • Commercial Banking: Inter-bank funding and settlement
  • Investment Banking: Securities settlement and margin funding
  • Corporate Banking: Large corporate cash management
  • Trade Finance: Trade settlement and financing

§Routing and Settlement Patterns

§Direct Settlement

Ordering Institution → Beneficiary Institution
(Field 52A → Field 58A)

§Correspondent Banking Chain

Ordering Institution → Sender's Correspondent → Receiver's Correspondent → Beneficiary Institution
(Field 52A → Field 53A → Field 54A → Field 58A)

§Complex Multi-Institution Routing

Ordering Institution → Sender's Correspondent → Intermediary →
Account With Institution → Beneficiary Institution
(Field 52A → Field 53A → Field 56A → Field 57A → Field 58A)

§Field Relationships and Dependencies

§Time Indication (Field 13C)

  • Multiple occurrences: Field 13C can appear multiple times for different timing requirements
  • CLS timing: Cut-off times for Continuous Linked Settlement
  • TARGET timing: European Central Bank TARGET system timing
  • Local timing: Domestic settlement system timing requirements

§Institution Chain Validation

  • All institutions must have valid correspondent relationships
  • BIC codes must be active and reachable via SWIFT network
  • Account numbers must be valid for the specified institutions
  • Routing must comply with sanctions and regulatory requirements

§Cover Message Requirements (MT202.COV)

  • Field 50A (Ordering Customer) becomes mandatory for cover messages
  • Field 59A (Beneficiary Customer) identifies ultimate beneficiary
  • Field 70 (Remittance Information) provides payment purpose details
  • Field 33B used for currency conversion scenarios

§Validation Rules and Compliance

§Network Validated Rules (SWIFT Standards)

  • T20: Related reference format validation
  • T21: Transaction reference uniqueness
  • T32: Date and amount format validation
  • T58: Beneficiary institution BIC validation
  • C20: Reference number consistency
  • C21: Related reference requirement
  • C58: Institution identification completeness

§Business Rule Validations

  • Transaction and related references should be unique per sender per day
  • Value date should be valid business day for settlement currency
  • Institution chain should form valid correspondent relationships
  • Time indications should be reasonable for processing requirements
  • Cover message fields should be consistent with underlying transaction

§Regulatory Compliance

  • Sanctions Screening: All institutions subject to sanctions checks
  • Regulatory Reporting: Large value transfer reporting requirements
  • AML/KYC: Know Your Customer requirements for cover messages
  • Correspondent Banking: Due diligence and compliance monitoring
  • Capital Requirements: Basel III liquidity and capital impact

§Error Handling and Processing

§Field 72 Processing Instructions

/INT/Internal transfer between own accounts
/COV/Cover payment for customer transfer  
/REIMBURSEMENT/Reimbursement payment
/SETTLEMENT/Settlement of obligations

§Common Processing Scenarios

  • Same-day settlement: Immediate settlement requirement
  • Future-dated: Settlement on specific future date
  • Recurring: Standing instruction processing
  • Amendment: Modification of previous instruction
  • Cancellation: Reversal of previous transfer

Fields§

§field_20: Field20

Transaction Reference Number - Field 20

Unique sender’s reference identifying this specific financial institution transfer. Used throughout the transfer lifecycle for tracking, reconciliation, and audit. Must be unique within the sender’s system per business day.

Format: Up to 16 alphanumeric characters
Usage: Mandatory in all MT202 variants
Business Rule: Should follow sender’s reference numbering scheme

§field_21: Field21

Related Reference - Field 21

Reference to a related message or transaction that this MT202 is associated with. Critical for linking cover payments to underlying customer transfers and for maintaining audit trails across related transactions.

Format: Up to 16 alphanumeric characters
Usage: Mandatory in all MT202 messages
Relationship: Links to previous messages or transactions

§field_32a: Field32A

Value Date/Currency/Amount - Field 32A

Core settlement details specifying when, in what currency, and for what amount the institutional transfer should be processed. The value date determines when the settlement occurs between the institutions.

Components: Date (YYMMDD) + Currency (3 chars) + Amount (decimal)
Business Rule: Value date should be valid business day for currency
Settlement: Determines actual settlement timing between institutions

§field_58a: Field58A

Beneficiary Institution - Field 58A

Identifies the financial institution that will receive the funds being transferred. This is the final destination institution in the transfer chain and must be clearly identified for successful settlement.

Format: [/account]BIC code
Usage: Mandatory in all MT202 messages
Settlement: Final destination for fund settlement

§field_13c: Option<Vec<Field13C>>

Time Indication - Field 13C (Optional, Repetitive)

Provides specific timing instructions for transfer processing, including cut-off times for various settlement systems and coordination requirements. Can appear multiple times for different timing requirements.

Usage: Optional, used for time-sensitive transfers
Multiple: Can appear multiple times for different systems
Format: Time + UTC offsets for coordination
Business Value: Enables precise timing control across settlement systems

§field_52a: Option<Field52A>

Ordering Institution - Field 52A (Optional)

Identifies the financial institution that is ordering the transfer. This is typically the sender’s own institution or the institution acting on behalf of the ordering party.

Format: [/account]BIC code
Usage: Optional, identifies ordering institution
Routing Role: First institution in the transfer chain

§field_53a: Option<Field53A>

Sender’s Correspondent - Field 53A (Optional)

Identifies the correspondent bank of the sending institution. Used in correspondent banking arrangements where direct settlement relationships may not exist between sender and receiver.

Format: [/account]BIC code
Usage: Optional, facilitates correspondent banking
Routing Role: Intermediate institution in transfer chain

§field_54a: Option<Field54A>

Receiver’s Correspondent - Field 54A (Optional)

Identifies the correspondent bank of the receiving institution. Critical for cross-border transfers where direct correspondent relationships may not exist between institutions.

Format: [/account]BIC code
Usage: Optional, enables correspondent banking
Routing Role: Receiving-side correspondent institution

§field_56a: Option<Field56A>

Intermediary Institution - Field 56A (Optional)

Identifies an intermediary bank in the transfer routing chain. Acts as a pass-through institution between correspondents or provides additional routing capabilities.

Format: [/account]BIC code
Usage: Optional, facilitates complex routing
Routing Role: Intermediate routing institution

§field_57a: Option<Field57A>

Account With Institution - Field 57A (Optional)

Identifies the institution where the beneficiary institution maintains its account. Used for indirect settlement arrangements where the beneficiary institution settles through another bank.

Format: [/account]BIC code
Usage: Optional, enables indirect settlement
Settlement Role: Settlement institution for beneficiary

§field_72: Option<Field72>

Sender to Receiver Information - Field 72 (Optional)

Free-format field for processing instructions, operational information, and special handling requirements. Critical for conveying processing context and operational requirements.

Format: Up to 6 lines of 35 characters each
Usage: Optional, provides processing context
Content: Instructions, references, operational information

§field_50a: Option<Field50>

Ordering Customer - Field 50A (Optional, Cover Messages)

Identifies the ultimate ordering customer when MT202 is used as a cover message for customer credit transfers. This field links the institutional transfer to the underlying customer transaction.

Usage: Optional, mandatory for MT202.COV
Cover Role: Ultimate originator of underlying transaction
Format: [/account]BIC or name/address

§field_59a: Option<Field59A>

Beneficiary Customer - Field 59A (Optional, Cover Messages)

Identifies the ultimate beneficiary customer when MT202 is used as a cover message. This field identifies the final recipient of the underlying customer transfer being covered.

Usage: Optional, used in cover messages
Cover Role: Ultimate beneficiary of underlying transaction
Format: [/account]BIC or name/address

§field_70: Option<Field70>

Remittance Information - Field 70 (Optional, Cover Messages)

Provides details about the purpose and context of the underlying customer transfer when MT202 is used as a cover message. Contains payment references and remittance details.

Usage: Optional, used in cover messages
Format: Up to 4 lines of 35 characters each
Purpose: Payment description, invoice numbers, contract references

§field_33b: Option<Field33B>

Currency/Instructed Amount - Field 33B (Optional, Cover Messages)

Original amount and currency as instructed by the ordering customer when different from the settlement amount in Field 32A. Used in cross-currency cover scenarios.

Usage: Optional, for cross-currency covers
Format: Currency code + Amount
Relationship: May differ from Field 32A for FX transactions

§field_52a_seq_b: Option<Field52A>

Ordering Institution - Field 52A Sequence B (Optional, Cover Messages)

Identifies the ordering institution in the underlying customer transaction when MT202 is used as a cover message. This can be different from the institutional ordering institution in Sequence A.

Usage: Optional, MT202.COV Sequence B only
Cover Role: Ordering institution for underlying customer transaction
Difference: Distinct from Sequence A Field 52A (institutional context)

§field_56a_seq_b: Option<Field56A>

Intermediary Institution - Field 56A Sequence B (Optional, Cover Messages)

Identifies an intermediary institution in the underlying customer transaction routing chain when MT202 is used as a cover message. This provides the customer transaction routing context separate from institutional routing.

Usage: Optional, MT202.COV Sequence B only
Cover Role: Intermediary for underlying customer transaction
Routing: Customer transaction routing, not institutional routing

§field_57a_seq_b: Option<Field57A>

Account With Institution - Field 57A Sequence B (Optional, Cover Messages)

Identifies the account with institution in the underlying customer transaction when MT202 is used as a cover message. This specifies where the beneficiary customer’s account is held in the underlying transaction.

Usage: Optional, MT202.COV Sequence B only
Cover Role: Beneficiary’s bank for underlying customer transaction
Context: Customer transaction settlement, not institutional settlement

§field_72_seq_b: Option<Field72>

Sender to Receiver Information - Field 72 Sequence B (Optional, Cover Messages)

Provides additional processing instructions and information specific to the underlying customer transaction when MT202 is used as a cover message. This is separate from institutional processing instructions in Sequence A.

Usage: Optional, MT202.COV Sequence B only
Cover Role: Customer transaction processing instructions
Content: Customer-specific instructions, references, operational information

Implementations§

Source§

impl MT202

Source

pub fn new( field_20: Field20, field_21: Field21, field_32a: Field32A, field_58a: Field58A, ) -> Self

Create a new MT202 with required fields only

Source

pub fn new_complete( field_20: Field20, field_21: Field21, field_32a: Field32A, field_58a: Field58A, field_13c: Option<Vec<Field13C>>, field_52a: Option<Field52A>, field_53a: Option<Field53A>, field_54a: Option<Field54A>, field_56a: Option<Field56A>, field_57a: Option<Field57A>, field_72: Option<Field72>, field_50a: Option<Field50>, field_59a: Option<Field59A>, field_70: Option<Field70>, field_33b: Option<Field33B>, field_52a_seq_b: Option<Field52A>, field_56a_seq_b: Option<Field56A>, field_57a_seq_b: Option<Field57A>, field_72_seq_b: Option<Field72>, ) -> Self

Create a new MT202 with all fields for complete functionality

Source

pub fn transaction_reference(&self) -> &str

Get the transaction reference

Source

pub fn related_reference(&self) -> &str

Get the related reference

Source

pub fn currency_code(&self) -> &str

Get the currency code

Source

pub fn amount_decimal(&self) -> f64

Get the transaction amount as decimal

Source

pub fn beneficiary_institution_bic(&self) -> &str

Get the beneficiary institution BIC

Source

pub fn time_indications(&self) -> Option<&Vec<Field13C>>

Get time indications if present

Source

pub fn ordering_institution(&self) -> Option<&Field52A>

Get ordering institution if present

Source

pub fn senders_correspondent(&self) -> Option<&Field53A>

Get sender’s correspondent if present

Source

pub fn receivers_correspondent(&self) -> Option<&Field54A>

Get receiver’s correspondent if present

Source

pub fn intermediary_institution(&self) -> Option<&Field56A>

Get intermediary institution if present

Source

pub fn account_with_institution(&self) -> Option<&Field57A>

Get account with institution if present

Source

pub fn sender_to_receiver_info(&self) -> Option<&Field72>

Get sender to receiver information if present

Source

pub fn ordering_customer(&self) -> Option<&Field50>

Get ordering customer if present (cover message)

Source

pub fn beneficiary_customer(&self) -> Option<&Field59A>

Get beneficiary customer if present (cover message)

Source

pub fn remittance_information(&self) -> Option<&Field70>

Get remittance information if present (cover message)

Source

pub fn instructed_amount(&self) -> Option<&Field33B>

Get instructed amount if present (cover message)

Source

pub fn is_cover_message(&self) -> bool

Check if this is a cover message (MT202.COV)

Source

pub fn is_cross_currency(&self) -> bool

Check if this is a cross-currency transfer

Source

pub fn get_variant(&self) -> &'static str

Get the message variant type

Source

pub fn get_routing_chain(&self) -> Vec<(&str, String)>

Get all institution fields in routing order

Source

pub fn validate_structure(&self) -> bool

Check if all required fields are present and valid

Source

pub fn validate_cover_message(&self) -> bool

Validate cover message requirements

Source

pub fn get_time_indications_with_descriptions(&self) -> Vec<String>

Get all time indications with descriptions

Source

pub fn has_cls_timing(&self) -> bool

Check if message has CLS timing requirements

Source

pub fn has_target_timing(&self) -> bool

Check if message has TARGET timing requirements

Source

pub fn get_processing_instructions(&self) -> Vec<String>

Get processing instructions from field 72

Source

pub fn ordering_institution_seq_b(&self) -> Option<&Field52A>

Get ordering institution from sequence B if present (cover message)

Source

pub fn intermediary_institution_seq_b(&self) -> Option<&Field56A>

Get intermediary institution from sequence B if present (cover message)

Source

pub fn account_with_institution_seq_b(&self) -> Option<&Field57A>

Get account with institution from sequence B if present (cover message)

Source

pub fn sender_to_receiver_info_seq_b(&self) -> Option<&Field72>

Get sender to receiver information from sequence B if present (cover message)

Source

pub fn get_customer_routing_chain(&self) -> Vec<(&str, String)>

Get customer transaction routing chain from sequence B (cover message)

Source

pub fn get_customer_processing_instructions(&self) -> Vec<String>

Get processing instructions from sequence B field 72 (cover message)

Trait Implementations§

Source§

impl Clone for MT202

Source§

fn clone(&self) -> MT202

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MT202

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for MT202

Source§

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 PartialEq for MT202

Source§

fn eq(&self, other: &MT202) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for MT202

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl SwiftMessageBody for MT202

Source§

fn message_type() -> &'static str

Get the message type identifier (e.g., “103”, “202”)
Source§

fn from_fields(fields: HashMap<String, Vec<String>>) -> Result<Self>

Create from field map
Source§

fn to_fields(&self) -> HashMap<String, Vec<String>>

Convert to field map
Source§

fn required_fields() -> Vec<&'static str>

Get required field tags for this message type
Source§

fn optional_fields() -> Vec<&'static str>

Get optional field tags for this message type
Source§

impl StructuralPartialEq for MT202

Auto Trait Implementations§

§

impl Freeze for MT202

§

impl RefUnwindSafe for MT202

§

impl Send for MT202

§

impl Sync for MT202

§

impl Unpin for MT202

§

impl UnwindSafe for MT202

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,