Field20

Struct Field20 

Source
pub struct Field20 {
    pub reference: String,
}
Expand description

Field 20: Sender’s Reference

§Purpose

Specifies the reference assigned by the Sender to unambiguously identify the message. This reference must be unique within the sender’s system and is used to link related messages and confirmations throughout the payment chain.

§Format

  • Swift Format: 16x
  • Description: Up to 16 alphanumeric characters
  • Pattern: May include letters, digits, and limited special characters
  • Restrictions: Must not start or end with / and must not contain //

§Presence

  • Status: Mandatory in all MT messages containing this field
  • Swift Error Codes: T26 (invalid format), T13 (field too long)
  • Referenced in Rules: Network validation rules across multiple message types

§Network Validation Rules

  • Format Validation: Must conform to 16x pattern (alphanumeric, max 16 chars)
  • Content Validation: Cannot start/end with / or contain consecutive slashes //
  • Uniqueness: Should be unique within sender’s daily operations for audit purposes

§Usage Rules

  • Confirmations: Must be quoted unchanged in related MT900/MT910/MT950 messages
  • Cover Payments: When using cover method, copy to field 21 of associated MT202 COV
  • Audit Trail: Used by institutions to track payment lifecycle and exceptions
  • Reference Format: Common patterns include transaction IDs, invoice numbers, or internal references

§Examples

:20:PAYMENT123456
:20:INV2024001234
:20:TXN20240719001
:20:URGPAY240719
  • Field 21: Transaction Reference Number (often contains Field 20 value in cover payments)
  • Field 61: Statement Line Reference (in account statements)
  • Block 3 {108}: Message User Reference (system-level tracking)

§STP Compliance

Field 20 has no specific STP restrictions but must meet standard format requirements. STP processing relies on this field for automated matching and exception handling.

§See Also

  • Swift FIN User Handbook: Message Structure and Field Specifications
  • MT103 Specification: Customer Credit Transfer requirements
  • Cover Payment Guidelines: Field 20/21 relationship rules

Fields§

§reference: String

The sender’s reference string (max 16 characters)

Format: 16x - Up to 16 alphanumeric characters Validation: No leading/trailing slashes, no consecutive slashes

Trait Implementations§

Source§

impl Clone for Field20

Source§

fn clone(&self) -> Field20

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 Field20

Source§

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

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

impl<'de> Deserialize<'de> for Field20

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 Field20

Source§

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

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 Field20

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 Field20

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