Enum Field59

Source
pub enum Field59 {
    A(Field59A),
    F(Field59F),
    NoOption(Field59NoOption),
}
Expand description

Field 59: Beneficiary Customer

§Purpose

Identifies the ultimate beneficiary of the payment instruction. The beneficiary customer is the final recipient of the funds being transferred. Different options provide various levels of detail and identification methods to accommodate different business scenarios.

§Options Overview

  • Option A: Account + BIC identification (structured, STP-preferred)
  • Option F: Party identifier + name/address (detailed identification)
  • No Option: Account + name/address (flexible format)

§STP Compliance Requirements

  • STP Preferred: Option A with valid BIC and account information
  • STP Compatible: No option with complete account and address details
  • Manual Processing: Incomplete or incorrectly formatted beneficiary information

§Network Validation Rules

  • Account Validation: Account numbers must conform to domestic standards when provided
  • BIC Validation: BIC codes must be valid and reachable when specified
  • Name Validation: Beneficiary name must not match sanctions screening lists
  • Address Completeness: Sufficient address detail for regulatory compliance

§Regional Considerations

  • SEPA: IBAN mandatory for EUR payments within SEPA zone
  • US: Fedwire and ACH routing information may be required
  • UK: Sort code and account number validation for GBP payments
  • Emerging Markets: Enhanced beneficiary documentation may be required

§Anti-Money Laundering (AML) Requirements

  • Customer Due Diligence: Beneficiary information must support KYC requirements
  • Sanctions Screening: Real-time screening against global watchlists
  • Regulatory Reporting: Some jurisdictions require detailed beneficiary reporting
  • Record Keeping: Beneficiary details retained for compliance periods

§Examples by Option

// Option A: BIC-based (STP preferred)
:59A:/GB82WEST12345698765432
MIDLGB22XXX

// Option F: Party identifier with details
:59F:/GB82WEST12345698765432
1/ACME CORPORATION LIMITED
2/123 BUSINESS STREET
3/LONDON EC1A 1BB
4/UNITED KINGDOM

// No option: Flexible format
:59:/GB82WEST12345698765432
JOHN SMITH
456 RESIDENTIAL AVENUE
MANCHESTER M1 1AA
UNITED KINGDOM
  • Field 57a: Account With Institution (beneficiary’s bank)
  • Field 70: Remittance Information (payment purpose/reference)
  • Field 77T: Structured Remittance Information (REMIT messages)
  • Field 72: Sender to Receiver Information (additional beneficiary details)

§Error Prevention Guidelines

  • Complete Information: Provide full name, address, and account details
  • Accurate BICs: Verify BIC codes before transmission
  • Consistent Formatting: Follow domestic account number standards
  • Sanctions Compliance: Screen against current sanctions lists

§See Also

  • Swift FIN User Handbook: Beneficiary Customer Specifications
  • FATF Guidelines: Customer Due Diligence Requirements
  • Regional Payment Guides: Country-specific beneficiary requirements
  • AML/CFT Compliance: Beneficiary Screening Best Practices

Variants§

§

A(Field59A)

Option A: BIC-based identification with optional account Preferred for STP processing with structured bank identification

§

F(Field59F)

Option F: Party identifier with detailed name and address Used when enhanced beneficiary identification is required

§

NoOption(Field59NoOption)

No option: Account and name/address in flexible format Most common option providing balance of structure and flexibility

Trait Implementations§

Source§

impl Clone for Field59

Source§

fn clone(&self) -> Field59

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 Field59

Source§

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

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

impl<'de> Deserialize<'de> for Field59

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 Field59

Source§

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

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 Field59

Source§

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

Parse field value from string representation
Source§

fn parse_with_variant( value: &str, variant: Option<&str>, field_tag: Option<&str>, ) -> Result<Self>

Parse field value with variant hint for enum fields Default implementation falls back to regular parse
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 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 Field59

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> 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>,