Field56A

Struct Field56A 

Source
pub struct Field56A {
    pub party_identifier: Option<String>,
    pub bic: String,
}
Expand description

Field 56: Intermediary

§Purpose

Specifies the financial institution through which the transaction must pass to reach the account with institution (Field 57A). This field defines the routing path for payment instructions, enabling proper routing through intermediary banks when direct relationships do not exist. Critical for straight-through processing and automated payment routing in complex banking networks.

§Format Options Overview

  • Option A: BIC with optional party identifier - structured intermediary identification
  • Option C: Party identifier only - simplified intermediary reference
  • Option D: Party identifier with name/address - detailed intermediary information

§Business Context Applications

  • Payment Routing: Defines intermediary path to reach beneficiary’s bank
  • Correspondent Networks: Utilizes existing correspondent banking relationships
  • Cross-Border Payments: Essential for international payment routing
  • Domestic Clearing: Integration with national payment systems

§Special Payment Method Codes

§Critical Routing Instructions

  • //FW: Fedwire routing - Required by US banks for Fedwire processing
  • //RT: Real-Time Gross Settlement - Binding instruction for RTGS systems
  • //AU: Australian payment system routing
  • //IN: Indian payment system routing

§Code Usage Rules

  • Single Usage: Codes //FW, //AU, //IN, //RT should appear only once in Field 56A or 57A
  • Binding Nature: //RT code is binding and cannot be followed by other information
  • System Integration: Enables automated processing in national clearing systems
  • Precedence: Special codes take precedence over standard routing information

§Network Validation Requirements

  • BIC Registration: All BIC codes must be registered financial institutions
  • Routing Capability: Intermediaries must provide routing services to destination
  • System Support: Must support specified payment method codes
  • Currency Capability: Must handle transaction currency and settlement

§Routing Logic and Rules

§Direct vs. Intermediary Routing

  • Direct Access: When Sender has direct relationship with Account With Institution
  • Intermediary Required: When direct relationship does not exist or is inefficient
  • Multi-Hop Routing: Complex routing through multiple intermediaries
  • Optimization: Selection of most efficient routing path

§Payment System Integration

  • RTGS Systems: Real-time gross settlement system routing
  • ACH Networks: Automated clearing house routing
  • Wire Networks: Wire transfer system routing
  • Clearing Systems: National and regional clearing system integration

§Regional Payment System Support

§North American Systems

  • Fedwire (//FW): US Federal Reserve wire transfer system
  • ACH: Automated Clearing House networks
  • Canadian Systems: Integration with Canadian payment networks

§Asia-Pacific Systems

  • Australian (//AU): Australian payment system integration
  • Indian (//IN): Indian payment system routing
  • Regional Networks: ASEAN and other regional payment systems

§European Systems

  • TARGET2: European Central Bank RTGS system
  • SEPA: Single Euro Payments Area routing
  • National RTGS: Country-specific RTGS systems

§STP Processing Benefits

  • Automated Routing: System-driven routing based on intermediary identification
  • Exception Reduction: Proper routing reduces payment exceptions and delays
  • Straight-Through Processing: Enhanced STP through structured routing data
  • System Integration: Seamless integration with payment system networks

§Error Prevention Guidelines

  • Routing Validation: Verify intermediary can route to destination
  • System Compatibility: Confirm intermediary supports required payment systems
  • Code Verification: Validate special payment method codes are appropriate
  • Relationship Checking: Verify Sender has relationship with intermediary
  • Field 57A: Account With Institution (routing destination)
  • Field 53A: Sender’s Correspondent (routing coordination)
  • Field 32A: Value Date, Currency, Amount (routing context)
  • Field 72: Sender to Receiver Information (routing instructions)

§Compliance Framework

  • Routing Documentation: Complete routing path documentation
  • Intermediary Due Diligence: Enhanced due diligence on routing intermediaries
  • Regulatory Compliance: Meeting routing and settlement regulations
  • Audit Trail: Comprehensive routing audit trail maintenance

§Performance Optimization

  • Routing Efficiency: Selection of optimal routing paths
  • Cost Management: Consideration of routing costs and fees
  • Speed Optimization: Fastest routing path selection
  • Reliability: Most reliable routing path selection

§See Also

  • Swift FIN User Handbook: Intermediary Institution Specifications

  • Payment System Guides: National Payment System Routing

  • Correspondent Banking: Intermediary Routing Arrangements

  • Cross-Border Payments: International Routing Standards

    Field 56A: Intermediary (BIC with Party Identifier)

Structured intermediary identification using BIC code with optional party identifier. Preferred option for automated payment routing and system integration.

Fields§

§party_identifier: Option<String>

Optional party identifier for routing and payment method codes

Format: [/1!a][/34x] - Single character code + up to 34 character identifier May contain special codes: //FW (Fedwire), //RT (RTGS), //AU (Australian), //IN (Indian)

§bic: String

Bank Identifier Code of the intermediary institution

Format: 4!a2!a2!c[3!c] - 8 or 11 character BIC code Must be registered financial institution with routing capability

Trait Implementations§

Source§

impl Clone for Field56A

Source§

fn clone(&self) -> Field56A

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 Field56A

Source§

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

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

impl<'de> Deserialize<'de> for Field56A

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 Field56A

Source§

fn eq(&self, other: &Field56A) -> 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 Field56A

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 SwiftField for Field56A

Source§

fn parse(value: &str) -> Result<Self>

Parse field value from string representation
Source§

fn to_swift_string(&self) -> String

Convert field back to SWIFT string format
Source§

fn format_spec() -> &'static str

Get field format specification
Source§

fn parse_with_variant( value: &str, _variant: Option<&str>, _field_tag: Option<&str>, ) -> Result<Self>
where Self: Sized,

Parse field value with variant hint for enum fields Default implementation falls back to regular parse
Source§

fn valid_variants() -> Option<Vec<&'static str>>

Get valid variant letters for enum fields Returns None for non-enum fields, Some(vec) for enum fields
Source§

impl StructuralPartialEq for Field56A

Auto Trait Implementations§

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> Fake for T

Source§

fn fake<U>(&self) -> U
where Self: FakeBase<U>,

Source§

fn fake_with_rng<U, R>(&self, rng: &mut R) -> U
where R: Rng + ?Sized, Self: FakeBase<U>,

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

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