pub struct UserHeader {Show 13 fields
pub service_identifier: Option<String>,
pub banking_priority: Option<String>,
pub message_user_reference: Option<String>,
pub validation_flag: Option<String>,
pub balance_checkpoint: Option<BalanceCheckpoint>,
pub message_input_reference: Option<MessageInputReference>,
pub related_reference: Option<String>,
pub service_type_identifier: Option<String>,
pub unique_end_to_end_reference: Option<String>,
pub addressee_information: Option<String>,
pub payment_release_information: Option<PaymentReleaseInfo>,
pub sanctions_screening_info: Option<SanctionsScreeningInfo>,
pub payment_controls_info: Option<PaymentControlsInfo>,
}
Expand description
User Header (Block 3): Extended Service Options and Controls
§Purpose
The User Header provides optional extended functionality for SWIFT messages, enabling advanced services, enhanced straight-through processing (STP), compliance controls, and end-to-end transaction tracking. This header has become increasingly important for regulatory compliance, particularly with SWIFT gpi tracking and enhanced payment transparency requirements.
§Format Specification
- Block Format:
{3:{tag:value}{tag:value}...}
- Tag Format: Numeric tags with structured values
- Nesting: Tags enclosed in curly braces
- Optional Block: Entire block 3 may be omitted
§Business Context Applications
- SWIFT gpi Tracking: End-to-end payment tracking via UETR
- STP Enhancement: Validation flags for automated processing
- Regulatory Compliance: Sanctions screening and payment controls
- Service Enhancement: Additional service options and features
§Critical Tags for Modern Payments
§Tag 121: Unique End-to-End Transaction Reference (UETR)
- Format: 36 characters UUID (8-4-4-4-12 format)
- Purpose: Global payment tracking across entire payment chain
- Mandatory: Required for SWIFT gpi participant banks
- Persistence: Must remain unchanged through payment lifecycle
§Tag 119: Validation Flag
- STP: Straight-Through Processing capability
- REMIT: Remittance information present
- COV: Cover payment indicator
- RFDD: Request for Direct Debit
§Service Identifiers
§Tag 103: Service Identifier
- Purpose: Identifies specific SWIFT services
- Values: Service-specific codes (e.g., “FIN”)
- Usage: Mainly for FIN Copy service
- Processing: Affects message routing and copying
§Tag 111: Service Type Identifier
- Format: 3 numeric digits
- Purpose: Sub-categorizes service types
- Common: “001” for standard processing
- Impact: May affect fee calculation
§Message Control and Reference
§Tag 108: Message User Reference (MUR)
- Format: Up to 16 characters
- Purpose: Sender’s unique reference
- Usage: Transaction tracking and reconciliation
- Uniqueness: Should be unique per sender
§Tag 113: Banking Priority
- Format: 4 characters
- Values: NORM, HIGH, URGP
- Purpose: Internal bank priority handling
- Note: Different from network priority
§Compliance and Screening Tags
§Tag 433: Sanctions Screening Information
- AOK: All OK - Passed screening
- FPO: False Positive Override
- NOK: Not OK - Requires review
- Additional: Optional 20 character details
§Tag 434: Payment Controls Information
- Format: 3-letter code + optional details
- Purpose: Payment control status
- Usage: Compliance and regulatory controls
- Processing: May trigger manual review
§FIN Copy Service Tags
§Tag 115: Addressee Information
- Format: Up to 32 characters
- Purpose: Third-party copy recipient
- Service: FIN Copy service only
- Delivery: Additional message copy sent
§Tag 165: Payment Release Information
- Format: 3-char code + optional 34 chars
- Service: FINInform service
- Purpose: Payment release notifications
- Usage: Corporate payment factories
§Message Recovery Tags (MIRS)
§Tag 106: Message Input Reference (MIR)
- Format: 28 characters structured
- Components: Date + LT + Session + Sequence
- Purpose: Original message reference
- Usage: Message recovery and reconciliation
§Tag 423: Balance Checkpoint
- Format: YYMMDDHHMMSS[ss]
- Purpose: Balance snapshot timing
- Service: MIRS recovery service
- Precision: Optional hundredths of second
§Tag 424: Related Reference
- Format: Up to 16 characters
- Purpose: Links related messages
- Usage: Message chains and corrections
- Service: MIRS functionality
§Network Validation Requirements
- Tag Compatibility: Some tags require specific services
- Value Validation: Each tag has specific format rules
- Service Subscription: Tags available per service agreement
- Mandatory Combinations: Some tags require others
§Regional and Regulatory Impact
- SWIFT gpi: Tag 121 mandatory for participants
- EU Regulations: Enhanced screening requirements
- US Compliance: Specific control requirements
- Local Rules: Additional regional tag usage
§STP Processing Impact
§Validation Flag Effects
- STP Flag: Enables full automation
- Format Restrictions: Stricter field validation
- Character Sets: Limited to STP-safe characters
- Processing Speed: Faster automated handling
§Error Prevention Guidelines
- UETR Format: Ensure valid UUID format
- Service Compatibility: Verify tag availability
- Value Formats: Follow exact specifications
- Mandatory Rules: Include required combinations
§Integration with Other Blocks
- Block 1: Service must match subscription
- Block 2: Message type affects available tags
- Block 4: Validation flags affect field rules
- Block 5: Some tags reflected in trailer
§Compliance Framework
- Regulatory Mandates: Screening and control requirements
- Audit Trail: Enhanced tracking via UETR
- Service Agreements: Tag usage per agreement
- Privacy Rules: Data handling requirements
§Best Practices
- UETR Generation: Use proper UUID libraries
- Reference Uniqueness: Ensure MUR uniqueness
- Screening Accuracy: Accurate screening codes
- Service Alignment: Use appropriate service tags
§Future Evolution
- ISO 20022 Alignment: Mapping considerations
- Enhanced Tracking: Additional tracking features
- Compliance Evolution: New regulatory tags
- Service Innovation: New service identifiers
§See Also
- SWIFT FIN User Handbook: Block 3 Tag Specifications
- SWIFT gpi Standards: UETR Implementation Guide
- STP Guidelines: Validation Flag Requirements
- Compliance Framework: Screening Tag Usage
Fields§
§service_identifier: Option<String>
Tag 103 - Service Identifier (3!a) - Mandatory for FINcopy Service
banking_priority: Option<String>
Tag 113 - Banking Priority (4!x) - Optional
message_user_reference: Option<String>
Tag 108 - Message User Reference (16!x) - Optional
validation_flag: Option<String>
Tag 119 - Validation Flag (8c) - Optional (STP, REMIT, RFDD, COV)
balance_checkpoint: Option<BalanceCheckpoint>
Tag 423 - Balance checkpoint date and time (YYMMDDHHMMSS[ss]) - Optional (MIRS only)
message_input_reference: Option<MessageInputReference>
Tag 106 - Message Input Reference MIR (28c) - Optional (MIRS only)
Tag 424 - Related reference (16x) - Optional (MIRS only)
service_type_identifier: Option<String>
Tag 111 - Service type identifier (3!n) - Optional
unique_end_to_end_reference: Option<String>
Tag 121 - Unique end-to-end transaction reference (UUID format) - Mandatory for GPI
addressee_information: Option<String>
Tag 115 - Addressee Information (32x) - Optional (FINCopy only)
payment_release_information: Option<PaymentReleaseInfo>
Tag 165 - Payment release information receiver (3!c/34x) - Optional (FINInform only)
sanctions_screening_info: Option<SanctionsScreeningInfo>
Tag 433 - Sanctions screening information (3!a/[20x]) - Optional
payment_controls_info: Option<PaymentControlsInfo>
Tag 434 - Payment controls information (3!a/[20x]) - Optional
Implementations§
Trait Implementations§
Source§impl Clone for UserHeader
impl Clone for UserHeader
Source§fn clone(&self) -> UserHeader
fn clone(&self) -> UserHeader
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for UserHeader
impl Debug for UserHeader
Source§impl Default for UserHeader
impl Default for UserHeader
Source§fn default() -> UserHeader
fn default() -> UserHeader
Source§impl<'de> Deserialize<'de> for UserHeader
impl<'de> Deserialize<'de> for UserHeader
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>,
Source§impl Display for UserHeader
impl Display for UserHeader
Source§impl PartialEq for UserHeader
impl PartialEq for UserHeader
Source§impl Serialize for UserHeader
impl Serialize for UserHeader
impl StructuralPartialEq for UserHeader
Auto Trait Implementations§
impl Freeze for UserHeader
impl RefUnwindSafe for UserHeader
impl Send for UserHeader
impl Sync for UserHeader
impl Unpin for UserHeader
impl UnwindSafe for UserHeader
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
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>
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>
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