pub struct Field23B {
pub instruction_code: String,
}
Expand description
Field 23B: Bank Operation Code
§Purpose
Identifies the type of operation and associated service level for the payment instruction. This field determines processing rules, STP compliance requirements, and available service features.
§Format
- Swift Format:
4!c
- Description: Exactly 4 alphabetic characters (uppercase)
- Character Set: A-Z only, no numbers or special characters
§Presence
- Status: Mandatory in MT103, MT102, and related payment messages
- Swift Error Codes: T12 (invalid code), T15 (field not allowed)
- Referenced in Rules: C3, C4, C5, C6, C8, C10, C11, C12 (MT103)
§Valid Codes
- CRED: Normal credit transfer (no specific SWIFT Service Level)
- CRTS: Test message (should not be processed on FIN network)
- SPAY: SWIFTPay Service Level (premium service)
- SPRI: Priority Service Level (highest priority)
- SSTD: Standard Service Level (standard processing)
§Network Validation Rules
- C3: If SPRI → field 23E restricted to SDVA, TELB, PHOB, INTC only
- C3: If SSTD or SPAY → field 23E must not be present
- C4: Service levels affect correspondent institution field requirements
- C6: SPRI requires specific BIC validation for certain regions
- C10: If SPRI → field 56a (Intermediary) must not be present
- C12: Service levels mandate beneficiary account requirements
§Usage Rules
- Service Level Selection: Choose based on urgency and STP requirements
- Cost Implications: SPRI and SPAY typically incur higher fees
- Processing Time: SPRI processes faster than SSTD, CRED has standard timing
- STP Compliance: SPRI, SPAY, SSTD enable straight-through processing
§STP Compliance
- STP-Enabled Codes: SPRI, SPAY, SSTD
- Non-STP Code: CRED (legacy processing)
- Additional Restrictions: STP codes have stricter field format requirements
- Correspondent Constraints: Service levels limit correspondent field options
§Regional Considerations
- EU/EEA: Service level affects SEPA compliance and processing routes
- Correspondents: Some institutions only support specific service levels
- Settlement: Service level determines settlement timing and priority
§Examples
:23B:CRED // Normal credit transfer
:23B:SPRI // Priority service level
:23B:SSTD // Standard service level
:23B:SPAY // SWIFTPay service
§Related Fields
- Field 23E: Instruction Code (availability depends on 23B value)
- Field 13C: Time Indication (may be required for certain service levels)
- Field 72: Sender to Receiver Information (service level details)
§Error Handling
- Invalid Code: Results in T12 error and message rejection
- Rule Violations: Service level constraints trigger specific C-rule errors
- STP Failures: Non-compliant combinations cause processing delays
§See Also
- Swift FIN User Handbook: Service Level Definitions
- MT103 Usage Rules: Bank Operation Code Guidelines
- STP Implementation Guide: Service Level Requirements
Fields§
§instruction_code: String
Bank operation code indicating service level and processing type
Format: 4!c - Exactly 4 alphabetic characters Valid codes: CRED, CRTS, SPAY, SPRI, SSTD
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Field23B
impl<'de> Deserialize<'de> for Field23B
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 SwiftField for Field23B
impl SwiftField for Field23B
Source§fn to_swift_string(&self) -> String
fn to_swift_string(&self) -> String
Convert field back to SWIFT string format
Source§fn format_spec() -> &'static str
fn format_spec() -> &'static str
Get field format specification
impl StructuralPartialEq for Field23B
Auto Trait Implementations§
impl Freeze for Field23B
impl RefUnwindSafe for Field23B
impl Send for Field23B
impl Sync for Field23B
impl Unpin for Field23B
impl UnwindSafe for Field23B
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